Intel® Hyperflex™ 体系结构高性能设计手册

ID 683353
日期 10/04/2021
Public
文档目录

2.2.3. 综合期间保留寄存器

通过指定实体级别分配和综合属性,可以在综合处理期间保留特定的寄存器。

例如,Preserve Registers in Synthesis assignment保留在综合期间分配的寄存器,而不会限制Hyper-Retiming优化。同样,您可以指定dont_mergepreserve_syn_only综合属性来保留寄存器,而不会限制重定时优化,如下例所示。

logic  hip_data; /* synthesis preserve_syn_only */
(*preserve_syn_only*) logic hip_data;

Preserve Registers assignment也保留寄存器,但不支持您所分配的寄存器的Hyper-Retimer优化。当想要保留一个寄存器用于调试可观察性时,该assignment很有用。

通过点击Assignments > Assignment Editor,修改.qsf文件,或者在您的RTL中指定综合属性来指定以下任何的综合保留分配。

表 5.  综合保留选项(Synthesis Preserve Options)
分配(Assignment) 描述 允许Fitter优化? Assignment语法
Preserve Registers in Synthesis 防止在综合期间删除寄存器。此设置不会影响Fitter中的重定时和其他优化。 Yes
  • PRESERVE_REGISTER_SYN_ONLY ON|Off -to <entity> .qsf
  • preserve_syn_onlysyn_preservesyn_only(综合属性)
Preserve Fan-Out Free Register Node 防止在综合期间删除没有扇出的已分配寄存器。

PRESERVE_FANOUT_FREE_NODE assignment不能保留一个无扇出的寄存器,此寄存器在Verilog HDL或VHDL模块(其中定义了此寄存器)内没有扇出。要保留这些无扇出的寄存器,请在源文件中实现noprune编译指令(pragma):

(*noprune*)reg r;

如果此模块有多个实例,而只有一些实例需要保留无扇出寄存器,那么在HDL中的寄存器上设置虚拟编译指令(dummy pragma),并设置PRESERVE_FANOUT_FREE_NODE assignment。此虚拟编译指令(dummy pragma)使寄存器综合能够实现分配。例如,为Verilog HDL中的寄存器r设置以下虚拟编译指令(dummy pragma):

(*dummy*)reg r;
Yes
  • PRESERVE_REGISTER_FANOUT_FREE_NODE ON|Off -to <entity> .qsf
  • no_prune on(综合属性)
Preserve Registers 防止在综合过程中对已分配寄存器的删除和顺序优化。顺序网表优化可以消除多余的寄存器以及带恒定驱动器的寄存器。 No
  • PRESERVE_REGISTER ON|Off -to <entity> .qsf
  • preserve, syn_preserve, or keep on(综合属性)