DONT_TOUCH

DONT_TOUCH

DONT_TOUCH指示工具不优化用户层次结构、实例化组件或

信号,以便优化不会跨模块边界发生,或者消除

对象虽然这可以帮助进行布图规划、分析和调试,但它可以抑制

优化,导致更大、更慢的设计。

重要提示:Xilinx建议在RTL源文件中设置此属性。需要的信号

keep经常在读取XDC文件之前进行优化。因此,在RTL中设置此属性可确保

使用该属性。

DONT_TOUCH属性的工作方式与KEEP或KEEP_HIERARCHY相同;然而

与KEEP和KEEP_HIERARCHY不同,DONT_TOUCH被前向注释为位置和路线

以防止实现过程中的逻辑优化。DONT_TOUCH对的影响

各种对象如下:

•基本实例:不要删除该实例。但是,该工具可以连接或

断开实例的引脚。

•分层实例:不要删除实例或添加或删除的任何引脚

例子该工具可以连接或断开引脚,并优化内部的逻辑

hiearchical模块。但是,优化不能将逻辑移入或移出

分层模块。这是对实例的层次边界的约束。

提示:使用DONT_TOUCH应用程序注册层次实例的所有输出。

•分层网络:不要移除网络,也不要连接或断开网络上的任何引脚。

提示:在分层网络上,DONT_TOUCH将只保留它所连接的分层段,

因此,您需要将其附加到要保留的所有线段上。

在模块或实体的各个端口中不支持DONT_TOUCH。如果需要

保留将DONT_TOUCH放在模块本身上的特定端口,或者使用以下Vivado

合成设置:

flatten_hierarchy="无"

使用DONT_TOUCH、KEEP或KEEP_HIERARCHY时要小心。在其他情况下

属性与DONT_TOUCH冲突时,DONT_TOUCH属性优先。

适用对象

•此属性可以放置在任何信号、层次模块或基元实例上。

°单元格(get_Cells)

°网络(get_Nets)

价值观

•FALSE:允许跨层次结构进行优化。这是默认设置。

•TRUE:通过不允许跨层次结构进行优化来保留层次结构

边界保留实例化的组件或网络以防止其

优化出了设计。
Syntax
Verilog Syntax
Place the Verilog attribute immediately before the user hierarchy instantiation:
(* DONT_TOUCH = "{TRUE|FALSE}" *)
Verilog Syntax Example
// Preserve the hierarchy of instance CLK1_rst_sync
(* DONT_TOUCH = "TRUE" *) reset_sync #(
.STAGES(5)
) CLK1_rst_sync (
.RST_IN(RST | ~LOCKED),
.CLK(clk1_100mhz),
.RST_OUT(rst_clk1)
);
Wire Example
(* dont_touch = "true" *) wire sig1;
assign sig1 = in1 & in2;
assign out1 = sig1 & in2;
Module Example
(* DONT_TOUCH = "true|yes" *)
module example_dt_ver
(clk,
In1,
In2,
out1);
Instance Example
(* DONT_TOUCH = "true|yes" *) example_dt_ver U0
(.clk(clk),
.in1(a),
.in2(b),
out1(c));
VHDL Syntax
Declare the VHDL attribute as follows:
attribute DONT_TOUCH : string;
Specify the VHDL attribute as follows:
attribute DONT_TOUCH of name: label is "{TRUE|FALSE}";
Where
• name is the instance name of a user defined instance.
VHDL Syntax Example
attribute DONT_TOUCH : string;
-- Preserve the hierarchy of instance CLK1_rst_sync
attribute DONT_TOUCH of CLK1_rst_sync: label is "TRUE";
...
CLK1_rst_sync : reset_sync
PORT MAP (
RST_IN => RST_LOCKED,
CLK => clk1_100mhz,
RST_OUT => rst_clk1
);
XDC Syntax
set_property DONT_TOUCH {TRUE|FALSE} get_cells \< *instance_name* \>
set_property DONT_TOUCH {TRUE|FALSE} get_nets \< *net_name* \>
Where:
• instance_name is a leaf cell or hierarchical cell.
• net_name is the name of a hierarchical net.
XDC Syntax Example

Preserve the hierarchy of instance CLK1_rst_sync

set_property DONT_TOUCH TRUE get_cells CLK1_rst_sync

Preserve all segments of the hierarchical net named by the Tcl variables

set_property DONT_TOUCH get_nets -segments $hier_net

相关推荐
物质波波波13 小时前
WS-RPE:面向边缘物理AI实时特征值计算的硬件工作窃取调度器与冗余PE激活架构
人工智能·fpga开发·架构·系统架构·硬件架构
我爱C编程16 小时前
基于FPGA的DSB调制解调系统verilog开发
fpga开发·verilog·fpga·dsb
zlinear数据采集卡17 小时前
USB HS 480M高速传输与SRAM记录仪:DABM-D223数据存储系统全解析
arm开发·嵌入式硬件·fpga开发·开源
逻辑诗篇19 小时前
基于 XCVU13P 的 4 路 100G 光纤 PCIe 处理板 PCIE727 硬件规格全解析
fpga开发
玩嵌入式谁会脱发呀1 天前
【FPGA】 verilog设计spi读写flash实现数据DMA搬运
fpga开发
LabVIEW开发2 天前
LabVIEW 如何把地下震源定位误差做到5米内
fpga开发·labview·labview知识·labview功能·labview程序
Dr.kangder2 天前
嵌入式处理器架构解析(十)——DSP+FPGA
fpga开发·架构·嵌入式
szxinmai主板定制专家2 天前
Zynq MPSoC实现半导体真空腔体状态监测|FPGA多传感器时序同步采集方案
fpga开发·zynq·控制器·mpsoc·半导体设备·fpga同步
学习FPGA的电气小兴兴2 天前
基于FPGA的DDS信号发生器设计,生成频率可调的正弦波、三角波、锯齿波和方波
fpga开发·数字信号处理·fpga·vivado·dsp·dds·diy
szxinmai主板定制专家3 天前
Zynq MPSoC半导体高精度运动控制方案|FPGA硬件插补实现亚微米级伺服实时控制
人工智能·嵌入式硬件·fpga开发·zynq·运动控制·ethercat