MARKcz的个人空间 https://blog.eetop.cn/1763388 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

VCS 编译仿真方法总结

已有 250 次阅读| 2025-2-6 10:02 |个人分类:数字IC|系统分类:芯片设计

VCS/VCSMX 一般仿真步骤

VCS仿真可以分成两步法或三步法, 对Mix language, 必须用三步法。仿真前要配置好synopsys_sim.setup文件,

里边有lib mapping等信息。设置环境变量'setenv SYNOPSYS_SIM_SETUP /xxx/xxx/synopsys_sim.setup'. 

VCS对应的waveform工具有DVE和Verdi, DVE因为是原生的,所以VCS对DVE非常友好。但DVE已经过时了,

其对uvm等新feature支持的不好。Verdi是Debussy公司的产品,现在已被Synopsys收购并着力发展,

说以Verdi是未来的潮流。但由于其原来是Synopsys第三方产品,所以VCS对其支持并不是很友好。 

如果要支持Verdi,需要设置好NOVAS_LIB_PATH的环境变量,并且在命令行中添加-kdb的option,

knowledge database(kdb)是VCS支持Verdi时的重要概念。另外,VCS支持vpd和fsdb两个格式的dump wave。

 fsdb的文件相对比较小。


Step 1: analysis  verilog/system verilog/Vhdl;

     命令例子:


      vlogan -kdb -work DEFAULT [rtl.defs] -f filelistname -l  logfilename +incdir+include_dir_name  top.v    

//对verilog file 进行analysis

     vlogan -kdb -sverilog +define+SVA_OFF -work DEFAULT -f vlog.flist -l  logfilename.log  //对systemverilog进行analysis


 


     vhdlan -kdb -vhdl87  -full64  -work $VCS_LIB  -f VHDL87_FILELIST -l vhdl87.log   //对VHDL87进行analysis


    vhdlan -kdb -93  -full64  -work $VCS_LIB  -f VHDL93_FILELIST -l vhdl93.log   //对VHDL93进行analysis


Step 2: Elaboration

     命令例子:


  vcs -kdb -lca -noIncrComp +lint=TFIPC-L +lint=PCWM -debug_all -P /xxx/synopsys/verdi/xxxxxx/novas_new_dumper.tab  

/xxx/synopsys/verdi/xxx/pli.a top_module_name  -l elab.log  -Mdir=/xxx/incr_compile -o /xxx/simv


Step 3: Run simulation

     命令例子:


simv +DUMP_FSDB +FSDB_FILENAME=xxx.rtl.fsdb +PLUSSEED +seed=146123456 -l /xxx/xxx.sim.log


simv +DUMP_VPD +VPD_FILENAME=xxx.rtl.fsdb +PLUSSEED +seed=146123456 -l /xxx/xxx.sim.log


注意,上面的两个命令中,参数DUMP_FSDB/VPD是一个dump波形的使能参数,需要在top testbench中添加dump wave的系统命令,

配合使用才起作用:


reg [511:0] WAVE_FILENAME; // string definition

 

if ($test$plusargs("DUMP_FSDB"))  begin

      if ($value$plusargs("FSDB_FILENAME=%s", WAVE_FILENAME))    begin

           $fsdbDumpfile(WAVE_FILENAME);  // 具体系统命令查询Verdi安装目录下的文档:linking_dumping.pdf

      end

 end

 

if ($test$plusargs("DUMP_VPD"))  begin

      if ($value$plusargs("VPD_FILENAME=%s", WAVE_FILENAME)) begin

            $vcdplusfile(WAVE_FILENAME);

            $vcdpluson();

      end

 end

GUI

在仿真中产生coverage database

1. 在analysis step不需要做特殊处理(vlogan/vhdlan)


2. 在elaboration step需要添加这些option:


“-cm line+cond+fsm+tgl+branch -cm_linecontassign -cm_cond allops+anywidth+event -cm_noseqconst -debug_all”


3. 在simulation step添加这些option:“-cm line+cond+fsm+tgl+branch”


仿真产生的coverage data会放在simv.vdb目录下,用“dve -covdir *.vdb”会以GUI形式打开


coverage 相关命令

产生coverage report的命令

urg -lca -dir <simv1.vdb simv2.vdb ….> -format <text|html|both> -log <log_file_name> -report <report directory name>


例如:


       urg -lca -dir simv.vdb -format text -log urg.log 在默认的report目录urgReport产生各个metrics(line/fsm/branch/condition)

的报告

       urg -lca -dir simv.vdb -metric line+fsm -format text -log urg.log 只产生line和fsm的报告


       urg -lca -dir simv.vdb -format text -log urg.log –show summary <levels of hierarchy>


 


coverage merge的命令

urg -lca -f <file with list of simv.vdb directories> -map <module name> -format text -log <log_file_name> -dbname

 <merged .vdb name> -report <report directory name>


例如:

     urg -lca -f urgfile -map dut_name -format text -log coverage.log -dbname merged_simv -report merged_coverage

  urg -lca -dir simv1.vdb simv2.vdb -map dut_name -format text -log coverage.log -dbname merged_simv 

-report merged_coverage


 


其他

在synopsys_sim.setup文件中设置 lib mapping的方法:

 lib_name : lib_path


如: lp_mem_lib : /xxx/xxx/lp_mem_lib/vcsmx_2016/rtl/vhdl/VCSobj


在run simv时可执行tcl命令文件

 ./simv -ucli -i  tclfile.do


ticfile.do为自定义的tcl命令,如 dump -add {tb.dut} -depth 0 


复制过来记录



点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 6

    月排名
  • 0

    总排名
  • 3

    关注
  • 1

    粉丝
  • 2

    好友
  • 3

    获赞
  • 0

    评论
  • 48

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-2-21 03:25 , Processed in 0.010563 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部