fillgen 脚本 ;在t5 0.21的stdcell为0.21的高度中,弥补M4 信号绕线的density不足,按M4.DN.1.1 :13.5%的区域取值
/* SWITCH DEFINITION START */
PRECISION 20000
LAYOUT PRECISION 2000
LAYOUT MAGNIFY AUTO
//DRC CELL NAME YES CELL SPACE XFORM ALL
//LAYOUT SYSTEM GDSII
LAYOUT SYSTEM OASIS
LAYOUT PATH "test.oasis"
LAYOUT PRIMARY "test"
//LAYOUT PATH "test_M4.oasis"
//LAYOUT PRIMARY "test_M4"
//**** DRC output
DRC RESULTS DATABASE "rep/DRC_RES_test.db"
DRC SUMMARY REPORT "rep/DRC_test.rep" // HIER
DRC KEEP EMPTY NO
DRC CHECK TEXT ALL
DRC MAXIMUM RESULTS ALL
DRC MAXIMUM RESULTS NAR ALL
DFM DEFAULTS RDB MAXIMUM 100000
//DRC INCREMENTAL CONNECT YES
//**layer definition
LAYER PRBOUNDARY 10800 // P&R cell boundary layer for auto P&R purpose
LAYER MAP 108 DATATYPE 0 10800
LAYER Chip_Boundary 10825 // For Chip area definition
LAYER MAP 108 DATATYPE 250 10825
LAYER M4i 2004 // Metal4 layer
LAYER MAP 34 DATATYPE 401 2004 // Mapping (34;401) to 2004 for M4i
LAYER MAP 34 DATATYPE 402 2004 // Mapping (34;402) to 2004 for M4i
//smint
LAYER M4ired 20041
LAYER MAP 34 DATATYPE 401 20041 // Mapping (34;402) to 2004 for M4i
LAYER M4iblue 20042
LAYER MAP 34 DATATYPE 402 20042 // Mapping (34;402) to 2004 for M4i
LAYER DM4_O 2024
LAYER MAP 334 DATATYPE 401 2024 // Mapping (334;401) to 2024 for OPC_M4i, OPC dummy metal
LAYER MAP 334 DATATYPE 402 2024 // Mapping (334;402) to 2024 for OPC_M4i, OPC dummy metal
LAYER DUM4 2044 // Dummy Metal4
LAYER MAP 334 DATATYPE 411 2044 // Mapping (334;411) to 2044 for DUM4
LAYER MAP 334 DATATYPE 412 2044 // Mapping (334;412) to 2044 for DUM4
LAYER F_ZONE0 22050
LAYER F_ZONE1 22051
LAYER F_ZONE2 22052
LAYER F_ZONE3 22053
//**the location for the first fillgen=red dummy of (DM4_O) is POLGON LL , the pitch is 0.084,and space is 0.064 between first fillgen and M4(vdd/vss)
// mesured the space of between the first red M4 in the stdcell region and polygon org coordinate .which is 0.064
//**解释 :区域定义最关键,这个区域的坐标就是LL的原点的值,且dummy生产也是这个原点且第一跟为红色。 要求要找到M4 drawing为红色的值,且离这个的pitch Y方向为0.084作为LL的起点坐标。 //1.1
LAYOUT POLYGON 18 80.0 220.0 120.0 220.0 120.0 140.354 200.0 140.354 200.0 220.0 220.0 220.0 220.0 260.0 200.0 260.0 200.0 420.0 220.0 420.0 220.0 480.0 200.0 480.0 200.0 620.0 220.0 620.0 220.0 680.0 200.0 680.0 200.0 700.0 80.0 700.0 F_ZONE0 test
LAYOUT POLYGON 6 300.0 100.0 340.0 100.0 340.0 63.074 1020.0 63.074 1020.0 140.0 300.0 140.0 F_ZONE1 test
LAYOUT POLYGON 6 1160.0 63.074 1680.0 63.074 1680.0 100.0 1740.0 100.0 1740.0 140.0 1160.0 140.0 F_ZONE2 test
LAYOUT POLYGON 18 1720.0 200.0 1740.0 200.0 1740.0 148.334 1820.0 148.334 1820.0 180.0 1880.0 180.0 1880.0 680.0 1800.0 680.0 1800.0 820.0 1720.0 820.0
1720.0 760.0 1740.0 760.0 1740.0 740.0 1720.0 740.0 1720.0 580.0 1740.0 580.0 1740.0 240.0 1720.0 240.0 F_ZONE3 test
//***Fill shape,每个都要用到R0的fillgen 形状。放在不同的polygon区域中,因为每个区域格点不一样
DFM SPEC FILL SHAPE "R0"
RECTFILL 0 0 .5 .02 // FILL region length&width
// SPACEY .064 M4i // space to DM4_0
// SPACEX .146 M4i // space to DM4_0
// SPACE 2 DUM4 // space to DM4_0
STEP 0.146 0.19 //0.146 in x-direction, Y:0.19
// OFFSET 0.19 0.03 // the step of shape "R1", step from 0.128 to 0.146
// COLOR SCHEME CHECKER
COLOR SCHEME ALTERNATEX //(offset 0.1 0 & ALTERNATE) setted that the same color is in X axis
//**which layer added fill shape ,
DFM SPEC FILL fillR0
INSIDE OF LAYER F_ZONE0
INITIAL FILLREGION
FILLSHAPE OUTPUT "outR0" "R0"
DFM SPEC FILL fillR1 // R0 is the same
INSIDE OF LAYER F_ZONE1
INITIAL FILLREGION
FILLSHAPE OUTPUT "outR1" "R0"
DFM SPEC FILL fillR2
INSIDE OF LAYER F_ZONE2
INITIAL FILLREGION
FILLSHAPE OUTPUT "outR2" "R0"
DFM SPEC FILL fillR3
INSIDE OF LAYER F_ZONE3
INITIAL FILLREGION
FILLSHAPE OUTPUT "outR3" "R0"
//**** multiple color assignment
//fill_A = DFM FILL fillR1 "outR1" COLOR A
//fill_B = DFM FILL fillR1 "outR1" COLOR B
fill_G0 = DFM FILL fillR0 "outR0"
fill_G1 = DFM FILL fillR1 "outR1"
fill_G2 = DFM FILL fillR2 "outR2"
fill_G3 = DFM FILL fillR3 "outR3"
VARIABLE Max_GDM4_TO_allM4 0.146
VARIABLE Max_GDM4_TO_PGM4 0.064
//M4OS = GROW M4i RIGHT BY 0.146 LEFT BY 0.146 TOP BY 0.063 BOTTOM BY 0.063 这句等与下面两句,但因为grow和size不一样。所以要进行拆分,size长有左下角
M4OS1 = SIZE M4i BY 0.063 // the space between M4i and fill is 0.064 ,这里长的太大会跟M4的电源边相abut,不好逻辑。故意取小一点点
M4OS = GROW M4OS1 RIGHT BY 0.083 LEFT BY 0.083 // the space between M4i/DM4 and fillgen dummy (left/right :0.146 top/bottom is== 0.064)
fill_GN= (OR fill_G0 fill_G1 fill_G2 fill_G3) NOT INTERACT M4OS
//*** dummy to fixed color。这里是电源长大0.084 更新生产的fillgen and后取出想要的fill颜色
PM4ired = GROW M4ired TOP BY 0.084 BOTTOM BY 0.084
DDUM4 = SIZE DUM4 BY 0.146
DDM4_O = SIZE DM4_O BY 0.146
fill_A = PM4ired and fill_GN
fill_B = fill_GN NOT fill_A
fill_A_out = fill_A NOT INTERACT (OR fill_B DDUM4 DDM4_O ) // filter interact with fill_B ,DDUM4 ,DDM4_O需要被过滤掉
fill_B_out = fill_B NOT INTERACT (OR fill_A DDUM4 DDM4_O)
//***dummy fill is outputed and assigned data number
oas_out{
DFM RDB OASIS fillout_test.oas fill_A_out 334 401
DFM RDB OASIS fillout_test.oas fill_B_out 334 402
////**debug layer region ,做逻辑测试输出的
DFM RDB OASIS fillout_test.oas fill_G0 334 4020
DFM RDB OASIS fillout_test.oas fill_G1 334 4021
//DFM RDB OASIS fillout_test.oas fill_G2 334 4022
//DFM RDB OASIS fillout_test.oas fill_G3 334 4023
//DFM RDB OASIS fillout_test.oas fill_G3 334 4023
//DFM RDB OASIS fillout_test.oas fill_GN1 334 40241
//DFM RDB OASIS fillout_test.oas M4i 334 40242
//DFM RDB OASIS fillout_test.oas fill_A 334 4025
//DFM RDB OASIS fillout_test.oas fill_B 334 4024
}
命令运行 : calibre -64 -drc -hier -hyper -turbo 当前fill脚本
|