abstract提取lef请教
时间:10-02
整理:3721RD
点击:
对数字后端不太了解,一直都是做模拟layout,现在有个项目是做IP,layout还没开始,但客户要我们先提供一个lef库文件.我现在用frame框了IP的大小,再用所有metal填满,然后在有port的位置挖掉metal,用path metal留出几微米长,再打上label,这个就当成以后layout的port了.之后从layout库导出一个lef,一个gds,在abstract里,建库,导入lef,导入gds,直到导出lef文件.
我的问题是:
1.导入lef时,提示我tf里缺少"LEFDefaultRouteSpec"定义,但客户提供的tf就是没有这个定义,我能自己写吗?我目前自己在tf里添加了以下内容:
;( group
[override] )
;( -----
---------- )
( "LEFDefaultRouteSpec"
nil
interconnect(
( validLayers(M1 M2 M3 M4 M5G) )
( validVias(M1_M2_std M2_M3_std M3_M4_std M4_M5G_std) )
) ;interconnect
routingGrids(
( horizontalPitch"M1"1.0 )
( verticalPitch"M1"1.0 )
( horizontalOffset"M1"0.0 )
( verticalOffset"M1"0.0 )
( horizontalPitch"M2"1.0 )
( verticalPitch"M2"1.0 )
( horizontalOffset"M2"0.0 )
( verticalOffset"M2"0.0 )
( horizontalPitch"M3"1.0 )
( verticalPitch"M3"1.0 )
( horizontalOffset"M3"0.0 )
( verticalOffset"M3"0.0 )
( horizontalPitch"M4"1.0 )
( verticalPitch"M4"1.0 )
( horizontalOffset"M4"0.0 )
( verticalOffset"M4"0.0 )
( horizontalPitch"M5G"3.0 )
( verticalPitch"M5G"3.0 )
( horizontalOffset"M5G"0.0 )
( verticalOffset"M5G"0.0 )
) ;routingGrids
) ;LEFDefaultRouteSpec
但是我不清楚routingGrids那些pitch和offset都是干什么的,数值也是自己填的,我用改好的tf,load到layout库里,然后再导出lef,再拿这个lef导入abstract就没有问题了,我想问这样做有没有问题?我发现最后导出来的lef只有pin的位置信息,和obs阻挡信息,好像并不涉及布线规则这些,那是不是就算自己改的数值不对也没问题?
2.在abstract里,是将这个IP设置成core方式,还是block方式?
3.我用block方式导出的lef,发现lef文档最后的obs信息,是整个模块的尺寸,包含了我定义pin的位置,这样有没有问题?我用core方式导出的lef,面积就是我layout里画的,没有metal的地方就是没有的.
4.我用block方式导出的lef里没有开头的site信息,但我看公司以前做过的其他IP的lef文档是有site信息的.
以下是我提取的lef,请问这个文件提取的有没有问题,布线工具能否正常使用?多谢!
VERSION 5.6 ;
BUSBITCHARS "[]" ;
divIDERCHAR "/" ;
MACRO CEC05AZREG15A0
CLASS BLOCK ;
ORIGIN 0 0 ;
FOREIGN CEC05AZREG15A0 0 0 ;
SIZE 1030 BY 600 ;
SYMMETRY X Y R90 ;
PIN BIMODE0
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 870 0 871 4 ;
END
END BIMODE0
PIN FB0
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 364 0 365 4 ;
END
END FB0
PIN INN0
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 602 0 603 4 ;
END
END INN0
PIN IOUT0
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 360 0 362 4 ;
END
END IOUT0
PIN PD
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 1000 0 1000.26 4 ;
END
END PD
PIN PDN0
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 1001 0 1001.26 4 ;
END
END PDN0
PIN RESET5V
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 1002 0 1002.26 4 ;
END
END RESET5V
PIN VDEV0
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 600 0 601 4 ;
END
END VDEV0
PIN AMP_OUT
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 511 4 513 ;
END
END AMP_OUT
PIN BGR_MON0
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 342.04 4 342.4 ;
END
END BGR_MON0
PIN BGR_MON0_EN
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 342.84 4 343.2 ;
END
END BGR_MON0_EN
PIN BGR_MON1
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 212.87 4 213.23 ;
END
END BGR_MON1
PIN BGR_MON1_EN
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 213.67 4 214.03 ;
END
END BGR_MON1_EN
PIN BGR_OUT0
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 514 4 516 ;
END
END BGR_OUT0
PIN BGR_OUT1
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 517 4 519 ;
END
END BGR_OUT1
PIN FB_START
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 343.64 4 344 ;
END
END FB_START
PIN IREFBLD
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 508 4 510 ;
END
END IREFBLD
PIN OUTPUT_EN
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 208.07 4 208.43 ;
END
END OUTPUT_EN
PIN TDA0
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 203.74 4 204 ;
END
END TDA0
PIN TDA1
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 203.14 4 203.4 ;
END
END TDA1
PIN TDA2
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 202.54 4 202.8 ;
END
END TDA2
PIN TDA3
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 201.94 4 202.2 ;
END
END TDA3
PIN TDB0
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 356.94 4 357.2 ;
END
END TDB0
PIN TDB1
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 357.54 4 357.8 ;
END
END TDB1
PIN TDB2
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 358.14 4 358.4 ;
END
END TDB2
PIN TDB3
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 358.74 4 359 ;
END
END TDB3
PIN TDC0
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 201.34 4 201.6 ;
END
END TDC0
PIN TDC1
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 200.74 4 201 ;
END
END TDC1
PIN TDC2
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 200.14 4 200.4 ;
END
END TDC2
PIN TDC3
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 199.54 4 199.8 ;
END
END TDC3
PIN TEST_ENX
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 505.5 4 505.86 ;
END
END TEST_ENX
PIN TEST_MODE
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 506.64 4 507 ;
END
END TEST_MODE
PIN V10
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 208.87 4 210.87 ;
END
END V10
PIN V10_MON
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 211.27 4 211.63 ;
END
END V10_MON
PIN V10_MON_EN
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 212.07 4 212.43 ;
END
END V10_MON_EN
PIN VDD15
DIRECTION INOUT ;
USE POWER ;
PORT
LAYER M4 ;
RECT 1026 27.01 1030 32.01 ;
END
END VDD15
PIN VIN
DIRECTION INOUT ;
USE POWER ;
PORT
LAYER M4 ;
RECT 1026 97 1030 147 ;
END
PORT
LAYER M4 ;
RECT 1026 379.1 1030 479.1 ;
END
PORT
LAYER M4 ;
RECT 0 19 4 119 ;
END
PORT
LAYER M4 ;
RECT 0 379.1 4 479.1 ;
END
END VIN
PIN VOUT0
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M4 ;
RECT 654 0 854 3.99 ;
END
END VOUT0
PIN VSS15
DIRECTION INOUT ;
USE GROUND ;
PORT
LAYER M4 ;
RECT 1026 21 1030 26 ;
END
END VSS15
PIN VSSBGR
DIRECTION INOUT ;
USE GROUND ;
PORT
LAYER M4 ;
RECT 1026 224 1030 324 ;
END
PORT
LAYER M4 ;
RECT 0 224 4 324 ;
END
END VSSBGR
PIN VSSREG
DIRECTION INOUT ;
USE GROUND ;
PORT
LAYER M4 ;
RECT 1026 148.02 1030 198.02 ;
END
END VSSREG
OBS
LAYER M5G ;
RECT 0 0 1030 600 ;
LAYER M4 ;
RECT 0 0 1030 600 ;
LAYER M3 ;
RECT 0 0 1030 600 ;
LAYER M2 ;
RECT 0 0 1030 600 ;
LAYER M1 ;
RECT 0 0 1030 600 ;
END
END CEC05AZREG15A0
END LIBRARY
如果这样的做法不对,请问正常的做法是什么,麻烦各位简单讲解一下,谢谢!
我的问题是:
1.导入lef时,提示我tf里缺少"LEFDefaultRouteSpec"定义,但客户提供的tf就是没有这个定义,我能自己写吗?我目前自己在tf里添加了以下内容:
;( group
[override] )
;( -----
---------- )
( "LEFDefaultRouteSpec"
nil
interconnect(
( validLayers(M1 M2 M3 M4 M5G) )
( validVias(M1_M2_std M2_M3_std M3_M4_std M4_M5G_std) )
) ;interconnect
routingGrids(
( horizontalPitch"M1"1.0 )
( verticalPitch"M1"1.0 )
( horizontalOffset"M1"0.0 )
( verticalOffset"M1"0.0 )
( horizontalPitch"M2"1.0 )
( verticalPitch"M2"1.0 )
( horizontalOffset"M2"0.0 )
( verticalOffset"M2"0.0 )
( horizontalPitch"M3"1.0 )
( verticalPitch"M3"1.0 )
( horizontalOffset"M3"0.0 )
( verticalOffset"M3"0.0 )
( horizontalPitch"M4"1.0 )
( verticalPitch"M4"1.0 )
( horizontalOffset"M4"0.0 )
( verticalOffset"M4"0.0 )
( horizontalPitch"M5G"3.0 )
( verticalPitch"M5G"3.0 )
( horizontalOffset"M5G"0.0 )
( verticalOffset"M5G"0.0 )
) ;routingGrids
) ;LEFDefaultRouteSpec
但是我不清楚routingGrids那些pitch和offset都是干什么的,数值也是自己填的,我用改好的tf,load到layout库里,然后再导出lef,再拿这个lef导入abstract就没有问题了,我想问这样做有没有问题?我发现最后导出来的lef只有pin的位置信息,和obs阻挡信息,好像并不涉及布线规则这些,那是不是就算自己改的数值不对也没问题?
2.在abstract里,是将这个IP设置成core方式,还是block方式?
3.我用block方式导出的lef,发现lef文档最后的obs信息,是整个模块的尺寸,包含了我定义pin的位置,这样有没有问题?我用core方式导出的lef,面积就是我layout里画的,没有metal的地方就是没有的.
4.我用block方式导出的lef里没有开头的site信息,但我看公司以前做过的其他IP的lef文档是有site信息的.
以下是我提取的lef,请问这个文件提取的有没有问题,布线工具能否正常使用?多谢!
VERSION 5.6 ;
BUSBITCHARS "[]" ;
divIDERCHAR "/" ;
MACRO CEC05AZREG15A0
CLASS BLOCK ;
ORIGIN 0 0 ;
FOREIGN CEC05AZREG15A0 0 0 ;
SIZE 1030 BY 600 ;
SYMMETRY X Y R90 ;
PIN BIMODE0
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 870 0 871 4 ;
END
END BIMODE0
PIN FB0
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 364 0 365 4 ;
END
END FB0
PIN INN0
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 602 0 603 4 ;
END
END INN0
PIN IOUT0
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 360 0 362 4 ;
END
END IOUT0
PIN PD
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 1000 0 1000.26 4 ;
END
END PD
PIN PDN0
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 1001 0 1001.26 4 ;
END
END PDN0
PIN RESET5V
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 1002 0 1002.26 4 ;
END
END RESET5V
PIN VDEV0
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M2 ;
RECT 600 0 601 4 ;
END
END VDEV0
PIN AMP_OUT
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 511 4 513 ;
END
END AMP_OUT
PIN BGR_MON0
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 342.04 4 342.4 ;
END
END BGR_MON0
PIN BGR_MON0_EN
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 342.84 4 343.2 ;
END
END BGR_MON0_EN
PIN BGR_MON1
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 212.87 4 213.23 ;
END
END BGR_MON1
PIN BGR_MON1_EN
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 213.67 4 214.03 ;
END
END BGR_MON1_EN
PIN BGR_OUT0
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 514 4 516 ;
END
END BGR_OUT0
PIN BGR_OUT1
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 517 4 519 ;
END
END BGR_OUT1
PIN FB_START
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 343.64 4 344 ;
END
END FB_START
PIN IREFBLD
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 508 4 510 ;
END
END IREFBLD
PIN OUTPUT_EN
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 208.07 4 208.43 ;
END
END OUTPUT_EN
PIN TDA0
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 203.74 4 204 ;
END
END TDA0
PIN TDA1
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 203.14 4 203.4 ;
END
END TDA1
PIN TDA2
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 202.54 4 202.8 ;
END
END TDA2
PIN TDA3
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 201.94 4 202.2 ;
END
END TDA3
PIN TDB0
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 356.94 4 357.2 ;
END
END TDB0
PIN TDB1
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 357.54 4 357.8 ;
END
END TDB1
PIN TDB2
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 358.14 4 358.4 ;
END
END TDB2
PIN TDB3
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 358.74 4 359 ;
END
END TDB3
PIN TDC0
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 201.34 4 201.6 ;
END
END TDC0
PIN TDC1
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 200.74 4 201 ;
END
END TDC1
PIN TDC2
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 200.14 4 200.4 ;
END
END TDC2
PIN TDC3
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 199.54 4 199.8 ;
END
END TDC3
PIN TEST_ENX
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 505.5 4 505.86 ;
END
END TEST_ENX
PIN TEST_MODE
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 506.64 4 507 ;
END
END TEST_MODE
PIN V10
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 208.87 4 210.87 ;
END
END V10
PIN V10_MON
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 211.27 4 211.63 ;
END
END V10_MON
PIN V10_MON_EN
DIRECTION INPUT ;
USE SIGNAL ;
PORT
LAYER M3 ;
RECT 0 212.07 4 212.43 ;
END
END V10_MON_EN
PIN VDD15
DIRECTION INOUT ;
USE POWER ;
PORT
LAYER M4 ;
RECT 1026 27.01 1030 32.01 ;
END
END VDD15
PIN VIN
DIRECTION INOUT ;
USE POWER ;
PORT
LAYER M4 ;
RECT 1026 97 1030 147 ;
END
PORT
LAYER M4 ;
RECT 1026 379.1 1030 479.1 ;
END
PORT
LAYER M4 ;
RECT 0 19 4 119 ;
END
PORT
LAYER M4 ;
RECT 0 379.1 4 479.1 ;
END
END VIN
PIN VOUT0
DIRECTION OUTPUT ;
USE SIGNAL ;
PORT
LAYER M4 ;
RECT 654 0 854 3.99 ;
END
END VOUT0
PIN VSS15
DIRECTION INOUT ;
USE GROUND ;
PORT
LAYER M4 ;
RECT 1026 21 1030 26 ;
END
END VSS15
PIN VSSBGR
DIRECTION INOUT ;
USE GROUND ;
PORT
LAYER M4 ;
RECT 1026 224 1030 324 ;
END
PORT
LAYER M4 ;
RECT 0 224 4 324 ;
END
END VSSBGR
PIN VSSREG
DIRECTION INOUT ;
USE GROUND ;
PORT
LAYER M4 ;
RECT 1026 148.02 1030 198.02 ;
END
END VSSREG
OBS
LAYER M5G ;
RECT 0 0 1030 600 ;
LAYER M4 ;
RECT 0 0 1030 600 ;
LAYER M3 ;
RECT 0 0 1030 600 ;
LAYER M2 ;
RECT 0 0 1030 600 ;
LAYER M1 ;
RECT 0 0 1030 600 ;
END
END CEC05AZREG15A0
END LIBRARY
如果这样的做法不对,请问正常的做法是什么,麻烦各位简单讲解一下,谢谢!
关于1:可以自己写,但pitch和offset根据工艺定,standard cell的pin都应该在pitch上的,占用的布线通道比较优化;IP的你可以查看log有无warnning,你写的数值不一定不能用但或许不是优化的。
关于2&3:standard cell选择core,IP可以选择block。
关于4:IP的话site没关系的。
以上均为个人浅见,纯粹交流。
谢谢,差不多搞明白了.我又改了一下tf,按照pitch=spacing+最小线宽来改的,block方式看起来只关注输入输出pin,和我以前提的完全一样.