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 进行analysisvlogan -kdb -sverilog +define+SVA_OFF -work DEFAULT -f vlog.flist -l  logfilename.log  //对systemverilog进行analysisvhdlan -kdb -vhdl87  -full64  -work $VCS_LIB  -f VHDL87_FILELIST -l vhdl87.log   //对VHDL87进行analysisvhdlan -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 definitionif ($test$plusargs("DUMP_FSDB"))  beginif ($value$plusargs("FSDB_FILENAME=%s", WAVE_FILENAME))    begin$fsdbDumpfile(WAVE_FILENAME);  // 具体系统命令查询Verdi安装目录下的文档:linking_dumping.pdfendendif ($test$plusargs("DUMP_VPD"))  beginif ($value$plusargs("VPD_FILENAME=%s", WAVE_FILENAME)) begin$vcdplusfile(WAVE_FILENAME);$vcdpluson();endend

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”

  1. 在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

例如:
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

coverage merge的命令

urg -lca -f

例如:
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

转载请出处。http://blog.csdn.net/wonder_coole/article/details/79618696

VCS 编译仿真方法总结相关推荐

  1. VCS编译仿真警告Warning

    VCS编译仿真警告Warning 问题描述 在较大的SOC集成中,通常使用Perl脚本例化子模块到Top层,然而,有时会出现例化出来的输入端口名没有在Top层定义,而且端口的位宽为1bit,那么,ve ...

  2. Verdi/Coverage tool 学习 第3节(常用编译仿真选项篇)

    目录 VCS产生code coverage 与 function coverage 归类总结 一.code coverage 二.function coverage 三.coverage其他选项 3. ...

  3. RedHat7安装Systemc 编译仿真

    本来在win7下 使用vc6++已经实现了对systemc的编译,但是不能仿真,于是就想在Linux中搭建systemc环境,然后就给自己挖了一个大坑,,,,,,真是一把辛酸泪啊! 小白一个,上来就安 ...

  4. keil调试串口的软件仿真方法

    Keil(MDK-ARM)使用教程(三)_在线调试 keil调试串口的软件仿真方法 由于我是直接使用(打开现有的软件工程),如果跟着需要下载上面演示参考的软件工程才行.工程默认是使用硬件在线调试,接下 ...

  5. VCS常用仿真选项开关及步骤总结

    转自:https://blog.csdn.net/bcs_01/article/details/79803304 转自:https://blog.csdn.net/wonder_coole/artic ...

  6. 如何用VCS+Verdi仿真Xilinx IP

    文章目录 如何用VCS+Verdi仿真Xilinx IP 1. VCS以及Vivado的版本问题 2. 使用VCS编译Vivado的IP库 3. 使用Vivado工具调用VCS进行仿真 1.新建带有I ...

  7. 【Groovy】编译时元编程 ( 编译时方法注入 | 使用 buildFromSpec、buildFromString、buildFromCode 进行方法注入 )

    文章目录 一.在 MyASTTransformation#visit 方法中进行方法注入 1.使用 new AstBuilder().buildFromSpec 进行方法注入 2.使用 new Ast ...

  8. 【Groovy】编译时元编程 ( 编译时方法拦截 | 在 MyASTTransformation#visit 方法中进行方法拦截 )

    文章目录 一.在 MyASTTransformation#visit 方法中进行方法拦截 二.完整代码示例及进行编译时处理的编译过程 1.Groovy 脚本 Groovy.groovy 2.ASTTr ...

  9. android 单个模块编译的方法

    单个模块编译的方法 $.build/envsetup.sh  mmm packages/apps/Contacts/ 示例编译联系人  这时生成  out/target/product/generic ...

最新文章

  1. day9 线程与进程、队列
  2. PAT甲级1072 Gas Station (30 分):[C++题解]dijkstra算法、最短路
  3. sublime text 自动保存
  4. 计算机供应链结构,面向供应链管理的二维条码设计-计算机系统结构专业毕业论文.docx...
  5. 数据库3(DBUtils)
  6. 三角形中惊现叛徒!自己胖的像个球,却能成就世界上最快的赛车引擎......
  7. [html] HTML全局属性(global attribute)有哪些(包含H5)?
  8. gson-2.2.api简单
  9. java script eval_「eval」js中的eval方法详解(一)–eval方法的初级应用 - seo实验室...
  10. shell中使用if判断时用到的一些参数
  11. c语言王者荣耀程序代码,王者荣耀:张大仙直言C语言上手并不难,玩家:张工程师成了?...
  12. (娱乐项目)Python图片转换成矩阵数据,矩阵数据转换成图片
  13. [IT最前沿--有点意思] 微博营销案例:杜蕾斯鞋套雨夜传奇
  14. 【模电】第十章、信号处理与信号产生电路(振荡电路)
  15. 【01背包】【DP】精卫填海(黄题)
  16. javaWeb快速开发框架之Play
  17. syslog server配置与logrotate的配置与理解
  18. mysql数据库练习作业
  19. 十万行代码——记我的ACM之路
  20. linux命令查看驱动,Linux下查看网卡驱动和版本信息

热门文章

  1. TransH论文翻译
  2. 斐波那契数列兔子繁殖问题相关思考
  3. QD港服务器配置完整过程
  4. Android插件化
  5. DN-DETR 2022
  6. java生成水印_[转载]java操作word生成水印
  7. newcoder-迷宫问题
  8. OpenStack 部署总结之:在CentOS 6.5上使用RDO安装双结算结点的icehouse(Ml2+GRE)
  9. 这个联想的程序员,让盲人朋友也能用智能手机!
  10. 金沙滩51单片机 ——点阵倒计时