在严格约束下合成时电路出错

时间:2019-01-23 02:10:58

标签: verilog synthesis

我有一个RTL代码。 首先,我在10 ns时合成电路,然后进行合成后仿真。电路运行良好。 之后,我将时序约束更改为7 ns,并使用以下命令重新合成了代码:

compile_ultra -retime

DC报告该电路已满足时序要求(松弛= 0),也没有违反设计规则。但是,网表无法通过综合后仿真。有人知道为什么吗?

1 个答案:

答案 0 :(得分:1)

我发现Xilinx门极级仿真在非常高的频率下运行时有一个缺陷。这是10年前,所以事情可能已经改变了!

就我而言,我正在仿真以300MHz运行的逻辑。结果令人困惑,所以我在波形显示中输入了最重要的信号。

问题出在时钟上。时钟树中的延迟是通过将IBUF缓冲区中的所有延迟集中在一起来模拟的。时钟树的行为是净延迟或传输延迟:输入的脉冲将在一段时间后发出。因此,IBUF延迟模型应使用非阻塞延迟:

always @( I) 
   O <= #delay_time I;

但事实并非如此。相反,它使用标准的O = I;阻塞语句,该语句带有SDF批注。 因此,如果到缓冲器的输入频率的高/低周期更长,则IBUF延迟将使时钟边沿丢失,并且栅极电平仿真将失败。

我不知道Xilinx是否已解决该问题,但我会说检查一下您的时钟。