CentOS 7 - iverilog & gtkwave 使用 (putty 遠端使用 gtkwave 問題解決)
本篇會介紹簡單的 iverilog 和 gtkwave 的使用
如果還沒安裝的可以先參考這篇安裝:
CentOS 7 - RISC-V CPU Core 環境安裝 (tinyriscv) + iverilog & gtkwave 安裝
簡單來說
iverilog 就是可以編譯你的 verilog code 的程式
gtkwave 則是可以幫你顯示出波形圖的程式
它的特色在於輕量,也很適合新手先拿來玩玩
---iverilog 使用---
我們可以先簡單寫個測試的程式
一個 verilog 的檔案 + 一個 testbench 檔案
建立資料夾(名字隨便取)
mkdir verilog_test && cd verilog_test
建立 verilog 檔案
vim test.v
// sum = a + b
module test(
input [3:0] a,
input [3:0] b,
output [3:0] sum,
output carry_out
);
assign {carry_out, sum} = a + b;
endmodule
建立 testbench 檔案
vim test_tb.v
module test_tb();
//input
reg [3:0] a;
reg [3:0] b;
//output
wire [3:0] sum;
wire carry_out;
test test1(a, b, sum, carry_out);
initial begin
#50 a = 4'b0001; b = 4'b0001;
#50 a = 4'b0001; b = 4'b0010;
#50 a = 4'b0001; b = 4'b0011;
#50 a = 4'b0001; b = 4'b0100;
#50 a = 4'b0010; b = 4'b0001;
#50 a = 4'b0011; b = 4'b0001;
#50 a = 4'b0100; b = 4'b0001;
end
initial #1000 $finish;
initial begin
$monitor("a = %b, b = %b, sum = %b, carry_out = %b", a, b, sum, carry_out);
$dumpfile("wave.vcd");
$dumpvars(0, test_tb);
end
endmodule
執行 iverilog 來編譯
iverilog -o wave test.v test_tb.v
使用 vvp 來產生 vcd 波形圖
vvp wave
這樣就會產生 wave.vcd
同時也可以看到文字介面的波形圖了!
好了,接著要進入到重頭戲 gtkwave 了!
--- gtkwave 使用---
利用 gtkwave 顯示波形圖
gtkwave wave.vcd &
結果出錯了
Could not initialize GTK! Is DISPLAY env var/xhost set?
不過這裡要說明一下
其實如果你是直接在你面前的電腦上執行的話
是不會出錯的
所以下面的東西都可以直接跳過了!
但是我是 透過 ssh 遠端進入 server 來執行
所以會有問題!
因此就必須要先解決如何 用 ssh 的方式開啟遠端主機上的畫面 了!
恭喜我自己經過多次努力,最後還是把問題解決了
但才發現原來是自己網路觀念太弱 XD
其實沒有很難
只是沒有去聯想一些網路的基本觀念的話
根本就不會想到要這樣做
---懶得看的可以先跳過,直接到使用的部分---
簡單不負責解釋一下
你現在是連線到一台遠端主機 (不在你面前) 上
而你想在本地主機 (在你面前) 上顯示出遠端主機上軟體的 GUI 畫面
你會先連到遠端主機上去下指令
也就是下指令告訴遠端主機說
"請幫我開啟 XXX 程式!"
例如現在要開啟的就是 gtkwave 的 GUI
然後遠端主機會負責送出顯示圖形的指令
就會送給被指定的主機
所以遠端主機此時會
"好的!我會送出開啟 XXX 程式的指令給指定主機!"
所以當你沒指定的時候,就會在遠端主機上開啟畫面
但這不是我們要的
因此我們必須指定要給誰?
當然是給我們眼前的這台本地主機啊!
(因此你必須知道現在你自己的 IP 是多少,沒有收件人是空白的道理吧)
但是你以為知道自己的 IP 就可以讓遠端主機寄送東西進來了嗎!
當然是不行!不然網路世界應該會大亂 (?)
所以我們自己在本地主機上也必須要特別開啟"收信"功能
才能夠讓遠端主機順利發送開啟 GUI 的指令進來本地主機!
---GTKwave + ssh使用---
假設你有
(遠端主機: 不在你面前的遠端電腦)
(本地主機: 在你面前,你正在使用的電腦)
遠端主機: CentOS, IP: xx.xx.xx.xx(就是你 ssh 進去的那個 ip)
本地主機: Windows, IP: yy.yy.yy.yy(可以開 command line 打 ipconfig 看你的 ipv4 address 是多少)
CentOS 上要安裝 xauth
yum install -y xauth
Windows 上要安裝 putty 和 Xming Server
putty 怎麼裝應該很簡單
Xming Server 的安裝讓我偷懶一下
請參考網站 Windows上的 X Server連線工具 - Xming X Server(xming)
putty 進去後直接打
gtkwave wave.vcd &
畫面就出來了!
咦怎麼什麼都沒有?
不要怕!
先點視窗左邊的 SST 下方的 + 號
就會跑出下面的東西!然後點他
就會跑出下面的線路們
然後按 insert 把他們都加到右邊去
訊號就都出來了!
然後隨便拉到你剛有設定訊號值的範圍
就可以看到結果囉!
淚流滿面啊!
還有順便提提上次我在裝 gtkwave 把 server 搞壞的經驗
請不要隨便刪掉 /usr/lib 或 /lib 裡面的檔案啊!
還有新手不要隨便在 CentOS 7 上 裝 xz-utilities (我到現在還是不敢裝...)
就是因為在解他產生的 bug 時
看別人教學,害我去刪那些 library 的
然後 server 就整個炸了害我要重灌 (?
或是如果有人知道該怎麼裝不會出問題也可以告訴我> <
ref:
留言
張貼留言