为什么延迟不能在verilog中综合?

Ana*_*and 3 verilog vhdl system-verilog vlsi asic

我一直读到 RTL 代码中声明的延迟永远无法被综合。它们仅用于模拟目的,现代综合工具只会忽略代码中的延迟声明。

例如:将被综合工具x = #10 y;视为。x = y;

有人可以解释一下为什么无法综合任何硬件描述语言(即VHDL、Verilog 或Sytem-Verilog)中的延迟声明吗?

Mor*_*gan 5

在 Verilog 中,我们可以隐含改变时钟边沿值的逻辑,并将其综合为触发器。我们可以暗示非时钟布尔逻辑,这综合为组合逻辑,只是一堆 AND 和 OR。

在综合时钟树时,综合工具通过添加延迟来平衡这些时钟树,以便所有节点同时接收时钟,因此综合工具似乎确实具有添加延迟的能力。

然而,当制造 ASIC 时,速度会有所不同,在高水平上可以被视为慢速、典型和快速。实际上,这些角有数百种变体,其中硅中的某些类型的器件运行速度快,而其他类型的器件运行速度慢。

硅的这些角也有温度额定值,最坏的情况可能是 +140C 快速硅和 -40C 慢速硅。在这种情况下,通过缓冲器的延迟变化可能是 1ns 到 30ns。

如果将其带回 Verilog,如果#10可以综合,您实际上会得到 155+-145,即 10ns 到 300ns,如果您还设计了一些东西作为#20同一接口或控制结构的一部分,它将具有 20ns 到 600ns 的范围。因此,整个事情对你的设计来说并不真正有效。

时钟树的设计方式可以限制最大和最小延迟,以便时钟树上的所有节点都可以相对于彼此进行缩放。他们从来没有被给予如此严格的规则,因为#10ns这在物理上不可能在组合电路中保证。