如何防止DC将两个连续反向器综合掉
set_dont_touch
不管用啊,我第一个反相器输出叫a,然后我写成set_dont_touch a,或者set_dont_touch [get_nets a]等类似的都不对,用synthesis keep也不行
求大神指点,难道是只有2个反相器,反相器太少一定会被综合掉?
set_donot_touch [get_cells full_path/instance_name]这么用,对两个inverter都设置set_donot_touch [get_cells inv_A]set_donot_touch [get_cells inv_B]
试了一下,但还是把输入输出直接连在一起怎么回事,显示这个Warning: In design 'not_not', input port 'in' is connected directly to output port 'out'.
When you set the enable_keep_signal variable to true, the tool preserves nets and issues a warning about the preserved nets during compilation. The tool sets an implicit size_only attribute on the logic connected to the nets to be preserved. To mark a net to be preserved, label the net with the keep_signal_name directive in the RTL and set the hdlin_keep_signal_name variable to user or user_driving. Preserving nets might cause QoR degradation.
要DC里设变量,完了还要在RTL里加注释。详见preug.pdf
首先,你这两个反相器要使用std_cell,其次,使用set_dont_touch命令,set_sont_touch不是设置在port上,而是设置在Instance name上
你的意思是我代码里反相器不写not,写库里反相器名字?
直接instance反相器,例如INVD1HVT u_inv1 (.I (in1), .ZN(out1));
INVD1HVT u_inv2 (.I (out1), .ZN(out2);
然后在逻辑综合是set_dont_touch [get_cells {u_inv1 u_inv2}]
注意这里的u_inv1和u_inv2要写full path
弱弱问一句full path是什么,我没加这个已经成功了呢。
打个比方,你的设计top下面包含design1和design2,而你的反相器存在于design1中,你在top层design1的instance name为u_deisng1,则full path即u_desing1/u_inv1