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

Using a specify block to code a clock to output hold time?

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

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

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

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

该信息已纳入下一阶段的 setup/hold 要求中。意识到 min/max 延迟是斜率上的统计阈值,真正的输出斜率取决于输入斜率。这些斜率取决于 resistance/capacitance 网络,如果没有模拟分析,您通常无法获得这些网络。因此,保持时间必须足够悲观,以便为您提供实际的最坏情况。