使用指定块对时钟进行编码以输出保持时间?

问题描述

您可以按如下方式在指定块中设置模块路径延迟(在这种情况下,DFF 中的 clockq 延迟):

specify
  specparam tPLHc = 4:6:9,tPHLc = 5:8:11;
  (clock *> q) = (tPLHc,tPHLc);
endspecify

换句话说,q 上 0->1 转换的最小延迟是 4 个时间单位,依此类推。然而,这仅给出了 q 上新的有效输出的延迟,并没有指定前一个 q 输出在时钟沿后保持多长时间(或新 {{ 1}} 是有效的)。例如,假设 q 在时钟上升沿后的 2 个时间单位内保持有效,并在 4 个时间单位后采用新值。

有什么方法可以指定输出保持时间,还是必须手动编码?

解决方法

该信息内置于下一阶段的建立/保持要求中。意识到最小/最大延迟是斜率上的统计阈值,而真实的输出斜率取决于输入斜率。这些斜率取决于电阻/电容网络,如果没有模拟分析,您通常无法获得。因此,保持时间必须足够悲观,以便为您提供实际的更糟情况。