关于DC综合后,将某些信号设为don't touch表示疑惑
时间:10-02
整理:3721RD
点击:
请教大家一个问题。我这里有这样一段代码:
always@(*)
begin:produce_cut_width
if(!rst_n)
begin
cut_w=0 ;
end
else
begin
if(cut_posi==0)
cut_w=0;
else if(|cut_posi[42:38])
cut_w=3'd1;
else if(|cut_posi[37:32])
cut_w=3'd2;
else if(|cut_posi[31:26])
cut_w=3'd3;
else if(|cut_posi[25:20])
cut_w=3'd4;
else if(|cut_posi[19:13])
cut_w=3'd5;
else
cut_w=3'd6;
end
end
我发现我要是将这个写成组合逻辑,则经过DC后,cut_w信号就会被标志成don't touch。从而整个电路的延迟会变的特别大。而改为时序逻辑时,就不会有这样的问题。
我的脚本里面只对clk 和 rst_n设置了don't touch
因此在这里想问下:1、这个don't touch到底是什么意思,会造成什么结果。
2、为什么我写成组合逻辑后,报告中会出现cut_w这个信号是dont't touch 的啊?这一般会是什么原因呢?
谢谢了
always@(*)
begin:produce_cut_width
if(!rst_n)
begin
cut_w=0 ;
end
else
begin
if(cut_posi==0)
cut_w=0;
else if(|cut_posi[42:38])
cut_w=3'd1;
else if(|cut_posi[37:32])
cut_w=3'd2;
else if(|cut_posi[31:26])
cut_w=3'd3;
else if(|cut_posi[25:20])
cut_w=3'd4;
else if(|cut_posi[19:13])
cut_w=3'd5;
else
cut_w=3'd6;
end
end
我发现我要是将这个写成组合逻辑,则经过DC后,cut_w信号就会被标志成don't touch。从而整个电路的延迟会变的特别大。而改为时序逻辑时,就不会有这样的问题。
我的脚本里面只对clk 和 rst_n设置了don't touch
因此在这里想问下:1、这个don't touch到底是什么意思,会造成什么结果。
2、为什么我写成组合逻辑后,报告中会出现cut_w这个信号是dont't touch 的啊?这一般会是什么原因呢?
谢谢了
rst_n看上去是复位信号,设成dont touch后会将dont touch属性传递给连接的net,因为复位的负载一般很大造成这根信号上的延时看上去很大,可以使用set_ideal_network什么什么的命令,有点忘记了,综合时将时钟和复位设成ideal的信号。
还有给个小建议时钟和复位信号不要经过组合逻辑使用。具体原因忘记了,嘿嘿
rst信号不要经过组合逻辑,是因为rst其实和clk一样,也要做rst tree。那么芯片各个地方的rst延时不一样。
非常感谢,我明白了
哦,知道了,好多东西都还不会,慢慢学吧。谢谢您了