【发布时间】:2019-02-14 04:34:29
【问题描述】:
我试图了解 Verilog 的幕后情况。为什么不在 Verilog 中进行延迟合成?防止这种情况发生的门的实际合成是否发生了什么?
【问题讨论】:
标签: verilog
我试图了解 Verilog 的幕后情况。为什么不在 Verilog 中进行延迟合成?防止这种情况发生的门的实际合成是否发生了什么?
【问题讨论】:
标签: verilog
为什么不合成延迟
因为众所周知,延迟难以实施。
首先:延迟单元有很大的范围。取决于电压和温度,甚至更多:过程,实际延迟可能会变化 2 倍或更多。在 Verilog 中指定 2ns 的延迟非常简单,但制作起来非常非常困难,而且现在(几乎?)在没有参考时钟的情况下无法在硅中实现。我可以想象,如果有人可以合成延迟,您必须将它们指定为 (min,typ,max) 延迟。
您发现延迟的地方是 I/O 单元、高速 SER-DES 端口、DDR 接口等。它们具有校准或其他一些学习电路来控制延迟。即使这样,您也会发现需要定期重新校准以补偿温度和电压引起的漂移。
如果您有 FPGA,那就更难了。正如你在时间安排中看到的那样,现在的大部分延迟都在网络上。因此,如果您想要 2ns 的延迟,您必须减去延迟单元的延迟。仅当延迟仅驱动一个门时,这才有效。如果您需要驱动多个端点,则每个端点的延迟都会有所不同,除非您足够幸运,每条路径都具有相同的延迟(长度、电阻和电容。)
除此之外,您还需要一个可编程延迟单元。我不知道它们有多大,范围是多少(延迟 2 秒怎么样?)或者你需要多少。
底线:ASIC/FPGA 社区发现延迟造成的麻烦比他们解决的问题多。这是在大多数情况下往往被证明是“死胡同”的“捷径”之一。
【讨论】:
因为 RTL 综合工具选择保留在功能的数字域中。综合延迟需要了解模拟特性和实现细节。
综合工具的工作方式是它们首先采用 RTL 描述并生成一组布尔方程。在布尔代数中没有办法表示延迟。
【讨论】:
【讨论】: