描述
我正在尝试使用RTL级别属性(例如,在VHDL和Verilog代码中)对某些信号进行扇出控制:
--! VHDL version
SIGNAL state_signal : std_logic_vector(31 downto 0);
ATTRIBUTE syn_maxfan of state_signal " SIGNAL is "8"
// Verilog version
logic [31:0] state_signal /* synthesis syn_maxfan=8 */;
我还尝试在Synplify Pro中进行编译时在FDC文件中设置约束,例如:
define_attribute {state_signal} syn_maxfan 8
当在ACE中编译时,这些扇出约束不受约束。如何通过ACE一直控制信号扇出?是否需要启用约束文件的前向注释?
回答
由于Achronix设计流程使用两种工具,一种用于综合,一种用于布局和布线,因此有必要使用两种属性来控制扇出。
The attribute syn_maxfan
is only recognized by Synplify Pro, which then applies the attribute to the netlist. Upon reading the netlist, ACE applies only its own fan-out algorithms. For ACE, the relevant attribute is fanout_limit
. 必须在使用PDC文件的ACE运行期间应用此约束。
对于上面的示例信号,PDC文件中需要以下内容。
set_property fanout_limit 8 [find {*state_signal*} -nets]
生产率提示
要在ACE中测试.pdc文件,请执行 运行准备 仅(在流程上单击鼠标右键,然后选择 运行选定的流程步骤)。此操作将读取网表并执行任何重新合成。下一步是然后尝试 找 Tcl控制台中的命令,以确保您具有正确的搜索字符串。
Achronix recommends using a trailing wildcard as both Synplify Pro and ACE can add suffixes to a signal (state_signal_ret
, state_signal_z1
, etc.). Once you have proven the search string, add it to the project PDC file. When 运行准备 is now run, the log displays whether fanout_limit
has been successfully applied to the net.
The fanout_limit
attribute is described in the ACE Users Guide, under 概念 → 先进概念 → ACE Verilog属性.
注意: 对于施加了扇出限制的任何信号,ACE都会插入缓冲区以复制信号并减少扇出。要了解如何应用这些限制以及如何进行管理,请参阅 如何控制ACE中的缓冲区插入?