You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quartus-FPGA路径优化禁用咨询:如何保留多级非门延迟路径

FPGA中保留多级非门延迟路径的方法
module path1(out, in, w0, w1, w2, w3, w4, w5, w6, w7, w8, w9);
input in;
output out;

output w0, w1, w2, w3, w4, w5, w6, w7, w8, w9;

not(w0, in);
not(w1, w0);
not(w2, w1);
not(w3, w2);
not(w4, w3);
not(w5, w4);
not(w6, w5);
not(w7, w6);
not(w8, w7);
not(out, w8);
endmodule

我设计了上述模块,原本想通过10级非门串联产生输出延迟,在FPGA硬件中实现指定延迟效果。但查看Quartus的RTL Viewer时发现,工具直接对路径做了逻辑优化,输出和输入被直连,完全没保留10级非门的延迟路径。我已经把所有中间线网都设为输出,没用;尝试在Fitter Settings里禁用相关优化选项,也没效果;甚至用LCELL原语来搭建路径,结果还是没产生延迟,RTL Viewer里依然只显示直连总线。请问该怎么构建这条延迟路径?能不能彻底禁用这类逻辑优化?


解决方法

  • 强制实例化FPGA专用原语:放弃普通not门,直接调用目标FPGA系列的缓冲/延迟原语(如Altera的LCELL),且给每个原语的输出添加物理位置约束,指定到不同的逻辑单元,避免工具合并优化。
  • 添加时序约束锁定延迟:在SDC约束文件中给输入in到输出out设置最小延迟,强制工具保留足够逻辑满足要求,示例:
    set_min_delay -from [get_ports in] -to [get_ports out] 1000ps
    
    延迟值根据需求调整,确保工具无法通过直连满足约束。
  • 模块级禁用优化属性:在模块开头添加综合属性,直接禁止对该模块的冗余逻辑移除等优化:
    (* altera_attribute = "-name AUTO_SHIFT_REGISTER_RECOGNITION OFF; -name REMOVE_REDUNDANT_LOGIC OFF" *)
    module path1(...);
    
    同时在Quartus的Compiler Settings中关闭“Remove redundant logic”“Collapse duplicate logic”等全局优化选项。
  • 插入触发器打破逻辑等价:若上述方法无效,可在非门之间插入寄存器,虽会变成同步延迟,但能彻底避免工具逻辑合并,适用于对延迟类型要求不严格的场景。

内容的提问来源于stack exchange,提问作者zibidigonzales

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 18:15:16