Vivado综合属性系列之七 DONT TOUCH

目录

一、前言

二、DONT TOUCH

    ​    ​2.1  属性说明

    ​    ​2.2 属性用法

     ​   ​2.3 工程代码

    ​    ​2.4 参考资料


一、前言

    ​    ​设计中经常会遇到一些信号,模块等被综合工具优化,而实际这些部分确是我们所需要的,针对这种情况,DONT TOUCH属性可以满足我们的需求,该属性使用频率较高。

二、DONT TOUCH

    ​    ​2.1  属性说明

    ​    ​DONT TOUCH可以用于代替属性KEEP和KEEP HIERARCHY,与两者仅作用于综合阶段,DONT TOUCH可以作用范围包含布局和布线阶段,依旧可以保持不被优化。当和其他属性冲突时,DONT TOUCH的优先级最高。

    ​    ​2.2 属性用法

    ​    ​DONT TOUCH作用对象包括信号,模块,以及网表,格式为(*DONT_TOUCH=VALUE*),属性值VALUE可设为TRUE/FALSE或yes/no;

作用于信号:(*DONT_TOUCH="YES"*) wire signal;

作用于模块:(*DONT_TOUCH="YES"*) module module_test(in,out);

作用于例化单元:(*DONT_TOUCH="YES"*) inst  inst_example(.in(in),.out(out));

    ​    ​通常,DONT_TOUCH属性不建议使用在XDC文件中,因为对于信号来说,通常优化是发生在工具读取XDC文件前,因此设置属性可能导致无效。唯一一种推荐使用到XDC中的场景是当RTL代码中使用了DONT TOUCH属性并设置为yes时,想让该属性不生效但又不想改变RTL设计时,可以在XDC文件中再次进行DONT TOUCH属性设置为no的设置,此时后者设置生效,信号将会被优化。

     ​   ​2.3 工程代码

module DONT_TOUCH(in1,in2,out );

input in1,in2;

(*DONT_TOUCH="YES"*) wire temp;

output out;

assign temp=in1&in2;

assign out=temp&in1;

endmodule

未使用DONT_TOUCH属性时,结果如下图,使用了一个LUT2来实现,temp信号已经被优化掉

添加DONT_TOUCH属性后,结果如下图,信号temp依旧保留,并且使用了两个LUT2实现逻辑。

    ​    ​2.4 参考资料

用户手册:《ug901-vivado-synthesis.pdf》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值