(筆記 ) 如何連結NC-Verilog與Debussy? (SOC) (NC-Verilog) (Debussy)
Abstract
Debussy是超強的debug工具,本文簡單介紹NC-Verilog如何與Debussy連結。
Introduction
一個簡單的D-FF,示範如何使用NC-Verilog與Debussy做連結。
d_ff.v / Verilog
1 /*
2 (C) OOMusou 2008 http://oomusou.cnblogs.com
3
4 Filename : d_ff.v
5 Compiler : NC-Verilog 5.4
6 Description : NC-Verilog with Debussy
7 Release : 03/19/2009 1.0
8 */
9
10 module d_ff (
11 input iCLK,
12 input iD,
13 output reg oQ,
14 output reg oQ_BAR
15 );
16
17 always@(posedge iCLK) begin
18 if (iD == 1) begin
19 oQ <= 1'b1;
20 oQ_BAR <= 1'b0;
21 end
22 else begin
23 oQ <= 1'b0;
24 oQ_BAR <= 1'b1;
25 end
26 end
27
28 endmodule
29
2 (C) OOMusou 2008 http://oomusou.cnblogs.com
3
4 Filename : d_ff.v
5 Compiler : NC-Verilog 5.4
6 Description : NC-Verilog with Debussy
7 Release : 03/19/2009 1.0
8 */
9
10 module d_ff (
11 input iCLK,
12 input iD,
13 output reg oQ,
14 output reg oQ_BAR
15 );
16
17 always@(posedge iCLK) begin
18 if (iD == 1) begin
19 oQ <= 1'b1;
20 oQ_BAR <= 1'b0;
21 end
22 else begin
23 oQ <= 1'b0;
24 oQ_BAR <= 1'b1;
25 end
26 end
27
28 endmodule
29
d_ff_tb.v / Verilog
測試d_ff.v的testbench
1 /*
2 (C) OOMusou 2008 http://oomusou.cnblogs.com
3
4 Filename : d_ff_tb.v
5 Compiler : NC-Verilog 5.4
6 Description : NC-Verilog with Debussy
7 Release : 03/19/2009 1.0
8 */
9
10 module d_ff_tb;
11
12 reg clk, d;
13 wire q, q_bar;
14
15 initial begin
16 $fsdbDumpfile("d_ff.fsdb");
17 $fsdbDumpvars(0, d_ff_tb);
18
19 clk = 0;
20 #5 d = 0;
21 #5 d = 1;
22
23 #10 $finish;
24 end
25
26 // clk
27 always #5 clk = !clk;
28
29 d_ff u0 (
30 .iCLK(clk),
31 .iD(d),
32 .oQ(q),
33 .oQ_BAR(q_bar)
34 );
35
36 endmodule
2 (C) OOMusou 2008 http://oomusou.cnblogs.com
3
4 Filename : d_ff_tb.v
5 Compiler : NC-Verilog 5.4
6 Description : NC-Verilog with Debussy
7 Release : 03/19/2009 1.0
8 */
9
10 module d_ff_tb;
11
12 reg clk, d;
13 wire q, q_bar;
14
15 initial begin
16 $fsdbDumpfile("d_ff.fsdb");
17 $fsdbDumpvars(0, d_ff_tb);
18
19 clk = 0;
20 #5 d = 0;
21 #5 d = 1;
22
23 #10 $finish;
24 end
25
26 // clk
27 always #5 clk = !clk;
28
29 d_ff u0 (
30 .iCLK(clk),
31 .iD(d),
32 .oQ(q),
33 .oQ_BAR(q_bar)
34 );
35
36 endmodule
Debussy本身並沒有simulation的功能,必須依靠NC-Verilog或者ModelSim產生的*.fsdb使用。
16行
$fsdbDumpfile("d_ff.fsdb");
由testbench產生Debussy所需要的*.fsdb。
17行
$fsdbDumpvars(0, d_ff_tb);
指定dump哪個module的信號,0表示全部信號,1代表這一層信號,2代表這一層及下一層信號,d_ff_tb表示top module。
使用NC-Verilog模擬
ncverilog +access+r d_ff.v d_ff_tb.v
使用Debussy看波形圖
將所有會用到的檔案寫在run.f檔中
fun.f
d_ff.v
d_ff_tb.v
d_ff_tb.v
執行Debussy
debussy -f run.f -ssf d_ff.fsdb -2001
-f表載入run.f,-ssf載入由NC-Verilog所dump的fsdb檔,-2001表示支援Verilog 2001規格
若已經將在Debussy將要觀察的signal存成*.rc檔,可由-sswr參數一次載入。
debussy -f run.f -ssf d_ff.fsdb -sswr d_ff.rc -2001