成都网站制作方案,安徽建站平台,世界足球排名,公众号商城开发需要多少钱Synopsys软件基本使用方法 1 文件说明2 编译流程3 查看波形4 联合仿真 本文主要介绍Synopsys软件vcs、verdi的基本使用方法#xff0c;相关文件可从
GitHub下载。 1 文件说明
创建verilog源文件add.v、mult.v、top.vmodule add (input signed [31:0] dina,input signed [3… Synopsys软件基本使用方法 1 文件说明2 编译流程3 查看波形4 联合仿真 本文主要介绍Synopsys软件vcs、verdi的基本使用方法相关文件可从
GitHub下载。 1 文件说明
创建verilog源文件add.v、mult.v、top.vmodule add (input signed [31:0] dina,input signed [31:0] dinb,output signed [31:0] dout
);assign dout dina dinb;endmodulemodule mult (input signed [31:0] dina,input signed [31:0] dinb,output signed [31:0] dout
);assign dout dina * dinb;endmodulemodule top (input clk,input rstn,input signed [31:0] dina,input signed [31:0] dinb,output signed [31:0] dout
);wire signed [31:0] add_dout;
wire signed [31:0] mult_dout;add add_i(.dina(dina),.dinb(dinb),.dout(add_dout)
);mult mult_i(.dina(dina),.dinb(dinb),.dout(mult_dout)
);reg signed [31:0] add_inv;
reg signed [31:0] mult_inv;
always (posedge clk) beginif (!rstn) beginadd_inv 0;mult_inv 0;endelse beginadd_inv -add_dout;mult_inv -mult_dout;end
endassign dout add_inv mult_inv;endmodule创建仿真文件tb.vtimescale 1ns/1nsmodule tb;
reg clk;
reg rstn;
reg signed [31:0] dina;
reg signed [31:0] dinb;
wire signed [31:0] dout;initial begin#0 begin clk 1; rstn 0; end#4 begin rstn 1; end
end
always #2 clk !clk;initial begin#0 begin dina 3; dinb 4; end#4 begin dina -5; dinb 16; end#8;$finish;
endtop top_i(.clk (clk),.rstn(rstn),.dina(dina),.dinb(dinb),.dout(dout)
);initial begin// 指定文件名称和限制文件大小(单位MB)$fsdbDumpfile(./rtl.fsdb, 32);// 导出的信号// $fsdbDumpvars; //所有信号$fsdbDumpvars(0, top_i); //top_i下的所有信号包括子模块的信号// $fsdbDumpvars(1, top_i); //top_i下的所有信号不包括子模块的信号// $fsdbDumpvars(2, top_i); //top_i和下一层子模块add_i和mult_i下的所有信号
endendmodule创建文件流表file.listtb.v
top.v
add.v
mult.v创建编译脚本Makefile.PHONY:vcs sim verdi cleanvcs:vcs -full64 -sverilog -debug_accessall -f file.list -timescale1ns/1ns \-kdb -lca -cpp g-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed
# -full6464位的系统需要添加
# -sverilog识别systemverilog的语法
# -debug_accessall生成debug所需文件
# -f file.list将file.list中所有.v文件进行编译
# -timescale1ns/1ns设置仿真精度
# -kdb生成KDB文件仿真时生成verdi的库文件simv.daidir
# -lca支持动态数据类型
# -cpp g-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed指定编译选项
sim:./simv -verdi
# -l run.log记录终端打印信息
# -verdi打开verdi进行动态调试
# fsdbfunctions抓取function和task内部信号
verdi:verdi -ssf rtl.fsdb
# -ssf rtl.fsdb打开波形文件
clean:rm -rf csrc simv* *.lib *.lib nLint* verdi_config_filerm -rf *.log *.vpd *.fsdb* *.key *log rtl.fsdb*2 编译流程
执行make vcs对verilog源文件进行编译编译成功会生成simv文件执行make sim进行仿真仿真成功会生成rtl.fsdb文件执行make verdi打开波形文件
3 查看波形
打开后的verdi界面如下图所示 将Instance栏中的top_i拖动到下面的波形界面添加波形信号通过工具栏上的工具可进行缩放、移动操作右键选择操作信号在Set Radix可更改信号的数据显示格式通过Set Notation可改变是否为符号数通过Highlight可改变波形颜色。波形界面可拉出verdi界面单独显示以此显示更多信号。 直接通过添加信号无法显示模块中的中间变量如add_inv和mult_inv点击菜单栏的Signal→Get Signals选中这两个信号点击Apply可添加到窗口中。 点击菜单栏的File→Save Signal可保存波形配置为.rc文件关闭波形窗口后可通过工具栏重新打开一个新的窗口点击File→Restore Signal重新加载.rc文件打开保存的配置。
4 联合仿真
如果在执行sim的参数中添加了-verdi可进行vcs和verdi的联合调试在完成仿真后会打开verdi窗口可进行上述操作打开窗口并添加信号点击工具栏的绿色箭头可开始动态仿真再次点击绿色箭头会重置。此外工具栏多了很多工具可进行逐步调试。