使用指定块对时钟进行编码以输出保持时间?
Using a specify block to code a clock to output hold time?
您可以在指定块中设置模块路径延迟,如下所示(在这种情况下,DFF 中的 clock
到 q
延迟):
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 网络,如果没有模拟分析,您通常无法获得这些网络。因此,保持时间必须足够悲观,以便为您提供实际的最坏情况。
您可以在指定块中设置模块路径延迟,如下所示(在这种情况下,DFF 中的 clock
到 q
延迟):
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 网络,如果没有模拟分析,您通常无法获得这些网络。因此,保持时间必须足够悲观,以便为您提供实际的最坏情况。