-

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

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

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:

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”

% ncelab –sdf_precision [10ps|1ps|100fs]

关于负时序(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

% ncvlog –linedebug

也可以设置设计的全局访问属性。下列的命令可以用来配置设计为允许读、写和交叉访问(connectivity access)。

% ncverilog +access+[rwc]

% ncelab –access [rwc] snapshot_name

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+

or

% ncelab -afile snapshot_name

% ncsim snapshot_name

也可以用 –genafile 选项来自动生成访问属性文件。当仿真使用了Tcl、PLI或probing功能,无法提前确定对象的访问属性,就可以采用自动生成访问属性文件的方法。

Elaborator 在生成仿真快照(snapshot)时会考虑你给出的 –genafile选项;然后,当运行仿真时,Tcl或PLI访问过的对象就会被记录下来。退出仿真的时候,访问属性文件就

生成了。举个例子:

% ncverilog +ncgenafile+access.txt

% ncelab -genafile access.txt test.top

% ncsim test.top

仿真运行完成后,生成了一个access.txt 文件。你可以通过 –afile 选项来使用这个文件(象前面介绍的那样):

% ncverilog +ncafile+access.txt

% ncelab -afile access.txt test.top

附:命令行输入

!!↙

是执行上一条命令,

命令行输入

!* ↙ (*代表字母)

是执行最近的以*开头的命令。

上述附注对命令输入速度提高有所帮助。

ncverilog脚本_nc-sim (irun)和verdi ncverilog,相关推荐

  1. ncvlog帮助文档存放路径_nc-sim (irun)和verdi ncverilog,

    - irun有意思的地方,其帮助命令 irun -helphelp irun -helpall --------------- yxr:简单点说,就是添加动态库的路径名,LD_LIBRARY_PAH, ...

  2. linux如何运行verilog,linux系统下ncverilog的详细命令linux系统下ncverilog的详细命令.doc...

    linux系统下ncverilog的详细命令linux系统下ncverilog的详细命令 ncverilog: 08.10-p002: (c) Copyright 1995-2008 Cadence ...

  3. ncverilog脚本_基于脚本和test bench的ncverilog ASIC仿真实例分析

    基于脚本和 test bench 的 ncverilog ASIC 仿真实例分析 本文以一个虚拟的 xlab 项目为例,基于 linux OS 平台,详细分析了通过 testbench 和仿 真模型等 ...

  4. ncverilog脚本_Ncverilog 常用命令使用详解 | 学步园

    作者:5life #A s E*O0S4D }+kDICDER      工作状态:建立仿真环境数字,集成电路,IC,FAQ,Design compiler,数字信号处理,滤波器,DSP,VCS,NC ...

  5. ncverilog脚本_NC-Verilog仿真详解

    ncverilog仿真详解 发表在ASIC/FPGA/汇编, 学习笔记, 编程开发 | 由阿布 | 十一月26, 2011 | 0标签: ncverilog, 仿真 数位IC工具简介--Simulat ...

  6. ncverilog脚本_NcVerilog_工作学习记录.pdf

    VCS 篇 基本选项及命令介绍 Vcs 选项里面通过 –v 加库,-f file_list(该文件里面为 rtl 代码或测例), 或直接加.v/.sv 文件时,需要注意,文件内容一定为 module ...

  7. 数字IC设计随笔之一(Verdi自动添加波形脚本应用)

    Verdi自动添加波形脚本应用 在刚接触verdi时,每次查看波形都需要重新加载一遍,写了简单的脚本用于实现波形加载,没想到下载需求挺多,也有私信问如何使用,在这里将做简单的说明. 脚本有三个文件,分 ...

  8. verdi使用linux命令,verdi工具的使用

    debussy(verdi之前的Debug工具) verdi:若想用Verdi观察波形,需要在仿真时生成fsdb文件,而fsdb在vcs或者modelsim中的生成是通过两个系统调用$fsdbDump ...

  9. Verdi基础知识整理

    Verdi主要在以下方面使用 Verdi使用情形: IC验证工程师(Debug) IC设计工程师(Review) 学习目标主要以下三方面: 能够生成fsdb波形: 能够查看fsdb波形: 能够追踪RT ...

  10. 转 | cadence验证仿真工具IUS,IES,irun和xrun

    以下内容均转自http://www.lujun.org.cn/?p=3714 IUS和IES cadence,有两大验证仿真工具.一个是IUS,一个是IES. IUS是cadence以前的仿真工具,功 ...

最新文章

  1. jqgrid如何渲染表格数据_jqgrid,jquery_jqGrid pivot 增加分项小计,jqgrid,jquery,jquery插件,javascript,表格 - phpStudy...
  2. HTTPS访问站点,出现证书问题解决
  3. RedHat(Linux) Oracle数据库设置开机自启动
  4. struts 中的创建Action的三种方法
  5. GDCM:gdcm::ImageChangeTransferSyntax的测试程序
  6. mlflow_使用MLflow跟踪进行超参数调整
  7. web服务器文档根目录在哪里,web服务器根目录在哪
  8. java json 嵌套解析_我们如何解析Java中的嵌套JSON对象?
  9. oracle主机修改IP后客户端无法连接
  10. win10-如何管理开机启动项?
  11. GB35114---SM3withSM2证书生成及读取(二)
  12. 网易轻舟服务网格数据面性能优化实践
  13. 需求与商业模式分析-6-五个课题
  14. Gradle 2.0 用户指南翻译——第二十三章. Java 插件
  15. Problem fzu 2027 单词问题
  16. java多人聊天室与网络画板
  17. 【Unity开发小技巧】iOS APP下载安装时,如果出现此时无法下载安装APP的字样时,一些解决思路
  18. MySQL MGR 安装
  19. _nop_();的由来和作用
  20. 计算机保研面试题——计算机网络

热门文章

  1. 用python祝福父亲节_python 计算 父亲节
  2. 利用SQL查询扶贫对象医保报销比率的审计方法
  3. Windows Live Writer 代码插件改造
  4. 博客留言外链是否有用?
  5. 在B站看猫片被老板发现?不如按下F12学学HTTP
  6. 计算机网络-IP协议
  7. HTML5 codecademy
  8. 研究生北大计算机双学位,北京大学2018年本科双学位招生通知
  9. Vue -脚手架的安装
  10. linux7 域名解析,CentOS 7之DNS域名解析