这是一篇关于multicycle exception的Note,文章很详细的介绍了End Multicycle Setup,End Multicycle Hold,
Start Multicycle Setup,Start Multicycle Hold之间的区别,并给出了比较详细的例子。
1.基本概念
- Multicycle Setup:建立关系(setup relationship)定义为latch edge 与 launch edge之间的一系列时钟周期,表达式是latch edge-launch edge。
Setup slack=latch edge+Tclk2-Tsu-(launch edge+Tclk1+Tco+Tdata)
=(latch edge-lanuch edge)+(Tclk2-Tclk1)-(Tsu+Tco+Tdata)
下面这个公式值得注意:
setup check = current latch edge – closest previous launch edge
这个公式是对单周期的分析来说的,多周期只是在latch edge 与 previous launch edge之间插入需要的周期,为了方便以后的说明,定义如下几个缩写:
EMS右移目的时钟的latch edge,SMS左移源时钟的launch edge,但是这样在报告Setup或Hold关系时就会出现负值,
TimeQuest Timing Analyzer不支持负值,它是通过波形的整体右移来解决这个问题。注意对比图3与图4.
Multicycle Hold:hold relationship定义为launch edge and latch edge之间的一系列时钟,表达式是Launch Edge – Latch Edge。
TimeQuest Timing Analyzer进行两种Hold 检查:一种检查当前的launch edge是否被前一latch edge捕获;
一种检查下一launch edge是否被当前的latch edge捕获,公式如下:
Hold check 1 = current launch edge – previous latch edge
Hold check 2 = next launch edge – current latch edge
对于单周期时序分析来说,launch edge – latch edge = 0 clock cycles。
EMH左移目的时钟的latch edge,TimeQuest Timing Analyzer不支持负值,它是通过波形的整体右移来解决这个问题,SMH右移源时钟的launch edge。
还有一些实例,请参考源文件。