innovus规律摆放单元脚本

innovus规律摆放单元脚本
innovus中摆放instance的命令为placement
命令解析:

innovus规律摆放单元脚本_第1张图片
innovus规律摆放单元脚本_第2张图片

参数解析:

instance_name :器件名

location :指定器件的源点,左下角的x,y坐标

orientation :方向(默认为R0)

-status :{-fixed | -placed | sofrFixed} 器件放置状态(默认为fixed)

脚本功能描述:

规律摆放一类相同的instance时,可以定制摆放规则,例如(3x2,4x5)此种规律

proc place {inst num startX startY spaceX spaceY orientation flag} {
	set n 0
	set x $startX ; set y $startY
	foreach i $inst {
		#1.得到器件的长宽大小
		set instX [dbGet [dbGet top.inst.name $i -p].box_sizex]
		set instY [dbGet [dbGet top.inst.name $i -p].box_sizey]
		if {$flag} {
			placeInstance $i $x $y -placed $orientation
			incr n
			if {$n%$num == 0} {
				set x $startX ; set y [expr $y + $instY + $spaceY]
			} else {
				set x [expr $x + $instX + $spaceX] ; set y $startY
			}
		} else {
			placeInstance $i [expr $x - $instX] $y -placed $orientation
			incr n
			if {$n%$num == 0} {
				set x $startX ; set y [expr $y + $instY + $spaceY]
			} else {
				set x [expr $x - $instX - $spaceX] ; set y $startY
			}			
		}
	}
}
参数解析:

inst :器件的名称,格式为list

num :每行放置num个就向上放置

startX :起点X坐标

startY :起点Y坐标

spaceX :每两个相邻的inst的X间距

spaceY :每两个相邻的inst的Y间距

orientation :放置的方向

flag : 参数为0,器件从右向左放置

spaceY :每两个相邻的inst的Y间距

orientation :放置的方向

flag : 参数为0,器件从右向左放置

​ 参数不为0,器件从左向右放置

你可能感兴趣的:(数字后端,tcl,硬件工程,算法)