在后仿真中,SDF(Standard Delay Format)文件用于描述设计的时序信息,而IOPATH是SDF中的一个关键结构,用于定义单元间的路径延迟。以下是IOPATH关键字的用法及其相关内容的详细介绍:
IOPATH结构旨在将延迟数据应用于输入到单元间的输出路径延迟。其基本格式如下:
- A:表示该timing arc的起点,通常为cell的输入pin。
- Y:表示该timing arc的终点,通常为cell的输出pin。
- rise_delay:表示上升沿延迟,第一个圆括号内是该timing arc对应的上升延迟。
- fall_delay:表示下降沿延迟,第二个圆括号内是该timing arc对应的下降延迟。
在圆括号内,延迟值通常用三个值表示,分别对应最小延迟(min delay)、典型延迟(typical delay)和最大延迟(max delay),这三个值之间用冒号分隔。
IOPATH,一般指的是cell内的input to output的delay。
把第1条IOPATH拎出来做一下解释。
IOPATH是关键字,无须多说;posedge i1是这条IOPATH的start point,o1是end point;后面的(2:3:4)和(4:5:6),分别指的是o1在rise和fall时的delay。
被两个冒号所间隔开的3个值,分别对应着MIN : TYPICAL : MAX,在反标sdf时(比如test bench中使用的$sdf_annotate语句)会指定其中一种。
比如说,如果在$sdf_annotate中指定了MIN,那么,posedge i1如果导致了o1从0跳变为1,则delay值为(2:3:4)中的2,如果posedge i1导致了o1从1跳变为0,则delay值为(4:5:6)中的4。
“posedge i1”这两个单词是一个整体,如果发生了i1从1至0/x/z的跳变(即negedge i1),则不会走这一条。
另外,MIN的值并非一定小于MAX,是有可能大于MAX的,比如,可能会出现(4:3:2)这样的情况,它也是合法的。
情形1: