vcd文件中存储多维数组 vcs_IC设计——EDA软件篇——VCS使用
1. 基础知识
运行机理
HDL仿真器编译代码的过程由编译,建模和仿真三个阶段(详情见该文第4大点:https://blog.csdn.net/qq_39815222/article/details/89601331),VCS将三个阶段独立开来,使compilation与elaboration可以通过仿真前的命令行单独执行,而simulation阶段则可以直接运行建立好的模型
因此VCS修改参数(parameter类型)需要在独立的elaboration阶段修改,类似的QuestaSim可在仿真阶段修改(后台事先会执行elaboration阶段)。
2. 操作
analyze
-j10 //多核编译,该例为10核
compile
vcs +v2k -debug_all //案例:编译顶层文件 支持verilog2001标准
-sverilog //支持systemverilog
-mhdl //实现混合HDL语言的编译和仿真
-v //列举编译的源文件
-y //列举源文件需要用到的参考库
+libext+.v+.vhd+... //在参考库下寻找以.v和.vhd为扩展名的文件
+incdir+dir1+dir2+... //vcs在参考目录下寻找源代码中`include指示的文件
-full64 //64位编译,生成64位simv
-comp64 //64位编译,生成32位simv
-debug_pp //生成vpd文件
-debug //相对于debug_pp多了UCLI调试功能
-debug_all //有相对于debug多了单步调试功能
+define+macro1=+macro2=+... //将value传递给源文件中的宏名
+ad= //实现混合信号的编译和仿真
-timescale=/ //指明时间尺度
+vcs+dumpvars //代替源代码中没有参数的$dumpvars任务
+error+ //将编译时运行的NTB错误增加到N
+memcbk //dve中查看多维数组波形,通常也需要在testbench中加$vcdplusmemon
simulation
-o simv1 //指定仿真文件名,产生多次不同的simv可执行文件
-gui //用图形界面打开
+vcs+stop+time //指定仿真暂停时间
+vcs+finish+time //指定仿真结束时间
-nospecify //禁止模块路径延迟和时序检查,提高仿真速度
+notimingcheck //禁止时序检查,提高仿真速度
-V //verbose mode
+vpdfile+ //产生指定名字的vpd文件
产生*.vcd文件
在代码中加入系统函数$vcdpluson()或者$vcdplustraceon()
debug
dve //等同于simv -gui 或vcs -gui -R
dve -vpd -session
3. code coverage
基本命令
-cm cond+tgl+lin+fsm+path //打开code coverage分析 :条件+翻转+行+状态机+路径
-cm_nocasedef //统计覆盖率时不统计default语句
-cm_dir //设置覆盖率文件的路径名
-cm_name //设置统计覆盖率文件的名字
产生*.vdb文件
统计覆盖率的文件
-cm_log //产生log文件
autograding //针对性的做测试,统计每个testcase的覆盖率贡献
//VCS coverage on //避免某段语句统计覆盖率
//VCS coverage off
-cm_heir //避免某模块统计覆盖率
该命令详情见链接:http://www.lujun.org.cn/?p=4569
命令分析
$> vcs -Mupdate -cm line -cm_dir my_cov source.v
$> simv -cm line -cm_dir int_dat_files
$> vcs -cm_pp -cm line -cm_dir my_cov -cm_dir int_dat_files
第一条命令是把source.v文件进行编译,把编译结果放入my_cov文件夹中.选项-cm line表示在编译时,要加入line覆盖率分析.
第二条命令运行仿真,同样选项-cm line选项表示仿真是加入line覆盖率分析,并把结果存入ini_data_files目录中
第三条进行覆盖率分析,分析文件从my_cov和int_dat_files这两个目录中读取,进行line覆盖率的分析。现在一般用dve图形界面观察覆盖率报告。
N个testbench中N个testcase的情况
cmView会将各自的仿真的中间文件合并,因此可以使用同一个testbench,编译一次,但多次仿真,就可以得到多次仿真的覆盖报告
编译一次,运行N次,每次运行前更改$readmemb任务的文本文件,就等同于更改了输入,得到多个test文件(test1,test2......)
simv -cm line -cm_name test1
simv -cm line -cm_name test2
vcs -cm_pp -cm merge_name //运行cmViem,会在reports目录下写入一个混合的报告,或者运行dve直接观察
编译一次,运行N次,每次更改$test$plusargs认为的参数,因为每个该任务的参数对应不同$readmemb的输入文件,等于更改了输入
simv -cm_name test1 -cm mac1
simv -cm_name test2 -cm mac2
dve -covdir *vdb //运行dve观察
*编译多次,建立多个simv,运行多次,每次用的testbench不同
vcs -o simv1 -cm...
vcs -o simv2 -cm... //多次simv,最后执行cmView
vcs -cm_pp line -cm_dir ./simv1.vdb -cm_dir ./simv.vdb //也可运行dve
4. error和warning
error
Error-[ITSFM] Illegal `timescale for module
Module "top" has `timescale but previous module(s)/package(s) do not.
编译时,要将带有`timescale或者宏定义的文件列在前面。
Error-[SV-IDOCBO] Illegally driving clocking block output
Clocking block output rtr_io.cb.reset_n is illegally driven by a blocking assignment.
interface里的clocking block里应使用非阻塞赋值 <=
Error-[...]找不到某些文件
这个时候先要确认该文件确实已经添加到VCS可遍历的目录里去,若源文件已添加仍找不到,可使用+incdir+选项将源文件所在目录添加进去;
其次观察一下编译的log文件,检查是否编译命令是否正确,经常会出现列举编译文件格式不规范,少加号、换行符的情况。
vcd文件中存储多维数组 vcs_IC设计——EDA软件篇——VCS使用相关推荐
- vcd文件中存储多维数组 vcs_怎样在Modelsim软件中产生一个.vcd文件并且显示波形?...
解决方案ID: rd07062010_692 最后修改: 2012 年9 月11 日 产品类别: 设计软件 产品领域: 仿真/一致性验证 产品子领域: ModelSim-Altera(仿真/一致性验证 ...
- vcd文件中存储多维数组 vcs_VCS课时4: 使用VCD文件进行后处理
课程目标 原来是互动的过程,这一节课主要讲的是仿真平台完成任务,用DVE打开打开波形文件 查看波形文件 查看log文件 最早的是VCD文件,在这基础上推出的VCD+文件,文件比较大,读取慢 在仿真代码 ...
- Verilog中的二维数组及其初始化
Verilog中的二维数组 Verilog中提供了两维数组来帮助我们建立内存的行为模型.具体来说,就是可以将内存宣称为一个reg类型的数组,这个数组中的任何一个单元都可以通过一个下标去访问.这样的数组 ...
- 二维数组在c语言中的作用,C语言中的二维数组
1.二维数组的定义和引用 一. 数据类型 数组名[常量表达式1][常量表达式2]; (1)假如有个二维数组array[n][m],则行下标的取值范围0~n-1 (2)列下标的取值范围0~m-1 (3) ...
- java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法...
1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...
- 【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )
文章目录 一.读取文件中的结构体数组 | feof 函数使用注意事项 二.代码示例 一.读取文件中的结构体数组 | feof 函数使用注意事项 读取文件结构体时 , 可以循环读取文件中的数据 , 只使 ...
- java 数组存入数据库_Java中关于二维数组的理解与使用
今天练习的时候遇到一个题目,题目需求是这样的: 需求说明: 根据3个班各5名学生某门课程的成绩,正确使用二维数组计算如图所示3个班各自的总成绩 分析: 要实现这个功能需要存储两个信息: 一个是班级信息 ...
- c语言字符串二维数组的动态分配应,C语言中动态分配二维数组复习过程.doc
C语言中动态分配二维数组复习过程.doc C语言中动态分配二维数组在C中动态分配内存的,对于单个变量,字符串,一维数组等,都是很容易的.C中动态分配二维数组的方法,很少有C语言书中描述,我查找了有的C ...
- scala中的二维数组_Scala中的多维数组
scala中的二维数组 多维数组 (Multi-dimensional arrays) An Array that stores data in the form multidimensional m ...
最新文章
- Leetcode:114. Flatten Binary Tree to Linked List
- mysql 一周一月_mysql查询当天、本周,本月,上一个月的数据
- 基于netty的websocket协议实现
- python 二进制文件_使用Python进行二进制文件读写的简单方法(推荐)
- android 购物车抛物线,添加到购物车抛物线动画
- java中如何将非整数保留到小数点后指定的位数
- mysql的安装胚子_下列哪个制剂是以主要药味缩写加剂型的原则命名的
- C++set容器去重法
- Python当前线程休眠1秒钟
- ubuntu安装vasp_用强大的GROMACS分析工具分析VASP的动力学结果
- cus系统前台改版 beta1.1发布
- manjaroLinux安装卸载oh-my-zsh
- 速达pro服务器显示试用,速达v3-pro商业版突然变成试用版了,加密狗的灯不亮了,是什么原因- _0...
- synchronized锁住的对象
- 【HTTP Live Streaming】(四)苹果公司提供的7款 hls 工具
- 探索GIS+物联网应用场景 MapGIS IoT实时大数据解决方案
- 504 压测geteway_504 Gateway Time-out是怎么回事?
- java中使用poi导出ppt(图片和表格)
- seo伪原创文章优化(怎么找可以做伪原创的文章)
- Android开发常见面试