描述
描述:
在某些情况下,试图在给定的TimeSPEC上创建多个慢异常的用户会发现其中一个不被尊重。“慢异常”是一个定时约束,它规定给定定时约束子集的慢(或不同)定时(即,如果有一个周期约束,适用于触发器A、B、C、D、E和
你希望路径B & GT;C比一般的周期约束慢,那么你可以从一个更高的优先级添加到只控制B->C路径的约束。
该图表示三个约束;其中两个约束应该是周期约束的缓慢表达式。注意每个慢速异常将覆盖一个独立的周期约束子集,没有重叠。这不会引起问题。
———————————————-
周期约束
γ
“/”—————————–
慢例外(慢例外)
(1×2)
βi
“—————————–”
(2)
如果两个慢速异常重叠,则会出现问题。如果PCF中出现较慢异常的异常1,后面是慢异常α2,那么由慢异常α2覆盖的路径不会从周期约束中移除。
———————————————-
周期约束
γ
[/—————–
慢例外
(1)
“-/——————-”
“慢例外”
〔2〕
“—————–”
第二类
“—————–/”
(2)
γ
交叉!
在给定的设计中,这将发生的情况并不容易识别,但下面将在示例的上下文中讨论原因。
假设一个设计有一个周期约束,而后面有两个:规格,其中每一个从:到规范是一个缓慢的例外。
NET MyCalm时段=50;
TimeGRP“IORSs”=FFS(a):FFS(b);
TIMESPEC TS02=从“IORS”到FFS 75;
TimeGRP“MyRez”=FFS(a):FFS(b):FFS(C);
TimeStTS03=从“MyRez”到FFS 100;
让我们假设时间GRP FFS包含寄存器BELS“A”、“B”、“C”、“D”和“E”。让我们假设,从“A”、“B”、“C”和“D”到“E”都有路径,周期约束所描述的电路看起来像:
一
\
B-
——E
C/-
/
D
这里,由周期规范描述的一组路径是:
{(a,e),(b,e),(c,e),(d,e)}
好的,现在考虑规范TS02,它指定了覆盖从“A”和“B”到“E”的路径的周期规范(TS01)的子集:
一
\
B-
——E
这里,由TS02描述的一组路径是:
{(a,e),(b,e)}
现在考虑最大延迟规格TS03,它也是周期规范(TS01)的一个子集,涵盖从“A”、“B”、“C”到“E”的路径:
一
\
B-
——E
C/-
这里,由TS03描述的一组路径是:
{(a,e),(b,e),(c,e)}
问题是,在Max延迟规范TS03中描述的路径(C,E)没有从周期规范(TS01)中删除,因此请求的慢异常不被尊重。这是一个合理的要求,因为规范TS03要求从“C”到“E”的路径被放宽。
出现问题是因为先前的规范TS02实际上在TS03被检查为TS01之前修改了周期规范(TS01)。首先,TS02中指定的路径从TS01中移除,产生以下电路:
——E
C/-
/
D
路径设置{(c,e),(d,e)}。随后,TS03针对慢例外检查TS01,不幸的是,TS03指定不再在TS01中的路径(A,E)和(B,E)!正因为如此,TS03不再是TS01的子集(也不是超集),并且慢执行不被尊重。两个集合(C,E)之间有一个交集,但是时序向导不在电路交叉点(仅子集)上操作。
解决方案
没有简单的解决办法。必须调整TimeScript,所以慢异常之间没有重叠。
没有回复内容