自学内容网 自学内容网

vivado KEEP

使用KEEP属性来阻止优化。信号被优化或吸收的地方
在逻辑块中,KEEP属性指示合成工具保持信号不变
并将该信号提取到网表中。
例如,如果一个信号是2位AND门的输出,并且它驱动另一个AND门
KEEP属性可用于防止该信号被合并到更大的LUT中
包含AND门。
KEEP也常与时间约束结合使用。如果有时间
对通常会被优化的信号的约束,KEEP会阻止这种情况,并允许
使用正确的计时规则。
然而,你应该小心不要把KEEP放在不会驱动任何东西的信号上。
合成将保留这些信号,它们可能会在下游造成问题
过程。

注意:模块或实体的端口不支持KEEP。如果需要特定端口
保持不变,要么使用flatn_hierarchy=“none”设置,要么在模块上放置DONT_TOUCH,或者
实体本身。
小心!将KEEP与其他属性一起使用时要小心。在其他属性存在的情况下
与KEEP冲突时,KEEP属性通常优先。
示例:
•当一个信号具有MAX_FANOUT属性,而一个信号则具有KEEP属性时
由第一信号驱动的第二信号;第二个信号上的KEEP属性将
不允许扇出复制。
•当RAM STYLE=“block”时,寄存器上有一个KEEP需要
成为RAM的一部分后,KEEP属性会阻止块RAM
推断。
架构支持
所有架构。
适用对象
•您可以将此属性放置在任何信号、寄存器或导线上。
°集合
°电池

价值观
•TRUE:保持信号。
•FALSE:如果工具做出这样的决定,则允许Vivado合成进行优化。
FALSE值不会强制工具删除信号。默认值为
假的。
建议:仅在RTL中设置此属性。因为需要保留的信号通常是
在读取XDC文件之前进行优化,在RTL中设置此属性可确保使用该属性。
语法
本节中的语法示例展示了如何将此约束与特定工具或
方法。如果未列出工具或方法,则无法对其使用此约束。
Verilog语法
将Verilog约束放在模块或实例化之前。
按如下方式指定Verilog约束:

(* KEEP = “{TRUE|FALSE|SOFT}” *)
Verilog Example
(* keep = “true” *) wire sig1;
assign sig1 = in1 & in2;
assign out1 = sig1 & in2;
VHDL Syntax
Declare the VHDL constraint as follows:
attribute keep : string;
Specify the VHDL constraint as follows:
attribute keep of signal_name : signal is “{TRUE|FALSE}”;
VHDL Example
signal sig1 : std_logic;
attribute keep : string;
attribute keep of sig1 : signal is “true”;
....
....
sig1 <= in1 and in2;
out1 <= sig1 and in3;

原文地址:https://blog.csdn.net/cckkppll/article/details/140723768

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!