为什么我的所有寄存器都保留了,即使我只打算保留单独的寄存器?-Altera-Intel社区-FPGA CPLD-ChipDebug

为什么我的所有寄存器都保留了,即使我只打算保留单独的寄存器?

在Quartus®II软件中,某些将保留属性应用于Verilog HDL代码中的寄存器的方法可能会导致Quartus II Integrated Synthesis工具错误地将该属性应用于该模块中的所有寄存器。在模块内的所有寄存器上设置preserve属性可能会阻止Quartus II Integrated Synthesis工具推断状态机或内部存储器块。

特别是,如果您使用Verilog-2001语法在模块的端口列表中声明output reg端口变量,则会发生此行为,但使用Verilog-1995注释样式语法将preserve属性应用于该端口变量。例如,如果Verilog HDL代码中模块的端口列表包含类似于以下内容的语法,则模块中的所有寄存器将错误地应用保留属性:
output reg my_reg /* synthesis syn_preserve = 1 */,

要解决此问题,请使用Verilog-2001属性语法在使用Verilog-2001语法在端口列表中对变量类型进行decare时应用preserve属性。例如:
(* syn_preserve *) output reg my_reg,

请登录后发表评论

    没有回复内容