M1踪迹:内部-慢例外并不总是受到尊重,如果他们重叠-Xilinx-AMD社区-FPGA CPLD-ChipDebug

M1踪迹:内部-慢例外并不总是受到尊重,如果他们重叠

描述

描述:

在某些情况下,试图在给定的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,所以慢异常之间没有重叠。

请登录后发表评论

    没有回复内容