• nc-sim (irun)和verdi ncverilog,


     -

    irun有意思的地方,其帮助命令

    irun -helphelp

     irun -helpall

    ---------------

    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库设置起来:

    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

    【开发环境】 irun(ncverilog)无法dump fsdb波形问题解决方法

     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导致;

    二、方法

      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

    irun

    dorada dorada 2012-04-10 18:50:37
     
      >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:
    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] [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>

    附:命令行输入
    !!↙
    是执行上一条命令,
    命令行输入
    !* ↙ (*代表字母)
    是执行最近的以*开头的命令。
    上述附注对命令输入速度提高有所帮助。
  • 相关阅读:
    洛谷 P2370 P2370 yyy2015c01的U盘
    洛谷 P1214 等差数列
    洛谷 P1483 序列变换
    洛谷 P2032 扫描
    洛谷 P2846 光开关
    洛谷 P2872 道路建设
    Codeforces Round #510 #C Array Product
    Codeforces Round #510 #B
    Codeforces Round #510 #A
    关于各种数字倍数的判断
  • 原文地址:https://www.cnblogs.com/e-shannon/p/10411707.html
Copyright © 2020-2023  润新知