Synopsys软件基本使用方法

打印 上一主题 下一主题

主题 1097|帖子 1097|积分 3291

本文主要先容Synopsys软件vcs、verdi的基本使用方法,相干文件可从 GitHub下载。
1 文件说明



  • 创建verilog源文件add.v、mult.v、top.v
    1. module add (
    2.   input  signed [31:0]        dina,
    3.   input  signed [31:0]        dinb,
    4.   output signed [31:0]        dout
    5. );
    6. assign dout = dina + dinb;
    7. endmodule
    复制代码
    1. module mult (
    2.   input  signed [31:0]        dina,
    3.   input  signed [31:0]        dinb,
    4.   output signed [31:0]        dout
    5. );
    6. assign dout = dina * dinb;
    7. endmodule
    复制代码
    1. module top (
    2.   input                clk,
    3.   input                rstn,
    4.   input  signed [31:0] dina,
    5.   input  signed [31:0] dinb,
    6.   output signed [31:0] dout
    7. );
    8. wire signed [31:0] add_dout;
    9. wire signed [31:0] mult_dout;
    10. add add_i(
    11.   .dina(dina),
    12.   .dinb(dinb),
    13.   .dout(add_dout)
    14. );
    15. mult mult_i(
    16.   .dina(dina),
    17.   .dinb(dinb),
    18.   .dout(mult_dout)
    19. );
    20. reg signed [31:0] add_inv;
    21. reg signed [31:0] mult_inv;
    22. always @(posedge clk) begin
    23.   if (!rstn) begin
    24.     add_inv <= 0;
    25.     mult_inv <= 0;
    26.   end
    27.   else begin
    28.     add_inv <= -add_dout;
    29.     mult_inv <= -mult_dout;
    30.   end
    31. end
    32. assign dout = add_inv + mult_inv;
    33. endmodule
    复制代码
  • 创建仿真文件tb.v
    1. `timescale 1ns/1ns
    2. module tb;
    3. reg                clk;
    4. reg                rstn;
    5. reg  signed [31:0] dina;
    6. reg  signed [31:0] dinb;
    7. wire signed [31:0] dout;
    8. initial begin
    9.   #0 begin clk = 1; rstn = 0; end
    10.   #4 begin rstn = 1; end
    11. end
    12. always #2 clk = !clk;
    13. initial begin
    14.   #0 begin dina <= 3; dinb <= 4; end
    15.   #4 begin dina <= -5; dinb <= 16; end
    16.   #8;
    17.   $finish;
    18. end
    19. top top_i(
    20.   .clk (clk),
    21.   .rstn(rstn),
    22.   .dina(dina),
    23.   .dinb(dinb),
    24.   .dout(dout)
    25. );
    26. initial begin
    27.   // 指定文件名称和限制文件大小(单位MB)
    28.   $fsdbDumpfile("./rtl.fsdb", 32);
    29.   // 导出的信号
    30.   // $fsdbDumpvars; //所有信号
    31.   $fsdbDumpvars(0, top_i); //top_i下的所有信号,包括子模块的信号
    32.   // $fsdbDumpvars(1, top_i); //top_i下的所有信号,不包括子模块的信号
    33.   // $fsdbDumpvars(2, top_i); //top_i和下一层子模块add_i和mult_i下的所有信号
    34. end
    35. endmodule
    复制代码
  • 创建文件流表file.list
    1. tb.v
    2. top.v
    3. add.v
    4. mult.v
    复制代码
  • 创建编译脚本Makefile
    1. .PHONY:
    2.   vcs sim verdi clean
    3. vcs:
    4.   vcs -full64 -sverilog -debug_access+all -f file.list -timescale=1ns/1ns \
    5.   -kdb -lca -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed
    6. # -full64:64位的系统需要添加
    7. # -sverilog:识别systemverilog的语法
    8. # -debug_access+all:生成debug所需文件
    9. # -f file.list:将file.list中所有.v文件进行编译
    10. # -timescale=1ns/1ns:设置仿真精度
    11. # -kdb:生成KDB文件,仿真时生成verdi的库文件simv.daidir
    12. # -lca:支持动态数据类型
    13. # -cpp g++-4.8 -cc gcc-4.8 -LDFLAGS -Wl,--no-as-needed:指定编译选项
    14. sim:
    15.   ./simv -verdi
    16. # -l run.log:记录终端打印信息
    17. # -verdi:打开verdi进行动态调试
    18. # +fsdb+functions:抓取function和task内部信号
    19. verdi:
    20.   verdi -ssf rtl.fsdb
    21. # -ssf rtl.fsdb:打开波形文件
    22. clean:
    23.   rm -rf csrc simv* *.lib *.lib++ nLint* verdi_config_file
    24.   rm -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窗口,可进行上述操作打开窗口并添加信号,点击工具栏的绿色箭头可开始动态仿真,再次点击绿色箭头会重置。别的,工具栏多了许多工具,可进行逐步调试。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

种地

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表