html网站地图,系统开发需求文档,广州做网站需要多少钱,苏州知名网站制作Verilog单步调试#xff1a;
System Verilog进行单步调试的步骤如下#xff1a;
1. 编译设计 使用-debug_all或-debug_pp选项编译设计#xff0c;生成调试信息。 我的4个文件#xff1a; 1.led.v
module led(input clk,input rst_n,output reg led
);reg [7:0] cnt;alwa…Verilog单步调试
System Verilog进行单步调试的步骤如下
1. 编译设计 使用-debug_all或-debug_pp选项编译设计生成调试信息。 我的4个文件 1.led.v
module led(input clk,input rst_n,output reg led
);reg [7:0] cnt;always (posedge clk)
beginif(!rst_n)cnt 0;else if(cnt 10)cnt 0;else cnt cnt 1;
endalways (posedge clk)
beginif(!rst_n)led 0;else if(cnt 10)led !led;
endendmodule 2.led_tb.v
timescale 1ns / 1psmodule led_tb;// Parameters
parameter CLK_PERIOD 10; // Clock period in ns// Inputs
reg clk;
reg rst_n;// Outputs
wire led;// Instantiate the Unit Under Test (UUT)
led uut (.clk(clk), .rst_n(rst_n), .led(led)
);// Clock generation
initial beginclk 0;forever # (CLK_PERIOD/2) clk ~clk;
endinitial begin$fsdbDumpfile(tb.fsdb);//这个是产生名为tb.fsdb的文件$fsdbDumpvars;
end// Test cases
initial begin// Initialize inputsrst_n 0;# (CLK_PERIOD*2); // Wait for a few clock cycles// Test case 1: Reset active lowrst_n 0;# (CLK_PERIOD*10);$display(Test case 1: After reset, led %b, led); // Expected: led 0// Test case 2: Reset released, cnt 10rst_n 1;# (CLK_PERIOD*5);$display(Test case 2: After reset release, led %b, led); // Expected: led 0// Test case 3: cnt reaches 10, led toggles# (CLK_PERIOD*5);$display(Test case 3: After cnt reaches 10, led %b, led); // Expected: led 1// Finish simulation$finish;
end3.Makefile
#------------------------------------------------------------------------------------------
FSDB_FILE tb.fsdb
comp : clean vcs
#------------------------------------------------------------------------------------------vcs :vcs \-f filelist.f \-timescale1ns/1ns \-fsdb -full64 -R vc v2k -sverilog -debug_all \-P ${LD_LIBRARY_PATH}/novas.tab ${LD_LIBRARY_PATH}/pli.a \| tee vcs.log
#------------------------------------------------------------------------------------------
verdi :verdi -f filelist.f -ssf $(FSDB_FILE)
#------------------------------------------------------------------------------------------
clean :rm -rf *~ core csrc simv* vc_hdrs.h ucli.key urg* *.log novas.* *.fsdb* verdiLog 64* DVEfiles *.vpd
#------------------------------------------------------------------------------------------4.file_list
./led.v
./led_tb.v 2. 启动仿真 编译后会生成可执行文件simv运行它以启动仿真。
make vcs 3. 进入调试模式 使用-gui选项启动VCS的图形界面调试工具DVEDiscovery Visualization Environment。
bash ./simv -gui 4. 使用DVE进行单步调试 在DVE中可以设置断点、单步执行代码、查看信号和变量等。
- **设置断点**在代码行号旁点击设置断点。
法一推荐在行号旁双击鼠标左键 如上我是在led.v这个文件进行的断电设置
法2右键--Breakpoint - **添加待观测信号**在波形窗口查看信号波形或在变量窗口查看变量值。
将下面line1~18用鼠标左键选中右键添加到待观测波形中 - **单步执行**使用Step Over、Step Into等按钮逐步执行代码。 下面1 or 2都可以用来步进推荐用快捷键F10.F11. - **查看信号**在波形窗口查看信号波形或在变量窗口查看变量值。 5. 命令行调试可选 如果不使用DVE可以通过命令行进行调试。
bash ./simv -ucli
在UCLI命令行中使用以下命令进行调试
- run运行仿真。 - step单步执行。 - next执行下一行代码。 - cont继续执行直到下一个断点。 - break设置断点。 其他可以将DVE waveform窗口“Always on Top” 6. 分析调试结果 通过DVE或命令行工具分析调试结果定位并修复问题。 7.总结 1. 使用-debug_all编译设计。 2. 运行./simv -gui启动DVE。 3. 在DVE中设置断点并单步调试。 4. 可选使用命令行工具进行调试。 5. 分析调试结果修复问题。
通过这些步骤你可以有效地使用VCS对SystemVerilog进行单步调试。