对设计中的信号施加DONT_TOUCH约束,可以避免这些信号在综合编译过程中被优化掉。例如,有些信号节点在综合或布局布线编译过程中可能会被优化掉,但是我们希望在后期调试过程中能够监控到这些信号,此时就可以使用DONT_TOUCH约束达到保留这些信号的目的。又如,有时在设计中会对一些高扇出的信号进行手动的逻辑复制,也可以使用DONT_TOUCH约束避免它们被优化掉。
实例:
下面有一个简单的例子,看看DONT_TOUCH约束如何使用。原始代码如下,目前只有一个寄存器vga_valid,它对应了adv7123_blank_n、vga_r、vga_g、vga_b等信号的输出。
reg vga_valid;
always @(posedge clk or negedge rst_n)
vga_valid <= vga_origin_vld;
assign adv7123_blank_n = vga_valid;
assign vga_r = vga_valid ? vga_rdb:5’d0;
assign vga_g = vga_valid ? vga_gdb:6’d0;
assign vga_b = vga_valid ? vga_bdb:5’d0;
编译工程后,点击Run Implementation,打开实现界面。
点