说实话这个不太懂,没用过也没有遇到相应的情况(或者说我不知道)。大家可以更多的去参考特定约束FROM TO和MicroZed开发板笔记,第72部分:多周期约束等内容。
“A timing exception is needed when the logic behaves in a way that is not timed correctly by default.”
前面谈时序约束的时候,略去了Path specific exceptions。'Path specific exceptions'可以直接理解为特别指定的路径例外。我们自然希望软件帮我们做好绝大多数事情,既然存在这个例外,那么说明软件在知道了OFFSET 和 PERIOD之后,还有并不知晓的时序要求。所以这个时序要求需要我们人为指定。这可能有多种情况,一下分别说明(注意,From to 我也没用过,所以可能不对……)
多周期(Multi-Cycle)约束
在上图的例子中,默认的分析方式是Q和D之间数据在下一个时钟沿捕获,也就意味着逻辑延时要小于一个时钟周期(其他影响因素均不考虑,认为是0) 。这一例子下图就是默认的分析方法下时序图,可以看到这里约束的requirement是1个clk,也就意味这是一个单周期时间的约束。多周期约束,故名思议就是这一段长度是多个时钟周期。为何可以是多个时钟周期取决以设计本身,但是工具不能够智能的分析出结果,需要人为指定,这就是多周期约束。
多周期约束的一个例子来自于特定约束FROM TO,类似的如下图所示,软件的默认分析结果是1个clk,但是显然由于电路逻辑的缘故,约束可以是2个clk。默认的分析结果是不对的(或说不好),我们需要认为的指定约束。
多周期约束的写法类似,可参考特定约束FROM TO 图2.
NET "CLKIX" TNM_NET = "CLKIX"; TIMESPEC "TS_CLKIX" = PERTOD "CLKlX" 5.0 ns HIGH 50%; NET ENABLE TNM_NET = SLOW_FFS;
TIMESPEC TS_SLOWPATH = FROM SLOW_FFS TO SLOW_FFS TS_CLK1X*2;