时序逻辑电路模块中的时间延迟是否会影响合成或放置或路由的结果?

时间:2017-08-16 03:59:51

标签: vhdl verilog fpga

我使用Xilinx ISE作为IDE。 如果我在always(Verilog)/进程(VHDL)中的每个赋值中添加100 ps延迟,敏感列表只有时钟和复位。 像这样。

always@(posedge clk)
    if(rst)
      a <= #100 'd0;
    else
      a <= #100 b;
    end 

我认为延迟功能只影响模拟过程。因为每本书和用户指南都告诉我们delay不可综合。

但我仍然想知道延迟功能是否能真正影响地点或路线的结果?如静态时序或时钟报告? 就像可以使电路最大频率更高或更慢?

4 个答案:

答案 0 :(得分:3)

当代码中的#delay加载到FPGA上时,不会影响设计的时序。

它也不会影响布局布线结果或静态时序分析。这两个步骤都使用制造商以设备模型的形式提供的时序信息。

答案 1 :(得分:2)

你是正确的,没有任何内在的延迟语句使它们不可合成,但尝试这样做是非常不切实际的。这样做的原因是,一旦在FPGA上处理物理电路,其性能随PVT(工艺,电压,温度)而变化,并且可以大量实现!对此唯一的对冲将是一个模拟电路,试图感知上述所有并相应地调整自己。这样的野兽在它能做的事情上仍然会受到限制,并且体力庞大且耗电很大,这取决于延迟的变化以及你想要支持的所有上述方面的差异。

因此,考虑到在特殊用途IO之外对此的需求非常少(读取:否),FPGA供应商不会提供任何此类组件,使构造无法解析。

答案 2 :(得分:1)

在Verilog的综合过程中,通常会忽略延迟语句(#100)。所以在综合中它与:

相同
always@(posedge clk)
    if(rst)
      a <= 0;
    else
      a <= b;
    end 

Xlinx Synthesis and Simuation Design Guide声明:

  

合成代码中的延迟

     

请勿使用等待XX ns(VHDL)或#XX(Verilog)语句   你的代码。 (...)此语句不会合成到组件。   在包含这种结构的设计中,功能包括   模拟设计并不总是与功能相匹配   合成设计。

     

(...)

     

等待XX ns语句Verilog编码示例

     

#XX;

     

不要在VHDL代码或Delay中使用After XX ns语句   在Verilog代码中分配

     

(...)

     

延迟分配Verilog编码示例

     

assign #XX Q=0;

     

XX指定在a之前必须经过的纳秒数   条件被执行。这句话通常被忽略   综合工具。在这种情况下,模拟的功能   设计与综合设计的功能不匹配。

答案 3 :(得分:0)

“通常”对合成和P&amp; R结果没有影响。

  

Xilinx:综合工具忽略了通常这句话。

什么时候有影响?

虽然综合工具忽略了延迟语句,但HDL代码略有不同。这可能会改变任何阶段(解析,精化,合成等)的随机化种子,因此可能会产生不同的结果。这些结果可能更好或更差。

如果代码中存在延迟语句,则Xilinx ISE需要以下警告:

  

警告:Xst:916 - design.v line x:合成时忽略延迟。

相关问题