Xilinx, 如何防止寄存器被优化掉?
我在XST综合时,未接输出端口的寄存器被优化掉了,但我需要保留这些寄存器以获得一些功耗方面的信息。
请问如果约束优化,使这些寄存器得以保存下来呢?
谢谢!
attribute keep : string;
attribute keep of signal_name: signal is “true”;
将寄存器输出做一个逻辑,从一个没有用的io脚输出
一般常用的做法是将需要保留的寄存器通过不同的引脚进行输出
我也遇到了这个问题,但是不知道怎样在Verilog代码里添加综合选项,2楼的朋友给出的方法是VHDL代码下的吧。求VerilogHDL下防止寄存器被综合器优化掉的方法,多谢!
add synthesis directive as followed,
reg a /* synthesis syn_preserve = 1*/;
2 楼正解
Verilog里也可以加keep属性的
谢谢分享,最近正在学,希望有帮助
注意:人家问的是在ISE的XST综合工具,你们回答的都是在QII的综合工具或者Synplify综合工具中的防止寄存器优化的约束,我试了就没一个好用的,悲剧,看清楚再回答啊!
在这个BUF两端的信号线上加上下面的属性(Verilog HDL版本):
wire bufin /* synthesis syn_keep=1 xc_props="X" */;
具体解释:
1、syn_keep=1就是保留这个信号线,是它成为一个instance(synplify的),然后就可以对它添加XILINX的约束属性;
2、xc_props=“”是synplify为XILINX保留留的约束属性,可以透传到ISE的实现中去,从而约束实现过程。
3、“X”属性是在MAP时识别的KEEP属性,如果用XST综合就只需要在信号线的两端加上X属性就可以透传到MAP中去。但是synplify并不能识别,因此需要通过以上的方法将X属性透传到MAP中去。
类似在 VHDL中也适用
attribute syn_keep of temp01 : signal is true;
attribute xc_props of temp01 : signal is "X";
可以试下(* KEEP="TRUE" *)
