https://www.cnblogs.com/IClearner/p/6898463.html
SAIF--RTL BACK分析法
RTL backward SAIF文件是通过对RTL代码进行仿真得到的,当设计很大的时候,门级仿真时间就会很长,这时候就可以使用这种方法进行分析。使用这种方法进行分析功耗的速度比较快,但是进度不够门级仿真SAIF文件的高。
①RTL forward SAIF文件
RTL forward SAIF文件是记录RTL设计中综合不变物体的开关行为文件,可以简单地理解:RTL forward SAIF文件简要地记录了综合不变物的翻转率。RTL backward SAIF文件的产生需要RTL forward SAIF文件,因此我们首先需要产生RTL forward SAIF文件。产生RTL forward SAIF文件的流程如
RTL forward SAIF文件是由power compiler (包含在design compiler中)产生的,根据流程,我们知道,主要设置一些变量,然后读入RTL设计(RTL.v设计),接着读出SAIF文件就可以了。相应的脚本如下所示:
set power_preserve_rtl-hier_names true
read_verilog "sub.v top. v"
rtl2saif -output fwd_ rtl.saif
一个示例RTL forward SAIF文件里面的部分内容如下所示:
(SAIFILE
(SAIFVERSION "2 .0")
(DIRECTION "forward")
(DESIGN)
(DATE "Wed May 12 18:31:19 2004
(VENDOR "Synopsys,Inc")
(PROGRAM NAME "rtl2saif")
(VERSION“1 .0")
(DIVIDER/)
(INSTANCE top
(PORT
(address\15\ address\15\)
(address\14\ address\14\)
(address\13\ address\13\)
(address\12\ address\12\)
(address\11\ address\11\)
(address\10\ address\10\)
······
我们可以看到,文件里面包含设计中一系列综合不变的物体。在后续仿真中,仿真器只监视这些物体的开关行为。
②RTL backward SAIF文件的产生
下面是产生RTL backward SAIF文件的流程:
从上图中,我们知道,产生RTL backward SAIF文件,需要在仿真器输入testbench测试平台文件、RTL.v设计、RTL forward SAIF文件,然后使用VCS产生RTL forward SAIF文件时,需要在testbench调用PLI监测节点的翻转率。下面我们就来介绍一下这几个部分。
·首先是PLI。使用VCS产生SAIF文件,需要用到程序设计语言接口(programming language interface,PLI)。通过PLI监测节点的翻转,得到节点的翻转率。主要需要下面的系统任务:
$set_gate_level_monitoring ( on|off|rtl_on);
$set_toggle_region (obj);
$read_ rtl_ saif(rtl_saif_file_name,tb_pathname);
$read_ lib_ saif(lib_saif_file_name);
$toggle_start;
$toggle_stop;
$toggle_reset();
$toggle_report(file_name,type,unit);
· RTL.v就是设计源文件了,然后RTL forwa