SETLAYER PA_S = SIZE PA BY 7
SETLAYER AA_B_1 = SIZE ((((AA OR DUMBA) OR RESAA) OR RESNW) OR RESP1) BY 2
SETLAYER AA_B_2 = SIZE ((GT OR CG) OR GP) BY 2
SETLAYER AA_B_3_DNW = (SIZE DNW BY 3) NOT (SIZE DNW BY -3)
SETLAYER AA_B_3_HVBN = (SIZE HVBN BY 3) NOT (SIZE HVBN BY -3)
SETLAYER AA_B_3_NW = (SIZE NW BY 3) NOT (SIZE NW BY -3)
SETLAYER AA_B_3_TPW = (SIZE TPW BY 3) NOT (SIZE TPW BY -3)
SETLAYER AA_B_3_PSUB = (SIZE PSUB BY 3) NOT (SIZE PSUB BY -3)
SETLAYER AA_B_3_ONO = (SIZE ONO BY 3) NOT (SIZE ONO BY -3)
SETLAYER AA_B_3 = ((((AA_B_3_DNW OR AA_B_3_HVBN) OR AA_B_3_NW) OR AA_B_3_TPW) OR AA_B_3_PSUB) OR AA_B_3_ONO
SETLAYER AA_B = ((PA_S OR AA_B_1) OR AA_B_2) OR AA_B_3
#Dummy AA rectangles produce regulation
SETLAYER DUMAA_all_0 = RECTANGLES 1.6 1.6 0.4 INSIDE OF LAYER EXTENT_AA
SETLAYER DUMAA_all = DUMAA_all_0 NOT INTERACT AA_B
SETLAYER M_B_all_1 = SIZE (AA AND ((GT OR CG) OR GP)) BY 2
SETLAYER M_B_all_2 = SIZE DUMBM BY 2
SETLAYER M_B_all = M_B_all_1 OR M_B_all_2
foreach metal_layer $metal_all {
SETLAYER ${metal_layer}_B_1 = SIZE $metal_layer BY 2
SETLAYER ${metal_layer}_B = M_B_all OR ${metal_layer}_B_1
}
#//metal dummy rectangles produce regulation
SETLAYER EXTENT_M_ODD = SHRINK EXTENT_M LEFT BY 4 BOTTOM BY 2
SETLAYER DUMMX_ALL_ODD_1 = RECTANGLES 2 5 6 2 INSIDE OF LAYER EXTENT_M
SETLAYER DUMMX_ALL_ODD_2 = RECTANGLES 2 5 6 2 INSIDE OF LAYER EXTENT_M_ODD
SETLAYER DUMMX_ALL_ODD = DUMMX_ALL_ODD_1 OR DUMMX_ALL_ODD_2
SETLAYER EXTENT_M_EVEN = SHRINK EXTENT_M LEFT BY 2 BOTTOM BY 4
SETLAYER DUMMX_ALL_EVEN_1 = RECTANGLES 5 2 2 6 INSIDE OF LAYER EXTENT_M
SETLAYER DUMMX_ALL_EVEN_2 = RECTANGLES 5 2 2 6 INSIDE OF LAYER EXTENT_M_EVEN
SETLAYER DUMMX_ALL_EVEN = DUMMX_ALL_EVEN_1 OR DUMMX_ALL_EVEN_2
set metal_gds_number(M1) 61
set metal_gds_number(M2) 62
set metal_gds_number(M3) 63
set metal_gds_number(M4) 64
set metal_gds_number(M5) 65
set metal_gds_number(M6) 66
for { set i 0 } { $i < 6 } { incr i } {
if { [string equal [set [lindex $metal_all $i]_insert] YES] == 1 } {
if { [expr round(fmod($i,2))] == 0 } {
SETLAYER DUM[lindex $metal_all $i]_ALL = DUMMX_ALL_ODD NOT INTERACT [lindex $metal_all $i]_B
RULECHECK DUM[lindex $metal_all $i]_ALL_OUT { COPY DUM[lindex $metal_all $i]_ALL }
DRC CHECK MAP DUM[lindex $metal_all $i]_ALL_OUT GDSII $metal_gds_number([lindex $metal_all $i]) 1 AUTOREF