ncverilog简介
在IC设计和模块级验证中,Synopsis公司的VCS和Verdi占有很高的市场。对于Cadence公司,前端模块级编译仿真使用最多的是ncverilog。但是ncverilog出自哪个软件集呢(IDE,Kit)?期初我也很疑惑,经过查阅(主要是参考CDNS和eetop),总结如下。
Cadence提供的工具集是IUS,是一套芯片设计集成仿真工具集,包括的工具有:irun, nclaunch, ncverilog, ncelab, simvision, iccr( 最新版本改为imc)等。各个工具作用简介如下:
工具 | 简介 |
ncverilog/ irun | 仿真命令,通过命令行方式进项仿真,ncverilog和irun是单步命令,一步完成编译(ncvlog),建模(链接ncelab)和仿真(ncsim)这三个步骤。但是实际仿真中,irun和ncverilog依赖的还是三步式命令。只是单命令方式,使用起来更简单。 irun是新版本IUS的命令,为向低版本兼容,不改变工程师的习惯,ncverilog在新版本EDA工具中,依然存在,只是链接到irun命令。现在irun已经成为主流,且带有更多的features。 基于shell的ncverilog适合于批量Verilog文件跑仿真,一般较少使用图形化界面或者三步式命令。 |
nclaunch | ncverilog是shell版本的命令,而nclaunch是图形化界面的,两个调用的内核相同。Nclaunch也分为多步(multiple step)和单步模式(single step) |
ncvlog/ ncelab/ ncsim | 三步模式,ncvlog执行后将产生名称为INCA_libs、worklib的目录; ncelab根据编译的结果,选择对应的module,建立电路模型(生成snapshot的module文件),存放在名称为snapshot文件夹(执行ncelab后产生)。 对snapshot文件进行仿真。 |
simvision | simvision是ncverilog配套的波形查看软件,包含原理图、波形、信号等查看方式。 如果使用Synopsis的vcs进行编译仿真,则可以配合Verdi查看波形、原理图,信号denbug等。 当然,ncverilog也可以通过Verdi(以前叫做Debussy,后被Synopsis收购)来查看波形。如果使用Verdi的fsdb数据库记录信号的变化,在ncverilog仿真前,首先需要设置Verdi/debussy。 |
iccr/imc | 是shell命令,cadence提供的代码覆盖率查看命令。使用方式是: iccr -test 覆盖率数据集 -gui 以图形化方式查看代码覆盖率情况,感觉不是很好用,覆盖率(行/line,条件/cond,分支/branch,状态机/fsm,翻转/toggle等)统计和报告不是很直观。没有Synopsis提供的urg命令生成的覆盖率报告文档直观。 |
实际项目中,设计人员通常采用一个文件列表来列出需要编译仿真的module,并提供一个数字设计的顶层module给验证人员。验证人员也提供一个验证所需要的文件列表,该文件列表包含验证中需要的一些IP模型(例ROM模型,efuse模型,OTP模型,MTP模型等)或者验证环境组件,并在该文件列表中加入设计人员提供的文件列表(使用-f rtl.lst编译选项即可)。这样的优点是,设计人员只需要维护其设计代码和文件列表,验证人员也只需要维护验证相关的文件列表即可。
值得注意的是,设计人员在设计中不要设置timescale,验证人员在验证环境组件中也不需要设置timescale,而是根据项目需求,用编译选项 -timescale来统一设置timescale,避免出现提示timescale的错误,已经不同模块或者不同项目组成员设置的timescale不一致情形。
ncverilog常用选项
三命令(ncvlog、ncelab和ncsim)模式和单命令(ncverilog)模式的选项部分相同,但是三命令模式的选项采用“-”连接各个选项,单命令模式采用“+”来连接各个选项,这不是绝对的。
选项 | 描述 |
+access | 设置仿真对象文件的访问权限,包括读r、写w和连接c,“+”表示增加,“-”表示删除。默认是没有任何权限。 权限:+access+wrc,一般编译时都需要添加该选项;为了正确地记录波形,要使用参数: "+access+rw", 否则没有读写权限。 |
+nc64bit | 调用64-bit版本的ncvlog |
+max_error_count+ | 当错误数量达到指定值时退出。 |
-f file_name | -f 文件,表示被编译的文件存放在文件中 |
+ncerror+ | 将指定为“warning”的消息严重等级提高为“错误”。 |
+ncfatal+< warning | error> | 将指定“warning”或“error”的消息等级提高为“fatal” |
-v | -v 库文件,使用的库文件 |
-y | -y 库文件目录,使用的库文件所在目录,编译module时,如果需要一些器件(与或非等器件),会在库目录下指定后缀的文件中搜索。 |
+libext | +libext+文件后缀,例如: -y lib2 +libext+.v,表示库文件在目录lib2中的.v文件中自动搜索。使用库文件或库目录,只编译需要的模块而不必全部编译。 |
-l | 定义输出的log文件名 |
+ncupdate | 增量仿真 |
+define+ | 定义一个宏 |
+ncdesign_top+ | 编译时,指定设计顶层的module名。 |
+incdir+ | 在指定目录下搜索include文件 |
+sv | 支持systemverilog,如果是单命令模式,默认是支持sv的。 |
+nctimescale+ unit/precision | 为设计中没有指定`timescale的module指定默认的timescale |
+ncoverride_precision | 用nctimescale+选项中指定的时间精度替换整个设计中的时间精度 |
-debug | 等同于+access+rw |
-races | 进行0延时的竞争冒险检查 |
-R | 使用上次产生的快照文件进行仿真 |
-r | 使用指定的快照文件进行仿真 |
覆盖率选项 | |
+nccovdut+ | 指定某个DUT的module进项覆盖率仿真。 |
+nccoverage+ | 仿真时使能某种类型的覆盖率,包括块(block)、表达式(expr)、状态机(fsm)、翻转(toggle)和上述所有(all)。 |
+nccovfile+ | 参数是指定一个文件名,在改文件中配置覆盖率仿真的参数选项。 |
+nccovworkdir+ | 指定覆盖率结果数据集存放的work名称,默认是cov_work/design/test。该选项指定cov_work的名称。 |
+nccovdut+ | 指定覆盖率结果数据集存放的design名称,默认是cov_work/design/test。该选项指定design的名称。 |
+nccovtest | 指定覆盖率结果数据集存放的test名称,默认是cov_work/design/test。该选项指定test的名称。 |
关于时序检查的选项 | |
+nonotifier | Disables 禁用时序检查时的通知(Disable the notifier register) 对应的三命令模式选项是: -nonotifier |
+notimingcheck | 禁止时序检查 对应的三命令模式选项(ncelab选项)是:-notimingchecks |
+delay_mode_unit | 延迟1个仿真时间单位/Delay 1 simulation time unit 对应的ncelab选项是:-delay_mode unit |
+delay_mode_zero | 延时为零,没有延迟 对应的ncelab选项为:-delay_mode zero |
-delay_mode_distributed | 忽略指定模块的延时 对应ncelab的选项: -delay_mode dist |
提高ncverilog仿真效率的命令选项 仿真时,默认是进行时序检查,会降低仿真速率,为了提高仿真效率,通过添加下述选项来禁止时序检查,提高仿真效率: % ncverilog +delay_mode_distributed +notimingcheck +noneg_tchk 或 % ncelab –delay_mode dist –notimingchecks –noneg_tchk | |
提高SDF的精度 后仿时,通过SDF文件将时序信息反标注到设计中。在LDV 3.1以前的版本里,缺省的SDF精度是10ps。从LDV 3.1开始,所有的时序宽度(包括小于10ps的)都允许使用,这样仿真的时序结果更加精确,但是仿真速度会变得更慢。在多数情况下,10ps就足够了,可以通过下述选项来改变SDF精度: ncverilog +ncelabargs+”-sdfprecision 10ps” 或 ncelab –sdf_precision [10ps|1ps|100fs] | |
负时序检查选项 | |
+neg_tchk | 使能负时序检查选项 |
+noneg_tchk | 禁用负时序检查选项 |
ius工具安装路径下有两个较有价值的参考文档:
doc/sysverilog/sysverilog.pdf:根据软件版本提供当时最新的sysverilog 参考书
doc/vlogref/vlogref.pdf : 当前软件配套的非常齐全的verilog参考书
碰到语法和选项等基本问题,基本上查阅这两份文档即可。
END
点个“在看”表示朕 已阅