目标
帮助你理解复杂设计
当发现bug时,帮助你快速追踪到根源
在一个统一且友好的环境中做调试和验证
目标受众
结构工程师
开发工程师
验证工程师
必要条件
基本的HDL/HVL编程能力:Verlog,VHDL,System Verilog,SVA
熟悉标准的仿真器
摘要
技术背景
建立环境
理解FSDB Dumping(存储)任务和重用性
输入设计
在源代码界面调试
在波形界面调试
在原理图界面调试
在FSM界面调试
在时序界面调试
附录:常用参数
术语:
RMB Right Mouse Button 鼠标右键
MMB 鼠标中键
LMB 鼠标左键
DC 双击
D&D 拖拽
KDB 知识数据库模块
FSDB 快速信号数据库
TFV 时序界面
BA 行为分析
技术背景
在设计流程中调试
ESL RTL Gate
设计 SCAN 时序
构建行为 设计(定位)
Testbench 验证交互正式回归 编译器 扫描 收敛 验证交互方式
IP遗产 断言属性 仿真/加速
你知道你的团队调试花费多少时间吗?
你会用那个时间做什么?
阻碍有效调试
复杂设计
更难理解
复杂的行为
复杂设计引起并影响方案
增加验正条件
复杂的多用工具、多组环境
混合方法复杂性
Novas解决艰难的调试问题问题
复杂环境
复杂行为
复杂设计
理解 自动化 统一
增加自动化 Verdi
强大的理解和调试
Novas技术
编译器和接口 数据库 分析引擎 形象化
→知识数据库→行为分析 时序界面
↓ 结构分析 源代码
工具的全范围→FSDB →断言评价 → 波形/事件
事件数据库 事务/信息分析 原理/结构
FSM/流表
断言/信息/事务
理解调试系统——不只简单的形象化
结构/事件调试过程
当前过程包括比较时间、代码和结构在多种窗口跟踪可能的问题。
——浪费时间,容易出错,复杂
自动调试过程决定生产力的提高
在调试过程方面利用基于行为调试来自动化时间消耗
时间和结构在一个界面中
设计行为的直接行为
自动的起因/影响追踪
快速理解问题区域
缩短你用传统方法调试的时间
建立环境
目标
建立环境
完成这一章节后,你应该能够……
运行之前建立环境
指定路径和环境变量
二进制、许可、符号库
使用建立文件——novas.rc
指定参数
理解FSDB转存任务重用性
快速信号数据库介绍(FSDB)
用仿真器链接Novas项目文件为了FSDB转存
FSDB重用
指定路径和环境变量
二进制文件
设置环境变量NOVAS_INST_DIR<Novas安装路径>
设置路径=($NOVAS_INST_DIR/bin $path)
许可文件
设置环境变量NOVAS_LICENSE_FILE
<licence_file>:$NOVAS_LICENSE_FILE
或者使用LM_LICENSE_FILE
搜索优先权比NOVAS_LICENSE_FILE低
符号库背景
为什么使用符号库?
提供源代码和逻辑元件之间的映射。
没有符号映射
活跃的扇入锥,扇入锥和扇出锥原理不会正常工作
原理图将仅展示方框而不是逻辑单元。
使用符号库
使用下列任一方法创建符号库:
syn2SymDB:对于Synopsys逻辑库文件用ASCⅡ格式(.lob)
map2SymDB:对于准备好的映射文件
从<verdi_install>/doc/Symbol_Library.pdf查看开发人员指南文件得到详细格式。
设置符号库环境变量
setenv NOVAS_LIBS”<LIB ROOT#1><LIB ROOT#2>…”
setenv NOVAS_LIBPATHS”<Directory#1><Drectory#2>…”
通过GUI(图形用户界面)设置符号库
调用Tools→Preferences命令来打开参数格式;选择文件夹Schematics→SymbolLibrary
在Symbol LibraryNames 区域输入符号库名称
在Symbol Library Paths输入区域
该设置将会保存到novas.rc源文件
使用创建文件——novas.tc
包括:
为预编译的设计映射信息
映射一个库文件名到一个物理定位
映射格式
[library]
logical name=物理地址(例pack=./work)
pack=./library/pack (例vital=./work)
用户参数(设置方式Tools→Preferences)
指定路径
使用NOVAS_RC环境变量。
setenv NOVAS_RC <path>/novas.rc
在命令行直接通过-rcFile<文件名>
搜索顺序:
1.-rcFile<文件名>命令行选项(读/写指针)
2.NOVAS_RC环境变量(读/写指针)
3../novas.rc
4.$HOME/novas.rc
5.<Verdi instal>/etc/novas.rc
指定参数
摘要
1.通过从窗口调用Tools→Preferences打开参数设置
(1)修改被保存在novas.rc源文件中的格式
(2)在Find栏搜索关键词
2.参考目录以得到常用参数
快速信号数据库(FSDB)
介绍
1.包含仿真信号数据的压缩二进制文件格式
2.开放文件格式以便其他支持工具能转存数据,例如:Verisity、Vera、Ikos等。
3.VHDL和Verilog都可以在仿真期间使用系统任务来转存数据;
常用系统任务
1.fsdbDumpfile——指定FSDB文件名,限制FSDB文件大小
(1)通过用户滑动窗口机制来保留FSDB文件中的最后信号值,如果文件大小超过了限制就扇出旧的值。
2.fsdbDumpvars——转存信号指定实例和深度的变化。
(1)也能够指定FSDB文件名,在每个fsdbDumpvars命令中可以指定不同的FSDB文件名
3.fsdbDumpon/fsdbDumpoff——开/关FADB转存
(1)能指定FSDB文件名来开/关FSDB文件
4.fsdbSwitchDumpfile——转换转存到其他FSDB文件
5.fsdbAutoSwitchDumpFile——限制FSDB文件大小并自动转换转存到新FSDB文件
注1:以上任务是对VHDL仿真而言的,在Verilog仿真中要加上“
$”前缀
注2:要得到更多的系统任务,请参考Linking NovasFiles with Simulators和Enabling FSDB
Dumping(<NOVAS_INST_DIR>/doc/linking_dumping.pdf)
为FSDB转存链接Novas项目文件
1.创建工具环境变量
(1)setenvLM_LICENSE_FILE<simulator_license_file>
(2)<Simulator>_INST_DIR
(3)NOVAS_INST_DIR
(4)使用LD_LIBRARY_PATH来指定适合被分享的项目文件,常用库放在
${NOVAS_INST_DIR}/share/PLI/lib
setenvLD_LIBRARY_PATH
${NOVAS_INST_DIR}/share/PLI/<simulator>/<platform>;
${NOVAS_INST_DIR}/share/PLI/lib/<platform>;
支持的仿真器:VCS/IUS/MODELSIM
2.创建工作裤并为仿真编译设计
3.在仿真器命令提示符上运行并调试FSDB转存函数。
注意:要得到更多的仿真器链接细节,请参考<NOVAS_INST_DIR>/doc/linking_dumping,pdf文件
FSDB重用批处理FSDB文件
1.vfast
VCD文件转换成FSDB文件
2.fsdb2vcd
FSDB文件转换成VCD文件
3.fsdbextract
从现有的没有再仿真的FSDB文件提取信号、范围、时间周期
4.fsdbmerge
将几个FSDB文件合并为1个
5.fsdbreport
生成一个指定信号值变化的报告
注:使用<utility> -h 列出所有选项或查看Verdi Command Reference 获取更多信息
注:参考Verdi Command Reference中的Utilities章节获取完整的实用列表
总结
在这一节,你学到了:
1.在运行Verdi之前怎样建立环境;
2.怎样指定参数
3.怎样理解FSDB转存任务和实用。
输入设计:
目标
输入设计
完成本节后,你应该能够:
1.在命令行输入设计
(1)从文件
(2)从库
(3)通过重复运行一个TCL(终端控制语言)命令文件
2.从GUI(图形用户界面)导入设计
(1)从文件
(2)从库
在命令行导入设计
从文件
Verdi [Verdi 选项] [你的Verilog选项]
1.在命令行参考源文件(仅Verilog)
2.Verdi所有的Verilog命令行选项
%verdi -f <文件列表> +定义+充分利用你的时间
%verdi <源文件1> <源文件2> …
* 文件列表有一个包含Verilog源文件和任何命令行转换器的文件。
%verdi -ssv-vlib.v +libext+.v-ssy-y/src/abc-y/src/def top.v
*-ssv和-ssy对于指定的带有-v和-y的设计文件只需要一次,
top.v是设计文件。
在命令行导入设计
从库
1.编译一次,加载多次;
2.保存加载时间和全部记忆;
3.对于混合语言或VHDL设计是有必要的,对于仅用Verilog语言设计是可选择的;
4.预编译设计进入库:
vericom用于Verilog代码,vhdlcom用于VHDL代码
$ vericom -lib <库名> block1.v block2.v block3.v
$ vhdlcom -lib <库名> block1.vhd block2.vhd block3.vhd
5.然后导入编译后的库并指定顶层模块
$ verdi -lib <库名> -top TopBlock
例:
$ verdi -lib work -top system
在命令行导入设计
通过重复运行一个TCL命令文件
1.在VVerdi中每一个被执行的TCL命令都有一个相对应的TCL命令被保存在./verdiLog/verdi.cmd文件
(1)该文件能被复制和修改到自动化常用命令;
(2)随后新文件能够使用:%verdi -play <文件>.cmd 在Verdi中再次运行。
2.如何修改一个verdi.cmd文件,例:
如果你不在相同路径下再次运行这个文件就要修改run.f的路径;
执行Verdi -palyverdi.cmd之前要删除最后一行。从GUI导入设计
从文件
1.进入verdi命令行启动Verdi;
2.使用File→Import Design或Import Design图标
来导入你的设计。
(1)选择From File标签
(2)指定语言
(3)指定运行文件或单个的源文件
(4)支持映射文件来设置一个Virtual Top.
*参考Verdi应用培训获取Virtual Top的详细内容
3.不建议用于VHDL
从GUI导入设计
从库
1.进入verdi命令行启动Verdi
2.使用File→Import Design或Import Design图标
来导入你的设计。
(1)选择From Library标签
(2)指定库和顶层模块
(3)支持映射文件来设置一个Virtual Top.
*参考Verdi应用培训获取Virtual Top的详细内容
总结
在本节中,你学习了:
1.怎样用命令行导入设计
(1)从文件
(2)从库(3)通过重复运行TCL命令文件
2.怎么从GUI导入设计
(1)从文件
(2)从库
目标
在源代码界面调试
学完本节,你应该能够:
1.打开nTrace窗口
2.查找并折叠层次浏览器
3.遍历源代码
(1)发现操作;
(2)使用书签;
(3)折叠源代码;
(4)提示显示隐含的端口;
(5)双击鼠标显示所有器件。
4.在信号上操作
(1)追踪信号——驱动、负载、连通性、扇入、扇出;
(2)使能够方便的注释;
(3)方便地进行追踪。
5.其他相关的界面