有一篇文章写的挺不错,就当是抛砖引玉吧,中间无脑粘贴发现有一点小问题。
自动生成net alias;
customize array wires placing method
# customize array wires placing method
proc ca { netname start_num end_num args } {
set netname [string toupper $netname]
set args [string toupper $args]
set head_strlen [string length $netname]
set tail_strlen [string length $args]
set start_num_strlen [string length $start_num]
set end_num_strlen [string length $end_num]
if {$start_num_strlen > $end_num_strlen} {
set max_strlen [expr $head_strlen + $tail_strlen + $start_num_strlen]
} else {
set max_strlen [expr $head_strlen + $tail_strlen + $end_num_strlen]
}
# $wlen_end - $wlen_start = wire length
set wlen_start 0.5
set wlen_end [expr round( 10 * ($max_strlen * 0.07 + $wlen_start + 0.4)) * 0.1]
set index [expr abs($start_num-$end_num)+1]
for {set i 1} {$i <= $index} {incr i} {
set y1 [expr $i / 10.0 + 0.3]
PlaceWire $wlen_start $y1 $wlen_end $y1
if {$start_num >= $end_num} {
set new_netname $netname[expr $start_num - $i + 1]$args
} else {
set new_netname $netname[expr $start_num + $i - 1]$args
}
puts $new_netname
PlaceNetAlias [expr $wlen_start + 0.2 ] $y1 $new_netname
}
SelectBlock [expr $wlen_end + 0.1] 0.2 [expr $wlen_start - 0.1] \
[expr $index / 10.0 + 0.4] 1
Cut
}
这里有个问题,就是会发现在桌面并没有反应;
后面只能大概看下代码了,其中最后的“cut”,这不就是在cadence里面的“删除/剪切”么?
于是乎,直接注释掉[cut],重新运行orcad,发现这次不会再消失了。
tips
原先博主的方法可以直接粘贴,发现生成的alias 出线在了光标上。