目标:

  • 了解ncverilog、irun、xrun之间的关系
  • 了解indago和simvision之间的关系
  • 学习Cadence仿真工具和波形查看工具的基本使用

1. Cadence仿真工具:

① IUS(cadence以前的仿真工具,功能略弱。代表工具,ncverilog):

Cadence仿真模式:单步仿真模式、多步仿真模式

多步仿真模式:使用ncvlog(ncsc,ncvhdl),ncelab,ncsim命令来实现仿真。

  • ncvlog(ncsc,ncvhdl),编译源代码(systemC使用ncsc工具编译;VHDL使用ncvhdl工具编译;Verilog使用ncvlog工具编译)
  • ncelab,对编译的结果,进行描述elaborate,建立snapshot文件
  • ncsim,对snapshot文件进行仿真
示例:
1. ncvlog  -f  run.f
2. ncelab  tb  -access wrc
3. ncsim tb –gui//第一个命令,run.f是整个RTL代码列表, ncvlog执行以后将生成一个名为INCA_libs的目录和一个名为worklib的目录。
//第二个命令,-access选项是确定读取文件的权限,其中的tb是tb文件内的顶层模块名字。ncelba要选择tb文件的顶层module,elaborate之后,会生成snapshot。
//第三个命令,选择snapshot进行仿真,-gui启动图形化界面。

单步仿真模式:早期的IUS,使用ncverilog进行单步仿真模式,ncverilog,内部会自动调用ncvlog,ncelab,ncsim工具进行仿真。从IUS8.1开始,ncverilog命令被替换成irun命令,使用ncverilog,将直接调用irun命令。而irun工具,内部也会自动调用ncvlog,ncelab,ncsim工具进行仿真。

② IES(cadence较早的仿真工具,功能强大。代表工具,irun):

irun是一个脚本,irun支持各种源程序文件输入(verilog,systemverilog,VHDL,verilog AMS,VHDL AMS,specman e,和其他语言程序编写的文件如C,C++),并且使用合适的编译器对其进行编译(.v文件,使用ncvlog;.sv文件,使用ncvlog;.vhd文件,使用ncvhdl;.e文件,使用sn_compile.sh脚本)。当输入的文件都编译完毕后,irun自动启动ncelab,去elaborate,产生snapshot,最后启动ncsim仿真器去仿真snapshot。irun启动后,会在生成目录,自动创建INCA_libs文件夹。

irun常用选项:

选项 说明
-64bit 使用64bit irun模式
-f 指定file list
-vlog_ext 修改verilog文件的默认后缀,如 -vlog_ext .vvv,.vv ,修改verilog的默认后缀为.vvv和.vv
-c 只生成snapshot,不仿真
-access 设置访问权限
-nclibdirpath 指定 INCA_libs 目录
-R 只仿真,需要有提前生成的snapshot
-sv 支持systemverilog语言
-uvm 开启uvm,自动编译uvm库
-uvmhome 指定uvm库位置,CDNS-1.2 默认IES中的uvm-1.2版本
-uvmnoautocompile 不自动编译uvm库
-clean 在run执行之前,删除INCA_libs文件夹
-l 指定输出log文件
-seed 指定随机种子数
-top 指定顶层模块
-hdlvar 指定 hdl.var文件(定义了工具的一些变量)
-cdslib 指定cds.lib文件(定义逻辑库名称和物理存储位置的映射关系)
-loadpli1 指定读取外部读取的库文件
-prep 打开prep mode,不仿真,生成多步仿真的脚本文件。生成4个文件:ncvlog_ver.args: ncvlog工具的参数文件、ncelab.args ncelab工具的参数文件、ncsim.args: ncsim工具的参数文件、RUN_NC: 仿真的脚本文件,调用ncvlog,ncelab,ncsim。
-checkargs 检查irun的输入参数,是否有误
-helpargs 打印每个输入参数的作用
-helpall 打印帮助信息
+xxx=yyy 向验证环境传递仿真参数xxx,值为yyy

③ Xcelium(cadence现在的仿真工具,Incisive(irun)的升级版本。代表工具,xrun):

