今天上午因为项目需要,查了一下skip route的设定,这里就顺便总结一下PR中对单独的net的约束方法:
skiping route:
命令:set_attribute -object $net -name physical_status -value locked
没有类似于set_dont_touch之类的直接命令来设置skip route,而是通过一个叫physical_status的属性来设置。
如果physical_status为locked,那么这个net将会被freeze,也就是说,如果没有绕线,那么它相当于skip route。
如果已经绕线,则相当于将shape和via fix住,router也不会去动。
dont touch:
命令:set_dont_touch [get_nets $net -segment]
这个一般是为了放置工具再net上加buffer。注意这里的segment option不能丢掉。
set_ideal_net:
客观上也会阻止工具对net进行优化,实际使用中一般在综合阶段使用。除非特殊情况(例如DDR某些net),都需要在PR阶段开始之前注释掉。
set_ideal_network -no_propagate:
类似于set_ideal_net, 但是可以对pin和port进行设置。
routing rule:
命令:
create_routing_rule
set_routing_rule
主要用于设置clock以及一些特殊要求的net,例如double width, double spacing。