You are on page 1of 7

Cadence 数字仿真工具 Xcelium(xrun)

一、基础操作篇
1,查看 xrun 是否已经在 linux 环境下安装

$ which xrun // 打印 xrun 的路径(确保 xrun 可以直接被调用)

$ xrun -version // 查看 xrun 的版本信息

2,如何使用 xrun 跑仿真

xrun 默认是单步仿真,即一个命令完成 compile、elaborate、sim


三个阶段。

例如: xrun test.v // 一个命令仿真完成

3,如何把仿真分成三步进行

compile : xrun -compile test.v

elaborate : xrun -elaborate test.v (若在 elaborate 之前未做


compile,当前 elaborate 会自动执行 compile)

sim : xrun -R (会在当前目录自动检测 elaborate 生成


的 snapshot,load 后进行仿真)

4,基础仿真 option

option usage

-64 64bit 模式
-sv 支持 systemverilog 语言

-access +rwc 设置访问权限(读、写、可执行)

-timescale 1ns/1ps 设置仿真时间精度

-f <filename> 扫描文件

-top 指定仿真的顶层

-l <filename> 指定仿真 log 的路径和名字(不指定,默


认为 xrun.log)

-errormax n 指定 error 数到达 n 时,仿真 exit

-parseinfo include 将 compile 阶段 include 的信息打印出来

5,使用 help 快速查找

$ xrun -helpargs <option> // 打印出 xrun 的 option 作用及用法

$ xrun -helpall > xrun_all_option.txt //生成包含所有 option 的


txt 文件,方便查找选项。(共 1521 个 option, 但大家不用担心,常用
的有限)

$ xmhelp <tool name> <tool error> // 当仿真报错,进一步查看错


误类型及原因 。tool name (xmvlog、xmelab、xmsim 三个仿真阶段)
例如:当 log 上出现一个*E :
二、进阶篇
1,xrun 的默认重载特性

若之前进行过 compile 或 elaborate,xrun 会去检测代码是否有修改,


若无,默认直接重新载入。若想无论如何都重新 compile,elaborate,
可添加 option : -clean

2, xrun 生成的 xcelium.d 目录有什么作用

经过 compile 阶段生成的 library 和 elaborate 阶段生成的 snapshot


存放的文件夹。

可以通过 xrun 自带的工具查看 snapshot 生成情况如下(注意 xmls 默


认查找 32bit 的 snapshot, 若仿真工具是 64bit,查找时需加上-64)。
3,各类波形文件的生成

一般都是通过输入脚本 tcl 来实现的。例如:-input wave.tcl

1)shm 类型,供 SimVision 使用

2)db 类型,供 Indago 使用

3)fsdb 类型,供 Verdi 使用

同时必须加上 option: 来保证仿真器识别 fsdb 相关 task

-loadpli1 ${FSDB_INST_DIR}/…/boot/debpli.so:novas_pli_boot

4,如何收集覆盖率

需添加选择收集哪方面覆盖率 option: -coverage <> 可选


B,E,F,T,U,All 含义如下:
一般还需添加一个 option: -covoverwrite (打开对覆盖率的重
载功能

5,如何进行 gate level simulation

通过$sdf_annotate 将延时文件反标到门级网标中

-notimingcheck 不做时序检查

-nospecify specify 不起作用(没延时,时序检查)

-sdf_verbose 展示反标的具体信息

-tfile tcheck.file 关闭某个 module 的时序检查

其中 tcheck.file 写法规则:

PATH test.dut.ff_i0 -tcheck // 关闭 ff_i0 的 timing check

PATH test.dut_i $setup -tcheck // 关闭 dut 的 setup timing check

PATH test... -tcheck // 关闭 test 所有下属层次 timing check

6,各种特殊场景下用到的 option

语法扩展相关 option

option usage example

-sysv_ext <ext> 将指定文件识别为 sv -sysv_ext .sv11

-vlog_ext <ext> 将指定文件识别为 verilog -vlog_ext .v11

生成各个组件 time, 内存消耗信息


-profile 生成文件 profile.out,包含检查 license 时间,
各组件消耗仿真时间

-profoutput <file> 指定一个文件存放 profile 信息,而不是默认文


件 profile.out

三、debug 篇
1,仿真报错如何 debug

例如:

在 elaborate 阶段报了一个隐式名字在 hierarchy 出错了。这时候我们会


一头雾水对这个错误,此时可以通过第一章提到的 help 选项查看错误具
体原因。

通过问题描述和代码结合,大致定位在这。

在使用 generate 时没有按照 verilog 标准写法给定名称。此时我们可以


按照标准写法加上名称,也可以去 https://support.cadence.com 上查找
关键字:CUVIMG 。将会发现添加 option : -genhier 可以放宽对其
的语法检查。

2,license 报错怎么 debug

例如:xmsim: *F,NOLICN: Unable to checkout license for the simulation. 'lic_error -18'.

Xrun 只有在 simulation 阶段才会检测 license。

1) 可能是当前服务器上有 4 个 xrun 的 license,但是提交了 5 个


xrun 的 job,这时候你需要加上 option: -licqueue
用第一章提到的 help 选项即可查看作用:

2) 也可能是你没有某些 feature 的 license。这时使用 linux 命令


“ lmstat -a -c $LM_LICENSE_FILE” or “lmstat -a -c
$CDS_LIC_FILE”((取决于那个变量指向 license)去打印
license 安装信息。

3,当仿真器看起来像是挂死了怎么办

1) 首先检查波形是否增加,即仿真时间是否在前进。
2) 需要通过 linedebug 来进行具体定位了。添加 option: -gui
-linedebug
3) 添加 option: -profile ;查看生成的 profout 的 license
check 时间,通常为 0.1s。如果特别长,代表仿真仿真卡在等待
license 上。
4) 如果是 gate level 仿真,也可能是零延迟门级震荡,加上
option: -gateloopwarn 。将会打印具体信息。

You might also like