1 前言
用VCS仿真SVA的资料已经很多,所以本文重点阐述了NC下使用SVA的脚本,以及SVA在VCS和NC下仿真的差异。
2 脚本
2.1 NC仿真脚本
-access +r 读存储这个方式必须有,为了断言检测用的。
-sv 大家都懂的
-assert 断言使能
-gui 启动图形化界面
-input 从文件里面读tcl命令
打开一个shm格式的名字为waves的database,然后把数据放在test.shm这个文件里面。
-event dump所有的变量的变化到database。
-shm 指定database的格式为shm格式,这个是默认的。
Probe –create 创建探测器即断言
-create [{object | scope_name}….}][option]
Probe –create –shm test –all –depth all
-shm 是指检测的database的类型
Test 为设计的例化名字,-all 表示范围
-depth all 表示深度
2.2 NC下断言覆盖率收集脚本
Coverage –setup 表示建立覆盖的变量 –dut 表示范围,仿真器会将dut_instance下的所有覆盖信息都进行存储
Coverage –functional –select 表示选择功能覆盖点
Coverage –functional –select <assertion_selector> ,<assertion_selector>用于指明功能覆盖率要覆盖到的断言的名字。
用icc来看断言覆盖率:
Iccr -test ,-test 选项是从指定的区域load coverage,它后面跟coverage所存储的目录。
Report_html –f 以网页的形式报告基于断言的功能覆盖率。如果不加-f所有类型的覆盖率将都会被上报。
-all 表示上报指定coverage类型的,所有coverage items 包括(覆盖到的,没有覆盖到的,屏蔽的)
-module 表示用哪种方式来上报断言。方式共有三类:1. –instance 2. –module 3.-entity
2.3 一些关于脚本的问题:
问题1.-access +r的含义
-access 后面可以跟 r w c;r代表read;w代表write;c代表connectivity。
+号用来打开r、w、c这些选项,如+r表示开启r所代表的功能;+w表示开启w所代表的功能;
-号用来关闭r、w、c这些选项,如-r表示关闭r所代表的功能;-w表示关闭w所代表的功能;
如果r、w、c这些选项前面既没有+号也没有-号,则默认的表示+,即开启。
r、w、c这些选项代表的具体含义如下:(英文原版的很容易理解,描述的也更加准确,所以就不做翻译了,呵呵)
问题2:使用-event会降低仿真速率,不加是否可以?
key:加不加-event,需要根据自己的具体应用需求,原理如下:
问题3:打印波形的tcl中哪些参数是因打印断言而加的?
key:没有专门因打印断言而加的参数
问题4:如何认为一个断言覆盖了100%
key:“该断言成功的次数” 与 “该断言发起检查的总次数”之比
2.4 断言功能覆盖率效果实例图
2.5 NC断言基础知识:
在仿真波形上看,常见到的,断言有以下几个状态:
Active:表示仿真器检测到符合要求的断言起始条件开始断言
Inactive:表示仿真器没有检测到符合要求的断言起始条件,未开始开始断言
Failed:表示断言失败
Finished:表示一次断言成功
Disabled:断言属性通过disable iff语句被diaable掉,即不使能。
Off:通过外部控制使断言不被监视。如:通过编译命令:-noassert
如上图所示:
a1:为所示的断言信息。将其展开后会发现它里面又包括了以下几根线:
checked_count:记录了发起断言的总次数,包括失败的和成功的。
finish_count:记录了断言成功的总次数。
failure_count:记录了断言失败的总次数。
diabled_count:记录了断言被disable的次数。即该断言通过disable iff语句被disable掉。
3 不同点:
3.1 VCS的vpd波形,NC的shm,fsdb波形显示的差异;以及相应情况下的打印信息差异
例子:
VCS打印信息: NC打印信息:
VCS vpd波形:
NC shm 波形:
NC fsdb波形:
VCS 打印信息:
NC shm格式波形情况下打印信息:
NC fsdb格式波形情况下打印信息:
3.2 同一时刻成功失败的报告示例:
VCS和NC的差异:同一时刻既有成功又有失败:vcs:FAIL和PASS均打印;NC:只打印失败的。 同一时刻有多个失败或成功:VCS均打印;NC:只打印一次。
3.3 带门控的$past
VCS和NC的差异:NC不支持带门控的$past。
3.4 多时钟域的交叠蕴含
时钟冲突