RETAIN TIME指的是从输入变化后开始计算,输出保持的时间。过了RETAIN TIME后,输出会出现一段X态,直到最终稳定。网表的sdf文件里面会标注路径的RETAIN信息,比如一个两输入的与门:
and u(qout, d1, d2);
specify
(d1 => qout) = (10);
(d2 => qout) = (10);
endspecify
它的sdf反标信息如下:
(IOPATH d1 qout (RETAIN (5)) (10) )
(IOPATH d2 qout (15) )
在vcs仿真器中,我们可以通过编译参数来控制这一行为。
- 正常仿真时,其波形如下:
- 编译选项加入-sdfretain后,RETAIN信息就会在波形上体现出来:
- 编译选项加入-sdfretain -xlrm alt_retain后,那些不会让输出发生变化的RETAIN信息和X态(红圈处)就不会体现了。vcs中称这一模式为optimistic mode,因为减少了仿真事件的调度,所以会对仿真速度有一定的优化:
PS1.这部分感觉vcs手册中也说的不是很清楚,后面如果有空,再跑仿真确认下。下面是截取的一段手册说明:
Currently, when you use the -sdfretain option, SDF retain is visible whenever there is a change in related inputs.
When you specify the -sdfretain option with -xlrm alt_retain, SDF retain is visible only when there is a change in the output. This new behavior is called optimistic mode.
PS2.选项中的alt应该就是选择的意思,让vcs自己决定哪些不需要的信息可以被优化。