我试图了解Verilog幕后发生的事情。为什么不延迟Verilog中的合成?闸门的实际合成是否有什么阻止这种情况的发生?
答案 0 :(得分:5)
为什么不延迟合成
因为众所周知,延迟很难实现。
首先,延迟单元的范围很大。取决于电压和温度,甚至更多:过程,实际延迟可能相差2倍或更多倍。在Verilog中指定2ns的延迟非常简单,制造非常非常非常困难,并且如今(几乎?)如果没有一些参考时钟就无法在硅中实现。我可以想象,如果有人可以合成延迟,则必须将其指定为(min,typ,max)延迟。
在I / O单元,高速串行端口,DDR接口等中发现延迟的地方。这些具有校准或其他学习电路来控制延迟。即使这样,您仍会发现需要定期重新校准以补偿由于温度和电压引起的漂移。
如果您有FPGA,它将变得更加困难。正如您所看到的那样,如今网络上的延迟很大。因此,如果需要2ns的延迟,则必须从延迟单元中减去延迟。如果延迟仅驱动一个门,那同样有效。如果您需要驱动多个端点,则每个端点的延迟都将有所不同,除非您很幸运地知道每个路径具有相同的延迟(长度,电阻和电容)。
最重要的是,您需要一个 可编程 延迟单元。我不知道它们的大小,范围(延迟2秒是多少?)或需要多少。
最重要的是:ASIC / FPGA社区发现延迟会带来更多的麻烦,然后他们解决了。它是那些在大多数情况下往往被证明是“死胡同”的“捷径”之一。
答案 1 :(得分:4)
因为RTL综合工具已选择保留在功能的数字领域。合成延迟需要了解模拟特性和实现细节。
综合工具的工作方式是它们首先采用RTL描述并生成布尔方程组。无法表示布尔代数中的延迟。