Hiển thị các bài đăng có nhãn verilog. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn verilog. Hiển thị tất cả bài đăng

16 tháng 9, 2015

Learn Verilog

Icarus verilog and GTKWave

Installation Guide
Wiki Icarus verilog
Mình dùng Ubuntu: sudo apt-get install iverilog  gtkwave ( thường thì không phải là bản mới nhất )

Tạo file d_ff.v
module d_ff( d, clk, q, q_bar);
  input d, clk;
  output q, q_bar;
  reg q;
  reg q_bar;

  always @ (posedge clk)
  begin
    q <= d;
    q_bar <= !d;
  end
endmodule

Tiếp theo là file test bench d_ff_tb.v, chú ý 2 dòng:
$dumpfile ("d_ff_tb.vcd");
$dumpvars (1, d_ff_tb);
Waveform dumps are written by the Icarus Verilog runtime program vvp. The user uses $dumpfile and $dumpvars system tasks to enable waveform dumping, then the vvp runtime takes care of the rest. The output is written into the file specified by the $dumpfile system task. If the $dumpfile call is absent, the compiler will choose the file name dump.vcd or dump.lxt, depending on runtime flags.

module d_ff_tb;

reg clock, reset, d;
wire q, q_bar;

initial begin
  $dumpfile ("d_ff_tb.vcd");
  $dumpvars (1, d_ff_tb);
  $monitor ("clock=%b, d=%b, q=%b, q_bar=%b", clock, d, q, q_bar);
  clock = 0;
  d = 1;
  #10 d = 0;
  #20 $finish;
end

always begin
  #5 clock = !clock;
end

d_ff d0(
.d (d),
.clk (clock),
.q (q),
.q_bar (q_bar)
);

endmodule

Terminal: iverilog -o d_ff_tb d_ff_tb.v d_ff.v //Dòng lệnh này sẽ biên dịch ra file d_ff_tb, có thể dùng lệnh ls để kiểm tra
vvp d_ff_tb //tạo ra file mô phỏng: d_ff_tb.vcd
Có thể quan sát kết qủa trên terminal, hoặc dùng gtkwave để theo dõi.
Để dùng gtkwave có 2 cách:
  1. chạy lệnh: gtkwave d_ff_tb.vcd
  2. Mở gtkwave lên, chọn File>Open New Tab>chọn file d_ff_tb.vcd rồi kéo thả các cổng vào cửa sổ Signal sẽ thấy ngay tín hiệu đc vẽ bên cạnh. Chú ý, zoom out lại, kẻo ko thấy gì
Nguồn: 
Wiki Icarus verilog
http://www.rowetel.com/blog/?p=13
Note:
gEDA also includes Icarus Verilog
http://wiki.geda-project.org/geda:icarus
http://web.ece.ucdavis.edu/~bbaas/281/tutorials/verilog/
http://verilog.openhpsdr.org/
Read More
x