<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
部分内容译自Altera应用笔记
AN 481: Applying Multicycle Exceptions in the TimeQuest Timing Analyzer
多周期建立时间 Multicycle Setup
建立时间关系(setup relationship)被定义为在发射沿(launch edge)和锁存沿(latch edge)之间一定数量的时钟周期数(Latch Edge – Launch Edge)。对于每个寄存器到寄存器(register-to-register)的路径,TimeQuest Timing Analyzer 会计算该路径的建立时间余量。建立时间余量的计算如公式1(Equation 1)所示。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
当执行建立时间检查时,距离目的寄存器的 latch edge 最近的那个源时钟launch edge 即为该路径检查的 launch edge。
特权同学刚郁闷了为什么在一个reg2pin的分析中,使用20ns的source clk和一个8ns的destination clk(virtual clk)进行output delay分析时,竟然出现了launch edge = 20ns,latch edge = 24ns的奇怪现象。按常理想,我觉得应该分别是launch edge = 0ns,latch edge = 8ns才对啊。呵呵,这里给出了解答。因为对于一个20ns的源时钟和一个8ns的目的时钟来说,如果我们把他们的0起点对齐,就会发现每个8ns时刻(比如8ns,16ns,24ns,32ns,40ns为一个循环周期)寻找它们最近的一个源时钟(比如0ns,20ns为一个循环周期),那么一定发现目的时钟的24ns和源时钟的20ns是最近的,TimeQuest Timing Analyzer在默认情况下就是如此寻找两个edge的,那么在对于这样的不同频率的时钟进行路径分析时大家可要注意了。
setup check = current latch edge - closest previous launch edge
而一个多周期建立时间(multicycle setup),其建立时间检查将有所不同。
默认情况下,TimeQuest Timing Analyzer执行单周期建立时间分析,这将导致建立时间关系(setup relationship)总是等于一个时钟周期(Latch Edge – Launch Edge)。通过多周期建立时间值(multicycle setup value)添加到设计约束中,建立时间关系(setup relationship)将会得到增强——或者说是缓解。
EMS(End Multicycle Setup)模式通过默认锁存沿的右移修改了目的时钟的锁存沿,Figure 2展示了各种EMS值及其相应的锁存沿。
EMS值(时钟周期数量)为锁存沿相对发射沿的右移时钟周期个数。
SMS(Start Multicycle Setup)模式是通过左移默认源时钟的锁存沿。Figure 3显示了各种SMS值及其相应的发射沿。
Table 2展示了SDC命令在TimeQuest Timing Analyzer中应用于EMS和SMS中。
TimeQuest Timing Analyzer不会报告负的建立时间和保持时间关系。当一个负的建立时间或者负的保持时间被计算在内时,TimeQuest Timing Analyzer移动发射沿和锁存沿以使其满足建立时间和保持时间关系。
Figure 4显示了由TimeQuest报告的Figure 3中的负的建立时间。
乍一看,没太明白上面Figure 3和Figure 4都是表示的SMS模式下Launch edge和latch edge的关系,但是为什么又有所不同。其实仔细看资料,发现F3是实际的一种SMS模式时钟沿变化的一种情况,而F4则是TimerQuest分析中的一个模型。
多周期保持时间 Multicycle Hold
保持时间关系(hold relationship)被定义为在发射沿和锁存沿之间一定数量的时钟周期数(Launch Edge – Latch Edge)。对于每个寄存器到寄存器路径而言, TimeQuest Timing Analyzer会为其计算保持时间余量。保持时间余量的计算参看Equation 2。
The TimeQuest Timing Analyzer执行两个保持时间检查。第一次保持时间检查用于确定当前发射沿的数据不会被前一个锁存沿捕获。第二个保持时间检查用于确定下一个发射沿的数据不会被当前锁存沿捕获。
hold check 1 = current launch edge - previous latch edge
hold check 2 = next launch edge - current latch edge
TimeQuest Timing Analyzer为每个可能的建立时间执行保持时间检查,而不只是最坏的建立时间关系。然而,只有最坏的时间关系会被报告。
如果一个保持时间检查和建立时间检查重叠了,那么保持时间检查将被忽略。
通常情况下,对于单一周期的保持时间分析,保持时间关系被定义为Equation 3。
保持时间关系也是指在发射沿和锁存沿之间的一定数量的时钟周期。正如建立时间的分析,TimeQuest Timing Analyzer默认进行单周期的保持时间分析。如果你的实际有多周期关系,应用多周期命令分配放宽被作为单周期保持时间计算的保持时间关系。多周期保持时间通过添加多个指定时钟周期放宽了保持时间余量等式。
EMH左移默认的锁存沿。Figure 6展示了各钟EMH值及其相应的锁存沿。
TimeQuest Timing Analyzer不会报告负的建立时间和保持时间关系。当计算到一个负的建立时间或者保持时间关系时,TimeQuest Timing Analyzer移动锁存沿和发射沿以满足建立和保持时间关系。
Figure 6展示了由TimeQuest Timing Analyzer报告的Figure 5中负的保持时间对应的保持时间关系。
SMH右移默认发射沿对应的锁存沿。Figure 7展示了各种SMH值及其对应的发射沿。
Table 3展示了EMH和SMH应用在TimeQuest Timing Analyzer中的SDC命令。
用户377235 2012-10-27 22:02
有没有自己做过得电路,并测试通过的电路发上来,供大家学习一下
用户1638247 2011-7-16 15:41
coyoo 2009-8-12 09:53
ilove314_323192455 2009-8-11 18:37
coyoo 2009-8-11 15:54