此帖出自FPGA/CPLD论坛
最新回复
LDV3.4(S1)
使用NC-Verilog内置的profiler
NC-Verilog在仿真引擎内开发了一个profiler工具。该工具每秒中断仿真器100次,并将终端时的结构记录下来,生成一个日志文件。日志文件里列出了被中断次数最多的模块、代码行和结构类型。这些信息可以帮助你诊断是哪些代码或模块在仿真时耗费了最多的时间。通过修改这些模块,就能提升仿真效率。
Profiler功能很容易启动,并对仿真只产生非常小的影响。
% ncverilog +ncprofile <other_options>
or
% ncsim –profile snapshot_name <other_options>
在仿真结束时,profiler会创建一个日志文件(ncprof.out),文件里列出了profile运行的细节。关于如何利用profiler日志文件,可参考Cadence在线文档(Cadence NC-Verilog Simulator Help, Version 3.4, Chapter 14)。
禁止时序验证来提升效率
缺省情况下,如果在设计中考虑了时序,NC-Sim将进行标准延迟格式(SDF)的全时序标注(annotation),并在仿真时检查时序。在进行功能验证时,如果你不需要仿真时序,就可以通过禁止一些时序检查功能来提高NC-Sim的仿真速度。这样虽然不能验证时序,但是提高了仿真效率,减少了仿真内存需求。
下面是一些用来禁止时序检查的一些命令行。
% 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
Cadence LDV 3.3(2001年7月)增加了通过一个时序控制文件来为各个模块设置时序选项的功能。你可以模块为单位来设置是否进行时序检查,是否允许I/O路径延迟、端口延迟、库单元延迟和全时序检查。时序控制文件里要写明要配置的实例(instance)。命令行语法是:
% ncverilog +nctfile <timing_ctl_file> <other options>
或
% ncelab –tfile <timing_ctl_file> snapshot_name <other_options>
时序控制文件的语法在Cadence 在线文档(Cadence NC-Verilog Simulator Help, Version 3.4, Chapter 8)中可以找到。
提高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)检查
LDV 3.3缺省的仿真配置为负时序检查。这样,LDV 3.3和以前的版本的仿真结果就有所不同。
负时序检查有下列的选项:
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>
访问属性文件的语法可在Cadence 在线文档(Cadence NC-Verilog Simulator Help, Version 3.4, Chapter 8) 中找到。
详情
回复
发表于 2010-11-11 10:52
| ||
|
||
此帖出自FPGA/CPLD论坛
| ||
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/ 欢迎光临网上店铺! |
||
EEWorld Datasheet 技术支持