NC-Verilog Simulator

在NC自带的帮助Cadence NC-Verilog Simulator Help中都可以找到。

nc verilog 是shell版的,nclaunch是以图形 界面 为基础的,二者调用相同 内核
ncverilog的执行有三步模式和单步模式,在nclaunch中对应mult ip le step和single step
ncverilog的三步模式为:ncvlog(编译) ncelab(建立snapshot文件) ncsim(对snapshot文件进行 仿真 )
基于shell的ncverilog操作(尤其是单步模式)更适合于大批量操作
ncverilog的波形查看配套软件是simvision,其中包含原理图、波形、信号流等查看方式

三命令模式:
   >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. VC D数据库也可以记录在设计仿真过程中信号的变化. 它只记录你选择的信号的变化.
      $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:
1、NC-VERILOG在创建工程时会生成两个文件:cds.lib和hdl.var。
2、testbench和DUT当然是不同的文件。
3、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] [ com mand | 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 dum ping , 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>

附:命令行输入
!!↙
是执行上一条命令,
命令行输入
!* ↙   (*代表字母)
是执行最近的以*开头的命令。
上述附注对命令输入速度提高有所帮助
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值