我有一个RTL代码。 首先,我在10 ns时合成电路,然后进行合成后仿真。电路运行良好。 之后,我将时序约束更改为7 ns,并使用以下命令重新合成了代码:
compile_ultra -retime
DC报告该电路已满足时序要求(松弛= 0),也没有违反设计规则。但是,网表无法通过综合后仿真。有人知道为什么吗?
答案 0 :(得分:1)
我发现Xilinx门极级仿真在非常高的频率下运行时有一个缺陷。这是10年前,所以事情可能已经改变了!
就我而言,我正在仿真以300MHz运行的逻辑。结果令人困惑,所以我在波形显示中输入了最重要的信号。
问题出在时钟上。时钟树中的延迟是通过将IBUF缓冲区中的所有延迟集中在一起来模拟的。时钟树的行为是净延迟或传输延迟:输入的脉冲将在一段时间后发出。因此,IBUF延迟模型应使用非阻塞延迟:
always @( I)
O <= #delay_time I;
但事实并非如此。相反,它使用标准的O = I;
阻塞语句,该语句带有SDF批注。
因此,如果到缓冲器的输入频率的高/低周期更长,则IBUF延迟将使时钟边沿丢失,并且栅极电平仿真将失败。
我不知道Xilinx是否已解决该问题,但我会说检查一下您的时钟。