-html
irun有意思的地方,其帮助命令linux
irun -helphelpgit
irun -helpallshell
---------------数据库
yxr:简单点说,就是添加动态库的路径名,LD_LIBRARY_PAH,而后调用时添加后端
-loadpli1 debpli:novas_pli_boot 或者 +loadpli1=debpli:novas_pli_boot
原文:https://blog.csdn.net/steven_yan_2014/article/details/41778825
版权声明:本文为博主原创文章,转载请附上博文连接!网络
VCS没法使用的问题困扰了很久,暂且放下,下面要搞定ncverilog和verdi结合使用dump fsdb的问题。函数
其实很简单,若是正确安装了Ncverilog和Verdi,只须要两步就能够搞定。工具
1.设置环境变量,也就是把Verdi的PLI库设置起来:post
export LD_LIBRARY_PATH=/usr/cad/verdi-2012.10/share/PLI/IUS/LINUX/boot:$LD_LIBRARY_PATH
2.在Ncverilog的仿真命令里加入command以下:
+ncaccess+rwc +loadpli1=debpli:novas_pli_boot
好比ncverilog test_top.v +ncaccess+rwc +loadpli1=debpli:novas_pli_boot
而且在test_top.v的initial块种加入fsdbdump的命令
initial begin
$fsdbDumpfile("system.fsdb");
$fsdbDumpvars(0,test_top);
end
---------------------
irun就是cadence verilog/vhdl最新的仿真命令。
最老的是ncvlog/ncvhdl、ncelab、ncsim三步式;
ncverilog和irun相似,均可以理解是脚本命令;真实仿真,仍是依赖三步式的命令。
虽然原理,依然是三步式;但单命令方式,使用起来更简单。
irun,能够认为就是三步式命令。因此支持的功能feature,都是彻底一致的。这一行的话,是我本身理解的。。
ncverilog已通过时,irun是主流。能够查看EDA工具,确认ncverilog就是irun的连接符号。
---------------------
https://www.cnblogs.com/digital-wei/p/6017812.html
2. IRUN运行时出现以下错误:$fsdbDumpfile和$fsdbDumpvars 函数不能识别;
Building instance overlay tables: .................... Done
Generating native compiled code:
worklib.HANDSHAKE_TB:v <0x45f2bf0a>
streams: 1, words: 554
Building instance specific data structures.
Loading native compiled code: .................... Done
Design hierarchy summary:
Instances Unique
Modules: 2 2
Registers: 15 15
Scalar wires: 7 -
Always blocks: 7 7
Initial blocks: 5 5
Cont. assignments: 0 2
Simulation timescale: 100ps
Writing initial simulation snapshot: worklib.HANDSHAKE_TB:v
Loading snapshot worklib.HANDSHAKE_TB:v .................... Done
$fsdbDumpfile("test.fsdb");
|
ncsim: *E,MSSYSTF (./tb.v,75|14): User Defined system task or function ($fsdbDumpfile) registered during elaboration and used within the simulation has not been registered during simulation.
$fsdbDumpvars (0,TB);
|
ncsim: *E,MSSYSTF (./handshake_tb.v,76|14): User Defined system task or function ($fsdbDumpvars) registered during elaboration and used within the simulation has not been registered during simulation.
缘由: irun未能正确加载debpli.so致使;
2、方法
1. 设置LD_LIBRARY_PATH以下:
其中NOVAS_HOME为VERDI安装目录,注意此处CentOS为32位系统,64位系统须要直到的目录;
#32bit CentOS
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$NOVAS_HOME/share/PLI/lib/LINUX:$NOVAS_HOME/share/PLI/IUS/LINUX/boot"
#64bit CentOS
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$NOVAS_HOME/share/PLI/lib/LINUX64:$NOVAS_HOME/share/PLI/IUS/LINUX64/boot"
2. 设置IRUN运行参数以下:
irun -access +rwc -loadpli1 debpli:novas_pli_boot -f XXXXXXX.f
3.设置完成后可正常运行;
--------------------------------------------------------------
https://www.douban.com/note/209157096/
ncverilog 如今叫irun
Ncverilog使用。
2010-05-27 16:31
(转);本人不用c的软件。
在NC自带的帮助Cadence NC-Verilog Simulator Help中均可以找到。
如下整理自网络,有点乱 :(
ncverilog是shell版的,nclaunch是以图形界面为基础的,两者调用相同内核;
ncverilog的执行有三步模式和单步模式,在nclaunch中对应multiple step和single step
ncverilog的三步模式为:ncvlog(编译) ncelab(创建snapshot文件) ncsim(对snapshot文件进行仿真)
基于shell的ncverilog操做(尤为是单步模式)更适合于大批量操做
>ncvlog -f run.f >ncelab tb -access wrc >ncsim tb -gui 第一个命令中,run.f是整个的RTL代码的列表,值得注意的是,咱们须要把tb文件放在首位,这样能够避免出现提示timescale的错误 注意:ncvlog执行之后将产生一个名为INCA_libs的目录和一个名为worklib的目录 第二个命令中,access选项是肯定读取文件的权限。其中的tb是你的tb文件内的模块名字。 注意:ncelab要选择tb文件的module,会在snapshot文件夹下生成snapshot的module文件 第三个命令中,gui选项是加上图形界面 在这种模式下仿真,是用“ - ”的。而下边要说的ncverilog是采用“ + ”的 三命令模式下GUI界面较好用,其对应的命令会在console window中显示 注意:选择snapshot文件夹下生成的module文件进行仿真 单命令模式: >ncverilog +access+wrc rtl +gui 在这里,各参数与三命令模式相同。注意“ + ” 一般都使用单命令模式来跑仿真,但要配置好一些文件 单命令模式下文件的配置: 目录下有源文件、测试台文件、file、run四个文件 在linux下执行source run后再执行simvision来查看 run文件内容: ncverilog +access+rw -f file file文件内容: cnt_tb.v(注意把tb文件放在前) cnt.v tb文件中应该包含: initial begin $shm_open("wave.shm"); //打开波形保存文件wave.shm $shm_probe(cnt_tb,"AS"); //设置探针 end A -- signals of the specific scope 为当前层信号设置探针 S -- Ports of the specified scope and below, excluding library cells C -- Ports of the specified scope and below, including library cells AS -- Signals of the specified scope and below, excluding library cells 为当前层以如下层信号都设置探针,这是最经常使用的设置方法 AC -- Signals of the specified scope and below, including library cells 还有一个 M ,表示当前scope的memories, 能够跟上面的结合使用, "AM" "AMS" "AMC" 什么都不加表示当前scope的ports; $shm_close //关闭数据库 查看结果时能够在source schemic wave register四个窗口同时查看 保存波形信号的方法: 1.SHM数据库能够记录在设计仿真过程当中信号的变化. 它只在probes有效的时间内记录你set probe on的信号的变化. 2.VCD数据库也能够记录在设计仿真过程当中信号的变化. 它只记录你选择的信号的变化. $dumpfile("filename"); //打开数据库 $dumpvars; //depth = all scope = all $dumpvars(0); //depth = all scope = current $dumpvars(1, top.u1); //depth = 1 scope = top.u1 $dumpoff //暂停记录数据改变,信号变化不写入库文件中 $dumpon //从新恢复记录 3.Debussy fsdb数据库也能够记录信号的变化,它的优点是能够跟debussy结合,方便调试. 若是要在ncverilog仿真时,记录信号, 首先要设置debussy: a. setenv LD_LIBRARY_PATH :$LD_LIBRARY_PATH(path for debpli.so file (/share/PLI/nc_xl//nc_loadpli1)) b. while invoking ncverilog use the +ncloadpli1 option. ncverilog -f run.f +debug +ncloadpli1=debpli:deb_PLIPtr fsdb数据库文件的记录方法,是使用$fsdbDumpfile和$fsdbDumpvars系统函数,使用方法参见VCD 注意: 在用ncverilog的时候,为了正确地记录波形,要使用参数: "+access+rw", 不然没有读写权限 ncverilog编译的顺序: ncverilog file1 file2 .... 有时候这些文件存在依存关系,如在file2中要用到在file1中定义的变量,这时候就要注意其编译的顺序是 从后到前,就先编译file2而后才是file2., 信号的强制赋值force: 首先, force语句只能在过程语句中出现,即要在initial 或者 always 中间. 去除force 用 release 语句.; initial begin force sig1 = 1'b1; ... ; release sig1; end, force能够对wire赋值,这时整个net都被赋值; 也能够对reg赋值. Verilog和Ncverilog命令使用库文件或库目录 ex). ncverilog -f run.f -v lib/lib.v -y lib2 +libext+.v //通常编译文件在run.f中, 库文件在lib.v中,lib2目录中的.v文件系统自动搜索,使用库文件或库目录,只编译须要的模块而没必要所有编译 Q:个人files里面只有一个help文件夹,里面是一个叫ncprotect文件,没有你所说的hdl.var文件啊 A: 一、NC-VERILOG在建立工程时会生成两个文件:cds.lib和hdl.var。 二、testbench和DUT固然是不一样的文件。 三、sdf是standard delay format文件,由综合和后端工具产生,供后仿用。 (1) 先创建 cds.lib DEFINE work ./work_lib hdl.var DEFINE WORK work (2) mkdir work_lib (3) ncvlog ..... $>cdsdoc 启动cadence 文档窗口,是文档是html格式的.这里,个人须要先启动firefox,而后才能开cdsdoc。 $> (tool_name) -help $> nchelp [options] tool_name message_code ******* ncsim> help [help_options] [command | all [command_options] 提升NC-Verilog仿真效率的技巧 下面是一些用来禁止时序检查的一些命令行。 % ncverilog +delay_mode_distributed +notimingcheck +noneg_tchk 或 % ncelab –delay_mode dist –notimingchecks –noneg_tchk 下面还列出了关于时序的全局选项: ncverilog option ncelab option +nonotifier -nonotifier Disables notifier register +notimingcheck -notimingchecks Disables timing check +delay_mode_unit -delay_mode unit Delay 1 simulation time unit +delay_mode_zero -delay_mode zero Zero delay +delay_mode_distributed -delay_mode dist Ignores specify block delays 提升SDF的精度 时序信息经过SDF文件传递给一个设计。在LDV 3.1之前的版本里,缺省的SDF精度是10ps。从LDV 3.1开始,全部的时序宽度(包括小于10ps的)都容许使用,这样仿真的时序结果 更加精确,可是仿真变得更慢。在多数状况下,10ps就足够了,所以你也许想用下面的方法来改变精度: % ncverilog +ncelabargs+”-sdfprecision 10ps” <other options> 或 % ncelab –sdf_precision [10ps|1ps|100fs] <other_options> 关于负时序(negative timing)检查 负时序检查有下列的选项: ncverilog option ncelab option +neg_tchk -neg_tchk Still exists for backward compatibility +noneg_tchk -noneg_tchk Sets negative timing checks to zero (matches previous behavior) 设置访问属性 缺省状况下,NC在非调试模式运行,仿真速度很快。能够经过设置访问属性和行调试(line-debug)功能来配置在仿真过程当中信号、模块、和代码的访问属性。这样作下降了仿真 的速度。 若是你想在代码中设置断点,就必须使用行调试选项。该选项对仿真效率影响很是大。 % ncverilog +linedebug <other options> 或 % ncvlog –linedebug <other_options> <verilog_source_files> 也能够设置设计的全局访问属性。下列的命令能够用来配置设计为容许读、写和交叉访问(connectivity access)。 % ncverilog +access+[rwc] <other options> 或 % ncelab –access [rwc] snapshot_name <other_options> r : read capability for waveform dumping, code coverage, etc w : write access for modifying values through PLI or tcl code c : connectivity access to querying drivers and loads in C or tcl 前面曾经提到过,这些选项将下降仿真的速度。读属性是一般要使用的,它对仿真性能影响很是小。 为了给部分对象、模块或实例设置访问属性,能够建立一个访问属性文件,并在文件中说明那些对象的访问属性。而后用在运行 elaborator 时使用 –afile选项。 % ncverilog +ncafile+<access_filename> <other _options> or % ncelab -afile <access_filename> snapshot_name <other_options> % ncsim snapshot_name <other options> 也能够用 –genafile 选项来自动生成访问属性文件。当仿真使用了Tcl、PLI或probing功能,没法提早肯定对象的访问属性,就能够采用自动生成访问属性文件的方法。 Elaborator 在生成仿真快照(snapshot)时会考虑你给出的 –genafile选项;而后,当运行仿真时,Tcl或PLI访问过的对象就会被记录下来。退出仿真的时候,访问属性文件就 生成了。举个例子: % ncverilog +ncgenafile+access.txt <other _options> 或 % ncelab -genafile access.txt test.top <other_options> % ncsim test.top <other options> 仿真运行完成后,生成了一个access.txt 文件。你能够经过 –afile 选项来使用这个文件(象前面介绍的那样): % ncverilog +ncafile+access.txt <other _options> 或 % ncelab -afile access.txt test.top <other_options> 附:命令行输入 !!↙ 是执行上一条命令, 命令行输入 !* ↙ (*表明字母) 是执行最近的以*开头的命令。 上述附注对命令输入速度提升有所帮助。