xrun默认是单步仿真1.  xrun add.v  //自动comp、elab、simxrun设置多步仿真1. comp:
2.   xrun  -compile add.v
3. elab:
4.   xrun  -elaborate add.v   //生成snapshot
5. sim:
6.   xrun  -R   //自动识别snapshot

xrun常用选项:

选项 说明
-64bit 64bit仿真
-sv 识别systemverilog语法
-f <.f .list> 识别文件列表
-access +rwc 在查看波形时,对代码权限设置
-top <> 指定仿真的顶层
-l <.log> 指定仿真log信息目录和名字
-history_file <.history> 指定仿真记录的目录及名字
-q or -Q 不在log中打印仿真总结信息
-noupdate 强制comp和elab必须重新执行
-clean 先清除当前目录下的Xcelium.d再跑仿真
-seed 指定随机数
-licqueue 指定当没有license时,等待
-errormax n n个error后强制结束仿真
-coverage all 生成覆盖率
-covoverwrite 自动覆盖当前覆盖率
-parseinfo include 打印出使用`include包含的文件具体信息
-mcl 轻量级的多core仿真
-notimingcheck 不检查时序
-nospecify specify部分不起作用
-sdf_verbose 展示反标详细信息
-ntc_verbose 负延时信息展示

注:cadence的很多工具,带有nc作为前缀。nc,指native compile,将不同的HDL code转化成一种中间语言(native language),然后统一仿真,为了实现混合语言仿真。

2. Candence的波形查看工具:SimVision

indago是cadence推出的一系列debug工具:Debug analyzer app、Embedded software debug app(简称eswd工具)、Protocol debug app、Simvision。(不确定是否正确)

2.1 SimVision的基本使用

前言:NCverilog 有 shell 和 GUI 两种版本,GUI 版本的叫做 NClaunch,二者调用相同内核;ncverilog的执行有三步模式和单步模式,在nclaunch中对应multiple step和single step。基于shell的ncverilog操作(尤其是单步模式)更适合于大批量操作。ncverilog的波形查看配套软件是simvision。

shell版本下完成仿真后,再打开一个终端输入simvision将会打开 simvision 界面,点击左上角的 File -> Open Database 选择生成的 .shm 文件,点击 Open 即可打开波形。(当更改设计或仿真文件后可以点击左上角 File->Reload Database 重新加载波形)

GUI版本下,启动(终端输入nclaunch,启动图形化界面,通过file>switch to single step切换单步或者多步模式。file>set design directory设置工作目录)、编译(选中在设计时建立的Verilog文件,按下编译器按钮,编译完成后NC-Verilog将产生一个叫INCA_libs的目录以及一个叫worklib的目录。所有设计中的模块都将编译在worklib目录下面)、描述(展开库worklib,选择顶层top-level的单元,然后选择描述按钮 ) 、仿真(展开Snapshots文件夹,选中你想要仿真的snapshot,按下仿真按钮,设计浏览器和控制窗口就会出现,此时进入simvision界面)

五种基本窗口:Design Browser(设计浏览器窗口)、Console(控制窗口)、Waveform(波形窗口)、Schematic Tracer(原理图窗口)、Source Broswer(源浏览器窗口)

基本使用:

1.点击Waveform按钮,可以让选中信号在波形窗口(waveform)中显示

2.点击Schematic按钮,可以查看信号流向原理图

3.点击Source按钮,可以查看选中信号的设计代码

 

3. xrun+simvision仿真环境搭建的makefile示例

         见数字IC学习之语言篇:makefile

参考资料:

NC-verilog仿真工具使用(一)_ncverilog_dxz44444的博客-CSDN博客

Cadence仿真验证工具

数字IC学习之工具篇:NCVerilog+SimVision(Cadence)相关推荐

  1. 我的数字IC学习路线

    引言 很多朋友和我一样也是从FPGA转行入到数字IC,所以对数字IC很多知识也不是很清楚,我也一样不清楚,我想把我的数字IC学习路线记录在此, 全网也没有博客能如此详细的汇总这条路线并且分享出来,本博 ...

  2. 数字IC设计之DC篇:DC流程介绍

    数字IC设计之DC篇:DC流程介绍 综合概念 综合是使用软件的方法来设计硬件, 然后将门级电路实现与优化的工作留给综合工具的 一种设计方法.它是根据一个系统逻辑功能与性能的要求,在一个包含众多结构.功 ...

  3. 超实用数字IC学习资源,来了~~~

    IC老学姐又来咯,今天为大家带来数字IC学习过程中必备资源,主要分为书籍.培训班.竞赛.网络学习资源等.满满干货,快速速收入囊中!

  4. cesium绘制网格_Cesium学习笔记-工具篇37-风场绘制

    这两天重新接触到流场,于是研究下,在大牛们的轮子上也算实现了效果: 1二维 2三维 主要参考以下三篇文章: <WebGL风向图>给出制作风向图通常步骤: 1. 在屏幕上生成一系列随机粒子位 ...

  5. 数字IC之路-SDC篇(一):基本的时序路径约束

    本文转载自IC_learner的博客,转载请标明出处 http://www.cnblogs.com/IClearner/ 时序约束可以很复杂,这里我们先介绍基本的时序路径约束,复杂的时序约束我们将在后 ...

  6. 深度学习学习指南-工具篇

    colab Colab是由Google提供的云计算服务,通过它可以让开发者很方便的使用google的免费资源(CPU.GPU.TPU)来训练自己的模型. 学习经验总结 如何使用命令行? 通过!+cmd ...

  7. 数字IC学习笔记(1)CMOS晶体管原理

    一.物理材料 当以IV族元素(si等)作为基材,参入V族元素(AS)形成n-type,参入Ⅲ族元素(B)则形成p-type. 当n-type和p-type组合在一起则生成一个PN结. P端高压N端低压 ...

  8. 数字IC后端设计技术全局观

    数字IC后端设计flow(不含DFT) 数字IC后端设计工具 DC:用于逻辑综合 FM:用于形式验证 ICC:用于物理实现 PrimeTime:用于STA 步骤(或文件类型)简述 RTL(Regist ...

  9. 超全的2022届数字IC面经汇总来了~

    超全的2022届数字IC面经汇总来了,看看有没有你想去的企业~ 看面经可以帮助你更快地熟悉公司的面试流程和常见的面试问题,从而做到心中有数,在平时也可以针对性地去学习. 点击对应企业链接即可获取面经喔 ...

最新文章

  1. PAT Basic 1072
  2. kotlin学习笔记——集合及集合操作符
  3. java的应用程序开发_开发一个Java应用程序(1)
  4. CheckBox控件
  5. Linux配置网络出现Eroor adding default gateway的解决方案
  6. C++ OpenCV 问题
  7. c语言中用分数表示结果,C语言实例 计算分数的精确值
  8. matlab之简单粒子群的函数寻优
  9. 2021-08-13 初识servlet
  10. Swift 再等等?我的答案是:快上车
  11. 安装SQLServer2008失败
  12. JS JQUERY获取两个时间相差几个月
  13. 痞子衡嵌入式:浅析IAR下调试信息输出机制之硬件UART外设
  14. DAMO-YOLO第三方数据训练教程
  15. Html与CSS快速入门01-基础概念
  16. java解析xml文件并写入Excel表
  17. 【TP5.1】商品列表加载
  18. 绩效面谈的4种技巧(一)
  19. 写在前面——说说我的故事
  20. AES128加密解密

热门文章

  1. item在C语言中是什么意思中文,item的意思在线翻译,解释item中文英文含义,短语词组,音标读音,例句,词源,同义词【澳典网ODict.Net】...
  2. Django配置Bootstrap, js
  3. 从源码一步步学习,Ryan Dahl的Deno实现原理
  4. 干掉微信小程序的繁琐取值和赋值方式,提高开发效率
  5. 软件工程毕设项目推荐 选题汇总
  6. 计算机毕业设计ssm面向智慧课堂的教学过程管理系统evi14系统+程序+源码+lw+远程部署
  7. nRF51822 S130协议 手机蓝牙透传通讯学习
  8. 用Mouse_event()来控制鼠标操作
  9. Myeclipse下PHP开发环境搭建及运行
  10. Erlang NIF浅析