06 : Netlisting and RC Extraction for Non-Manhattan Geometry Designs
Minimum Required Versions: Expert 5.2204.3.R, Hipex 3.8.7.R
Parasitic resistor and capacitor extraction using Hipex RC is not limited to 90-degree Manhattan layout geometries. Hipex can accurately extract layout parasitic devices on non-Manhattan routing as shown in the following example.
1: Expert and Hipex Setup
Open Expert and load the example circuit in the Expert project hipex_ex06.eld and open the sample layout cell named 45_route. Some of the 45-degree signal routing that will be characterized by Hipex for parasitic resistance and capacitance elements is shown in Figure1 and Figure2.
Next, all extraction decks must be specified in the LPE setup in Expert by selecting Verification->Extraction->Setup , which opens the LPE setup window. Selecting the Technology tab in the left section of the window brings up the dialog box shown in Figure3 , in which the layer generation script ( silvaco_dev_extract.dsf ), the parasitic capacitance script (silvaco_parasitic_c.lisa) , and the parasitic resistance script ( silvaco_parasitic_c.lisa ) must be chosen.
More information regarding other Hipex settings can be found in several of the other Hipex examples.
2: Running Hipex
The derived layers and connectivity for the layout must be generated before parasitic extraction by selecting Verification->Extraction->Hipex-Net->Run from the Expert menu. This step will also produce a layout netlist of the non-parasitic devices.
After running Hipex-Net, three types of parasitic netlists can be generated individually: resistance only, capacitance only, or combined parasitic resistance and capacitance. Each of these options is available in the Verification->Extraction menu.
The parasitic RC netlist for the sample layout 45_route is shown in Figure4.
hipex_ex06_net_cmd.lisa
!-------------------------------------------------------------------- !Net command file !DESIGN : design !TECHNO : techno !USER : !TIME : Fri May 29 02:40:38 2020 !-------------------------------------------------------------------- ! HIPEX to CUP map table cup layer "metal4" /hipex_layer="METAL4"; cup layer "metal5" /hipex_layer="METAL5"; cup layer "metal6" /hipex_layer="METAL6"; cup layer "metal2" /hipex_layer="METAL2"; cup layer "metal3" /hipex_layer="METAL3"; cup layer "poly1" /hipex_layer="connect_poly"; cup layer "substrate" /hipex_layer="substrate"; cup layer "metal1" /hipex_layer="connect_metal1"; ! GDS LAYER MAP hipex layer /gds_layer= 0 /gds_type= 0 /geom_layer="pnp_id"; hipex layer /gds_layer= 25 /gds_type= 0 /geom_layer="CONTACT"; hipex layer /gds_layer= 30 /gds_type= 0 /geom_layer="VIA3"; hipex layer /gds_layer= 31 /gds_type= 0 /geom_layer="METAL4"; hipex layer /gds_layer= 31 /gds_type= 1 /geom_layer="M4_LABEL"; hipex layer /gds_layer= 32 /gds_type= 0 /geom_layer="VIA4"; hipex layer /gds_layer= 33 /gds_type= 0 /geom_layer="METAL5"; hipex layer /gds_layer= 33 /gds_type= 1 /geom_layer="M5_LABEL"; hipex layer /gds_layer= 36 /gds_type= 0 /geom_layer="VIA5"; hipex layer /gds_layer= 37 /gds_type= 0 /geom_layer="METAL6"; hipex layer /gds_layer= 37 /gds_type= 1 /geom_layer="M6_LABEL"; hipex layer /gds_layer= 38 /gds_type= 0 /geom_layer="DEEP_N_WELL"; hipex layer /gds_layer= 42 /gds_type= 5 /geom_layer="NWEL_port"; hipex layer /gds_layer= 46 /gds_type= 5 /geom_layer="GC_port"; hipex layer /gds_layer= 49 /gds_type= 1 /geom_layer="M1_LABEL"; hipex layer /gds_layer= 49 /gds_type= 5 /geom_layer="METAL1_port"; hipex layer /gds_layer= 50 /gds_type= 0 /geom_layer="VIA"; hipex layer /gds_layer= 51 /gds_type= 0 /geom_layer="METAL2"; hipex layer /gds_layer= 51 /gds_type= 1 /geom_layer="M2_LABEL"; hipex layer /gds_layer= 51 /gds_type= 5 /geom_layer="METAL2_port"; hipex layer /gds_layer= 56 /gds_type= 0 /geom_layer="POLY2"; hipex layer /gds_layer= 58 /gds_type= 0 /geom_layer="PBASE"; hipex layer /gds_layer= 59 /gds_type= 5 /geom_layer="PSUB_port"; hipex layer /gds_layer= 61 /gds_type= 0 /geom_layer="VIA2"; hipex layer /gds_layer= 62 /gds_type= 0 /geom_layer="METAL3"; hipex layer /gds_layer= 62 /gds_type= 1 /geom_layer="M3_LABEL"; hipex layer /gds_layer= 63 /gds_type= 0 /geom_layer="pnp_e"; hipex layer /gds_layer= 64 /gds_type= 0 /geom_layer="pnp_c"; hipex layer /gds_layer= 65 /gds_type= 0 /geom_layer="npn_e"; hipex layer /gds_layer= 66 /gds_type= 0 /geom_layer="npn_b"; hipex layer /gds_layer= 67 /gds_type= 0 /geom_layer="p_sd"; hipex layer /gds_layer= 68 /gds_type= 0 /geom_layer="n_sd"; hipex layer /gds_layer= 69 /gds_type= 0 /geom_layer="cmosp_id"; hipex layer /gds_layer= 70 /gds_type= 0 /geom_layer="cmosn_id"; hipex layer /gds_layer= 71 /gds_type= 0 /geom_layer="hvcmosp_id"; hipex layer /gds_layer= 72 /gds_type= 0 /geom_layer="hvpmos_d"; hipex layer /gds_layer= 73 /gds_type= 0 /geom_layer="hvpmos_s"; hipex layer /gds_layer= 74 /gds_type= 0 /geom_layer="hvcmosn_id"; hipex layer /gds_layer= 75 /gds_type= 0 /geom_layer="hvnmos_d"; hipex layer /gds_layer= 76 /gds_type= 0 /geom_layer="hvnmos_s"; hipex layer /gds_layer= 77 /gds_type= 0 /geom_layer="rpplus_id"; hipex layer /gds_layer= 78 /gds_type= 0 /geom_layer="rnpoly_id"; hipex layer /gds_layer= 79 /gds_type= 0 /geom_layer="rpoly_id"; hipex layer /gds_layer= 80 /gds_type= 0 /geom_layer="rnwell_id"; hipex layer /gds_layer= 81 /gds_type= 0 /geom_layer="rpplus_pin"; hipex layer /gds_layer= 82 /gds_type= 0 /geom_layer="connect_poly"; hipex layer /gds_layer= 83 /gds_type= 0 /geom_layer="connect_nwell"; hipex layer /gds_layer= 84 /gds_type= 0 /geom_layer="substrate"; hipex layer /gds_layer= 85 /gds_type= 0 /geom_layer="sub_tie"; hipex layer /gds_layer= 86 /gds_type= 0 /geom_layer="well_tie"; hipex layer /gds_layer= 87 /gds_type= 0 /geom_layer="deepnwell_tie"; hipex layer /gds_layer= 88 /gds_type= 0 /geom_layer="p1p2_id"; hipex layer /gds_layer= 89 /gds_type= 0 /geom_layer="poly_con"; hipex layer /gds_layer= 90 /gds_type= 0 /geom_layer="poly2cap_con"; hipex layer /gds_layer= 91 /gds_type= 0 /geom_layer="ind_plus"; hipex layer /gds_layer= 92 /gds_type= 0 /geom_layer="ind_minus"; hipex layer /gds_layer= 93 /gds_type=255 /geom_layer="connect_metal1"; hipex layer /gds_layer= 94 /gds_type= 0 /geom_layer="HPX$npn_e"; ! TEXT TYPES ! PORT LAYERS ! SOFT LAYERS ! MISC (optional) statementsS ! CONNECTIVITY hipex connect "DEEP_N_WELL" "deepnwell_tie"; hipex connect "GC_port" "connect_poly"; hipex connect "M2_LABEL" "ind_minus"; hipex connect "METAL2" "METAL2_port"; hipex connect "METAL2" "METAL3" /contact="VIA2"; hipex connect "METAL3" "METAL4" /contact="VIA3"; hipex connect "METAL4" "METAL5" /contact="VIA4"; hipex connect "METAL5" "METAL6" /contact="VIA5"; hipex connect "NWEL_port" "connect_nwell"; hipex connect "PBASE" "npn_b"; hipex connect "PSUB_port" "substrate"; hipex connect "connect_metal1" "POLY2" /contact="poly2cap_con"; hipex connect "connect_metal1" "METAL1_port"; hipex connect "connect_metal1" "METAL2" /contact="VIA"; hipex connect "connect_metal1" "pnp_e" /contact="CONTACT"; hipex connect "connect_metal1" "pnp_c" /contact="CONTACT"; hipex connect "connect_metal1" "npn_e" /contact="CONTACT"; hipex connect "connect_metal1" "npn_b" /contact="CONTACT"; hipex connect "connect_metal1" "p_sd" /contact="CONTACT"; hipex connect "connect_metal1" "n_sd" /contact="CONTACT"; hipex connect "connect_metal1" "hvpmos_d" /contact="CONTACT"; hipex connect "connect_metal1" "hvpmos_s" /contact="CONTACT"; hipex connect "connect_metal1" "hvnmos_d" /contact="CONTACT"; hipex connect "connect_metal1" "hvnmos_s" /contact="CONTACT"; hipex connect "connect_metal1" "rpplus_pin" /contact="CONTACT"; hipex connect "connect_metal1" "connect_poly" /contact="poly_con"; hipex connect "connect_metal1" "sub_tie" /contact="CONTACT"; hipex connect "connect_metal1" "well_tie" /contact="CONTACT"; hipex connect "connect_metal1" "ind_plus"; hipex connect "connect_metal1" "ind_minus"; hipex connect "connect_nwell" "well_tie"; hipex connect "deepnwell_tie" "connect_metal1" /contact="CONTACT"; hipex connect "substrate" "sub_tie"; ! DEVICES TEXTS ! DEVICE DEFINITIONS hipex define_device PMOS "cmosp_id" /drain="p_sd" /gate="connect_poly" /source="p_sd" /subs="connect_nwell" /model_name="CMOSP"; hipex define_device NMOS "cmosn_id" /drain="n_sd" /gate="connect_poly" /source="n_sd" /subs="substrate" /model_name="CMOSN"; hipex define_device C "p1p2_id" /pin1="POLY2" /pin2="connect_poly" /area_cap=0.0075 /perim_cap=0.00625 /model_name="PIPCAP"; hipex define_device PMOS "hvcmosp_id" /drain="hvpmos_d" /gate="connect_poly" /source="hvpmos_s" /subs="DEEP_N_WELL" /model_name="HVCMOSP"; hipex define_device NMOS "hvcmosn_id" /drain="hvnmos_d" /gate="connect_poly" /source="hvnmos_s" /subs="substrate" /model_name="HVCMOSN"; hipex define_device NPN "HPX$npn_e" /collector="connect_nwell" /base="PBASE" /emitter="npn_e" /subs="substrate" /area_unit=36 /model_name="NPN"; hipex define_device PNP "pnp_id" /collector="pnp_c" /base="connect_nwell" /emitter="pnp_e" /area_unit=38.3819 /model_name="PNP"; hipex define_device R "rnwell_id" /pin1="connect_nwell" /pin2="connect_nwell" /subs="substrate" /cont_res=0 /delta_l=0.4 /delta_w=-0.02 /head_res=0 /sheet_res=10000 /model_name="RNWELL"; hipex define_device R "rpplus_id" /pin1="rpplus_pin" /pin2="rpplus_pin" /subs="connect_nwell" /cont_res=0 /delta_l=0.5 /delta_w=-0.05 /head_res=0 /sheet_res=200 /model_name="RPPLUS"; hipex define_device R "rnpoly_id" /pin1="connect_poly" /pin2="connect_poly" /cont_res=0 /delta_l=0.4 /delta_w=0.02 /head_res=0 /sheet_res=50 /model_name="RNPOLY"; hipex define_device R "rpoly_id" /pin1="connect_poly" /pin2="connect_poly" /cont_res=0 /delta_l=0.4 /delta_w=0.02 /head_res=0 /sheet_res=50 /model_name="RPOLY"; ! GEOMETRICAL OPERATIONS hipex copy "npn_e" "HPX$npn_e"; ! SOFT/WELL CHECKS ! MASKED DIELECTRIC LAYERS
hipex_ex06_opt.lisa
!-------------------------------------------------------------------- !Run file !DESIGN : design !TECHNO : techno !USER : !TIME : Fri May 29 02:41:20 2020 !-------------------------------------------------------------------- TOP_CELL = "45_route"; HIPEX_DB_DIRECTORY = "database"; !-------------------------------------------------------------------- !Extraction: LISA template command file !-------------------------------------------------------------------- !-------------------------------------------------------------------- !Layout parameters !-------------------------------------------------------------------- HIPEX_LAYOUT_FORMAT = "GDS"; HIPEX_LAYOUT_FILE = "45_route$HPX.gds"; HIPEX_OVERLAP_INSTANCE_CHECK = "NO"; HIPEX_SUPPRESS_NOTEMPTY = "YES"; HIPEX_NON45_FLAG = "NO"; !-------------------------------------------------------------------- !Connectivity parameters !-------------------------------------------------------------------- HIPEX_TERNARY_CONNECT_THROUGH_TOUCH = "NO"; !-------------------------------------------------------------------- !Output parameters !-------------------------------------------------------------------- HIPEX_COMMENT_MODEL = "NO"; HIPEX_COMMENT_TOP_SUBCKT = "NO"; HIPEX_HIER_SPICE_WL_NAME = "/home/alexa/2020_06/06/45_route_hier.spice"; HIPEX_MOSFET_LW_ONLY = "NO"; HIPEX_MOSFET_EXCLUDE_W_SD = "NO"; HIPEX_OUTPUT_SPICE_ATTRIBUTES = "YES"; HIPEX_CAP_OUTPUT_LW = "NO"; HIPEX_RES_OUTPUT_LW = "YES"; HIPEX_CAP_OUTPUT_AREA_PERIMETER = "YES"; HIPEX_OUTPUT_SPICE_FORMAT = "HSPICE"; HIPEX_PININFO = "NO"; HIPEX_PRINT_MESSAGES = "NO"; NETLIST_OUTPUT_PM = "NO"; NETLIST_DISTRIBUTION_MODE = "ACCURATE"; NETLIST_LINE_LENGTH = 80; NETLIST_EXCLUDE_LIBRARY_PREFIX = "NO"; NETLIST_GLOBALS_IN_SUBCKT_PINS = "YES"; NETLIST_TEXTED_PINS = "YES"; NETLIST_LIBRARIES = {}; !-------------------------------------------------------------------- !ERC parameters !-------------------------------------------------------------------- HIPEX_DANGLE_FLAG = "YES"; HIPEX_CAP_MESSAGE = "NO"; HIPEX_DIODE_MESSAGE = "NO"; HIPEX_RENAME_OPENS = "NO"; HIPEX_MULTILABEL_NAME = ""; HIPEX_SOFTCHECK_WARNINGS_AS_ERRORS = "NO"; !-------------------------------------------------------------------- !Node Name parameters !-------------------------------------------------------------------- HIPEX_HIERARCHY_SEPARATOR = "/"; HIPEX_NODE_NAME_SEPARATOR = "_"; HIPEX_DEFAULT_INSTANCE_PREFIX = "I"; HIPEX_DEFAULT_NODE_PREFIX = "#"; HIPEX_DELETE_BAD_CHAR = "NO"; HIPEX_XY_LOCATION = "NO"; HIPEX_CASE_SENSITIVE_NET_NAMES = "YES"; HIPEX_AUTOGENERATE_LOCAL = "YES"; POWER_NODE = {"VDD"}; GROUND_NODE = {"VSS"}; GLOBAL_TEXT_LIST = {"VDD", "VSS"}; HIPEX_PIN_DELIMITER = ":"; !-------------------------------------------------------------------- !Explosion parameters !-------------------------------------------------------------------- HIPEX_WIRING_EXPLODE = "NO"; HIPEX_KEEP_FLATTEN_CELLS = "YES"; HIPEX_TEXT_TOP = "NO"; HIPEX_AUTO_EXPLODE = "NO"; HIPEX SET_CELL_OPTIONS {"{CONTACT}_M1_M2_20000_1_1_50000_50000_4_0_1_200000"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"{CONTACT}_M2_M3_20000_1_1_50000_50000_4_0_1_200000"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"M2_M3_20000_20000_1_1_50000_50000_4"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"M1_M2_20000_20000_1_1_50000_50000_4"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"contact_30_sj0917"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"POLYCON"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"VIA1"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"contact_4_qtldiu"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"CMOSN_5_2_3_d2quu6"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"contact_9_qtldiz"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"CMOSP_10_2_3_hljr8g"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"NAND_3"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"contact_25_siyuf5"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"CMOSN_5_2_2_d2quu5"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"CMOSP_10_2_2_hljr8f"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"nand2"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"D_FF"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"45_route"} /EXPLODE; !-------------------------------------------------------------------- !Pins parameters !-------------------------------------------------------------------- HIPEX_IGNORE_DANGLE_PINS = "NO"; !-------------------------------------------------------------------- !BackAnnotate parameters !-------------------------------------------------------------------- HIPEX_BACKANNOTATE = "NO"; !-------------------------------------------------------------------- !Capacitance Extraction parameters !-------------------------------------------------------------------- CPX_COUPLED_THRESHOLD = 0.0; CPX_EXTRACT_DANGLES = "NO"; CPX_OUTPUT_DUMMY_CAPA = "NO"; CPX_FIELD_SOLVER = "NO"; !-------------------------------------------------------------------- !Field Solver C-extraction (Stellar) parameters !-------------------------------------------------------------------- CPX_STEP_X = 0.5; CPX_STEP_Y = 0.5; CPX_STEP_Z = 0.5; CPX_PRECISION = 0.01; CPX_MAX_ITER = 100; CPX_DECOMPOSITION = "YES"; CPX_DEC_STEP = "NO"; CPX_DEC_VALUE = -1.0; CPX_BOX = "NO"; CPX_BOX_VALUES_XMIN = 0.0; CPX_BOX_VALUES_XMAX = 0.0; CPX_BOX_VALUES_YMIN = 0.0; CPX_BOX_VALUES_YMAX = 0.0; CPX_FILTER = "NO"; CPX_CAPA_MIN = 1e-20; CPX_RENEW = "NO"; CPX_SAVE_FILE = "/home/alexa/2020_06/06/RenewSavedFile.sav"; CPX_THREED_GENERATION = "NO"; CPX_THREED_FILENAME = "/home/alexa/2020_06/06/3DStructureFile.str"; !-------------------------------------------------------------------- !Field Solver C-extraction (Clever) parameters !-------------------------------------------------------------------- !-------------------------------------------------------------------- !Resistance Extraction parameters !-------------------------------------------------------------------- RPX_SERIAL_MERGE_THRESHOLD = 0.0; RPX_OUTPUT_XY = "YES"; RPX_OUTPUT_LAYER_NAMES = "YES"; RPX_SKIP_POWER = "YES"; RPX_USE_TEXTS_AS_SUBNODES = "NO"; RPX_USE_FIELD_SOLVER = "NO"; !-------------------------------------------------------------------- !Netlist RC Reduction parameters !-------------------------------------------------------------------- NETLIST_CRC = "NO"; !-------------------------------------------------------------------- !Coefficient Units parameters !-------------------------------------------------------------------- HIPEX SET_UNIT /CAPACITANCE "pF"; HIPEX SET_UNIT /RESISTANCE "Ohm"; HIPEX SET_UNIT /LENGTH "um";
run_net.lisa
INCLUDE ("hipex_ex06_opt.lisa"); INCLUDE ("hipex_ex06_net_cmd.lisa"); HIPEX_SUMMARY_PATH = "/home/alexa/2020_06/06"; HIPEX_NET_MAIN();
run_rc.lisa
INCLUDE ("hipex_ex06_opt.lisa"); INCLUDE ("hipex_ex06_net_cmd.lisa"); INCLUDE ("../silvaco_parasitic_r.lisa"); INCLUDE ("../silvaco_parasitic_c.lisa"); HIPEX_SUMMARY_PATH = "/home/alexa/2020_06/06"; HDB READ; print("Writing Stripe Database..."); HDB WRITE_STRIPES /FULL "default" 200 10; print("Stripes OK."); print("Parasitic capacitance extraction..."); CPX MAIN "default" /append; print("Parasitic resistance extraction..."); RPX MAIN "default" /append; netlist spice/hier/rc "/home/alexa/2020_06/06/45_route_rc_hier.spice";
silvaco_dev_extract.dsf
/* *********************************************************** */ /* DRC Script */ /* *********************************************************** */ Layers: N_WELL (42 /* Original */) , P_WELL (59 /* Original */) , ACTIVE (43 /* Original */) , THICK_ACTIVE (60 /* Original */) , PBASE (58 /* Original */) , POLY_CAP1 (28 /* Original */) , POLY (46 /* Original */) , SILICIDE_BLOCK (29 /* Original */) , N_PLUS_SELECT (45 /* Original */) , P_PLUS_SELECT (44 /* Original */) , POLY2 (56 /* Original */) , HI_RES_IMPLANT (34 /* Original */) , CONTACT (25 /* Original */) , METAL1 (49 /* Original */) , VIA (50 /* Original */) , METAL2 (51 /* Original */) , VIA2 (61 /* Original */) , METAL3 (62 /* Original */) , VIA3 (30 /* Original */) , METAL4 (31 /* Original */) , CAP_TOP_METAL (35 /* Original */) , VIA4 (32 /* Original */) , METAL5 (33 /* Original */) , VIA5 (36 /* Original */) , METAL6 (37 /* Original */) , DEEP_N_WELL (38 /* Original */) , GLASS (52 /* Original */) , PADS (26 /* Original */) , RES_ID (1, 0 /* Original */) , INDDMY_ID (2, 0 /* Original */) ; /* 1 */ free_layer_definition_order: yes; /* 2 */ Merge_Input: on; /* 3 */ Database_Precision: 1000; /* 4 */ Grid_Resolution: GridX = 1, GridY = 1; /* 5 */ Unit: 1um; /* 6 */ Incremental_Connect: no; /* 7 */ Update_layout: input=no, technology=no, new=no, layers= (pnp_id,pnp_e,pnp_c,npn_e,npn_b,gate,p_sd,n_sd,cmosp_id,cmosn_id,hvcmosp_id, hvpmos_d,hvnmos_s,rpplus_id,rnpoly_id,rpoly_id,rnwell_id,rpplus_pin,connect_poly, connect_nwell,substrate,sub_tie,well_tie,deepnwell_tie,p1p2_id,poly_con,poly2cap_con, ind_id,connect_metal1,ind_plus,ind_minus,NR_counter,width,space,radius ); Select: Layer1=PBASE, Layer2=N_PLUS_SELECT, LayerR=&PNP_PBASE, Relation=overlap, options=(not); UnderSize: Value=1um, Layer=&PNP_PBASE, LayerR=&A; Logicform: pnp_id=&A.dif.(ACTIVE); Contours: Layer=pnp_id, LayerR=pnp_e, options=(holes); Logicform: pnp_c=PBASE.and.ACTIVE.dif.(pnp_e.or.P_PLUS_SELECT.or.N_PLUS_SELECT); Logicform: npn_e=PBASE.and.N_PLUS_SELECT.AND.ACTIVE; LogicForm: npn_b=PBASE.and.ACTIVE.and.P_PLUS_SELECT; Logicform: gate=POLY.and.ACTIVE; Logicform: p_sd=(P_PLUS_SELECT.and.ACTIVE.AND.N_WELL).dif.(POLY.or.DEEP_N_WELL.or.RES_ID); Logicform: n_sd=(N_PLUS_SELECT.and.ACTIVE).dif.(POLY.or.THICK_ACTIVE.or.N_WELL); Logicform: cmosp_id=gate.and.P_PLUS_SELECT.and.N_WELL; Logicform: cmosn_id=gate.and.N_PLUS_SELECT.dif.THICK_ACTIVE; Logicform: hvcmosp_id=gate.and.P_PLUS_SELECT.and.THICK_ACTIVE.dif.P_WELL; Select: Layer1=ACTIVE, Layer2=hvcmosp_id, Relation=overlap, LayerR=&A1; Logicform: hvpmos_d=&A1.dif.(POLY.or.P_WELL.or.N_WELL); Select: Layer1=ACTIVE, Layer2=hvcmosp_id, Relation=overlap, LayerR=&A2; Logicform: hvpmos_s=&A2.dif.(hvcmosp_id.or.N_WELL.or.hvpmos_d); Logicform: hvcmosn_id=gate.and.N_PLUS_SELECT.and.THICK_ACTIVE; Select: Layer1=ACTIVE, Layer2=hvcmosn_id, Relation=overlap, LayerR=&A3; Logicform: hvnmos_d=&A3.dif.(POLY.or.P_PLUS_SELECT.or.N_WELL); Select: Layer1=ACTIVE, Layer2=hvcmosn_id, Relation=overlap, LayerR=&A4; Logicform: hvnmos_s=&A4.dif.(hvcmosn_id.or.hvnmos_d.or.P_PLUS_SELECT); Logicform: rpplus_id=N_WELL.and.P_PLUS_SELECT.and.ACTIVE.and.RES_ID; Logicform: rnpoly_id=N_PLUS_SELECT.and.POLY.and.RES_ID; Logicform: rpoly_id=(POLY.and.RES_ID).dif.N_PLUS_SELECT; Logicform: rnwell_id=(N_WELL.and.RES_ID).dif.P_PLUS_SELECT; LogicForm: &rpplus_pin1=(ACTIVE.and.P_PLUS_SELECT).dif.RES_ID; Select: Relation=touch, Layer1=&rpplus_pin1, Layer2=rpplus_id, LayerR=rpplus_pin; Logicform: connect_poly=POLY.dif.(RES_ID.or.POLY2); Logicform: connect_nwell=N_WELL.dif.(RES_ID); Substrate: LayerR=substrate; Logicform: sub_tie=(ACTIVE.AND.P_PLUS_SELECT).dif.(DEEP_N_WELL.or.N_WELL); Logicform: well_tie=(ACTIVE.AND.N_PLUS_SELECT.AND.N_WELL).dif.npn_e; Logicform: &deepnwell_tie1=ACTIVE.AND.N_PLUS_SELECT.AND.DEEP_N_WELL; Select: Relation=touch, Layer1=&deepnwell_tie1, Layer2=hvpmos_s, LayerR=&tempA; LogicForm: deepnwell_tie=&deepnwell_tie1.dif.&tempA; Logicform: p1p2_id=(POLY2.and.POLY).dif.ACTIVE; Logicform: poly_con=(POLY.dif.POLY2).and.CONTACT; Logicform: poly2cap_con=POLY.AND.POLY2.and.CONTACT; LogicForm: &ind_id1=METAL1.and.INDDMY_ID; PERIMETER: Layer=&ind_id1, Value=75, Type=GT, LayerR=ind_id; select: relation=vertex, Layer=METAL1, Options=(5:99999), LayerR=&metal1; //LogicForm: connect_metal1=&metal1.dif.ind_id; Corner: Layer=ind_id, Value=0.1, Options=(INSIDE,A90),LayerR=&temp11; Select: Relation=flush, Layer1=&temp11, Layer2=INDDMY_ID, LayerR=&temp2; Size: Layer=&temp2, within=ind_id, Options=(cut), step=0.5, Value=10, LayerR=ind_plus; Corner: Layer=ind_id, Value=0.2, Options=(inside,A90), LayerR=&temp12; Size: Layer=&temp12, within=ind_id, Options=(cut), step=0.5, Value=10, LayerR=&temp; //Select: Relation=flush, Layer1=&temp, Layer2=INDDMY_ID, LayerR=ind_minus, Options=(not); //Added new by AK 09/10/08 Select: Relation=vertex, Layer=&ind_id1, Options=(1:4), LayerR=&ind_minus1; LogicForm: ind_minus2=METAL2.and.INDDMY_ID.and.&ind_minus1; LogicForm: connect_metal1=(METAL1.dif.ind_id); //so that the 4-vertex M1 piece inside INDDMY will also get connectivity Select: Relation=overlap, Layer1=METAL2, Layer2=ind_id, LayerR=ind_minus; //New code ends Corner: Layer=ind_id, Value=0.1, Options=(inside,any), LayerR=NR_counter; LogicForm: width=(METAL1.and.METAL2.and.INDDMY_ID).dif.ind_minus2; LogicForm: &space1=(METAL2.and.INDDMY_ID).dif.METAL1; PERIMETER: Layer=&space1, LayerR=&space2, Value=79, Type=LT; SELECT: Relation=touch, layer1=&space2, Layer2=ind_id, LayerR=&space3; SELECT_edges: Relation=coincide, layer1=&space3, Layer2=ind_id, LayerR=&space4; SELECT: Relation=touch, layer1=&space3, Layer2=&space4, LayerR=space, options=(2:2); LogicForm: &space1A=(METAL2.and.INDDMY_ID).dif.METAL1; PERIMETER: Layer=&space1A, LayerR=radius, Value=80, Type=GE;
silvaco_parasitic_c.lisa
cpx order substrate, poly1, metal6, metal5, metal4, metal3, metal2, metal1; cpx Lateral metal1 /factor = 0.0358802,7.01689,3.32225 /max_distance = 3 /max_width = 0 /l_threshold = 0 ; cpx Area metal1 metal2 2.65626e-005 ; cpx Fringe metal1 metal2 4.15574e-005,0.320702,0.671211 /max_distance = 3 /max_width = 0 ; cpx Fringe metal2 metal1 2.32849e-005,0.674515,0.0001 /max_distance = 3 /max_width = 0 ; cpx Area metal1 metal3 1.11391e-005 ; cpx Fringe metal1 metal3 3.30439e-005,0.188656,1.04677 /max_distance = 3 /max_width = 0 ; cpx Fringe metal3 metal1 1.39623e-005,0.482325,0.0001 /max_distance = 3 /max_width = 0 ; cpx Area metal1 metal4 7.04721e-006 ; cpx Fringe metal1 metal4 2.91315e-005,0.13222,1.60862 /max_distance = 3 /max_width = 0 ; cpx Fringe metal4 metal1 1.02029e-005,0.457873,0.0442828 /max_distance = 3 /max_width = 0 ; cpx Area metal1 metal5 5.15393e-006 ; cpx Fringe metal1 metal5 2.63965e-005,0.103979,2.04571 /max_distance = 3 /max_width = 0 ; cpx Fringe metal5 metal1 8.08203e-006,0.401369,0.176259 /max_distance = 3 /max_width = 0 ; cpx Area metal1 metal6 4.06251e-006 ; cpx Fringe metal1 metal6 2.55413e-005,0.0918767,1.36021 /max_distance = 3 /max_width = 0 ; cpx Fringe metal6 metal1 6.70174e-006,0.371057,0.269995 /max_distance = 3 /max_width = 0 ; cpx Area metal1 poly1 2.65626e-005 ; cpx Fringe metal1 poly1 4.16003e-005,0.324475,0.66098 /max_distance = 3 /max_width = 0 ; cpx Fringe poly1 metal1 6.20891e-006,1.14039,1.06638 /max_distance = 3 /max_width = 0 ; cpx Area metal1 substrate 2.28684e-005 ; cpx Fringe metal1 substrate 4.00033e-005,0.301935,0.6695 /max_distance = 3 /max_width = 0 ; cpx Lateral metal2 /factor = 2.87372,14.324,4.09817 /max_distance = 3 /max_width = 0 /l_threshold = 0 ; cpx Area metal2 metal3 2.65626e-005 ; cpx Fringe metal2 metal3 4.14748e-005,0.316919,0.680858 /max_distance = 3 /max_width = 0 ; cpx Fringe metal3 metal2 2.88581e-005,0.548685,0.0001 /max_distance = 3 /max_width = 0 ; cpx Area metal2 metal4 1.11391e-005 ; cpx Fringe metal2 metal4 3.2822e-005,0.187093,1.02423 /max_distance = 3 /max_width = 0 ; cpx Fringe metal4 metal2 1.86321e-005,0.39867,0.000655802 /max_distance = 3 /max_width = 0 ; cpx Area metal2 metal5 7.04721e-006 ; cpx Fringe metal2 metal5 2.8634e-005,0.133856,1.47255 /max_distance = 3 /max_width = 0 ; cpx Fringe metal5 metal2 1.41837e-005,0.315184,0.179235 /max_distance = 3 /max_width = 0 ; cpx Area metal2 metal6 5.15393e-006 ; cpx Fringe metal2 metal6 2.73627e-005,0.11064,0.993631 /max_distance = 3 /max_width = 0 ; cpx Fringe metal6 metal2 1.15493e-005,0.27378,0.335871 /max_distance = 3 /max_width = 0 ; cpx Area metal2 poly1 1.11391e-005 ; cpx Fringe metal2 poly1 3.31559e-005,0.19132,1.04343 /max_distance = 3 /max_width = 0 ; cpx Fringe poly1 metal2 3.09488e-006,1.92499,0.0001 /max_distance = 3 /max_width = 0 ; cpx Area metal2 substrate 1.04324e-005 ; cpx Fringe metal2 substrate 3.25999e-005,0.182479,1.11013 /max_distance = 3 /max_width = 0 ; cpx Lateral metal3 /factor = 16.9639,18.1812,4.34947 /max_distance = 3 /max_width = 0 /l_threshold = 0 ; cpx Area metal3 metal4 2.65626e-005 ; cpx Fringe metal3 metal4 4.13121e-005,0.314694,0.672485 /max_distance = 3 /max_width = 0 ; cpx Fringe metal4 metal3 3.18446e-005,0.484687,0.0922895 /max_distance = 3 /max_width = 0 ; cpx Area metal3 metal5 1.11391e-005 ; cpx Fringe metal3 metal5 3.23603e-005,0.189379,0.929541 /max_distance = 3 /max_width = 0 ; cpx Fringe metal5 metal3 2.14639e-005,0.321993,0.17096 /max_distance = 3 /max_width = 0 ; cpx Area metal3 metal6 7.04721e-006 ; cpx Fringe metal3 metal6 3.00478e-005,0.140594,0.630696 /max_distance = 3 /max_width = 0 ; cpx Fringe metal6 metal3 1.67761e-005,0.252539,0.379062 /max_distance = 3 /max_width = 0 ; cpx Area metal3 poly1 7.04721e-006 ; cpx Fringe metal3 poly1 2.93665e-005,0.133438,1.6484 /max_distance = 3 /max_width = 0 ; cpx Fringe poly1 metal3 2.0743e-006,1.87101,0.0001 /max_distance = 3 /max_width = 0 ; cpx Area metal3 substrate 6.7576e-006 ; cpx Fringe metal3 substrate 2.90538e-005,0.129063,1.72374 /max_distance = 3 /max_width = 0 ; cpx Lateral metal4 /factor = 27.9705,19.8358,4.36927 /max_distance = 3 /max_width = 0 /l_threshold = 0 ; cpx Area metal4 metal5 2.65626e-005 ; cpx Fringe metal4 metal5 4.09763e-005,0.318422,0.613318 /max_distance = 3 /max_width = 0 ; cpx Fringe metal5 metal4 3.37177e-005,0.431092,0.212975 /max_distance = 3 /max_width = 0 ; cpx Area metal4 metal6 1.11391e-005 ; cpx Fringe metal4 metal6 3.46533e-005,0.19562,0.29801 /max_distance = 3 /max_width = 0 ; cpx Fringe metal6 metal4 2.33927e-005,0.283069,0.311585 /max_distance = 3 /max_width = 0 ; cpx Area metal4 poly1 5.15393e-006 ; cpx Fringe metal4 poly1 2.68931e-005,0.102796,2.22025 /max_distance = 3 /max_width = 0 ; cpx Fringe poly1 metal4 1.52826e-006,0.31447,4.60139 /max_distance = 3 /max_width = 0 ; cpx Area metal4 substrate 4.9973e-006 ; cpx Fringe metal4 substrate 2.66828e-005,0.100253,2.29093 /max_distance = 3 /max_width = 0 ; cpx Lateral metal5 /factor = 36.0895,20.8244,4.37456 /max_distance = 3 /max_width = 0 /l_threshold = 0 ; cpx Area metal5 metal6 2.65626e-005 ; cpx Fringe metal5 metal6 4.5747e-005,0.323023,0.133653 /max_distance = 3 /max_width = 0 ; cpx Fringe metal6 metal5 3.50076e-005,0.401176,0.29952 /max_distance = 3 /max_width = 0 ; cpx Area metal5 poly1 4.06251e-006 ; cpx Fringe metal5 poly1 2.48633e-005,0.0853638,2.61317 /max_distance = 3 /max_width = 0 ; cpx Fringe poly1 metal5 1.23351e-006,1.70834,0.0001 /max_distance = 3 /max_width = 0 ; cpx Area metal5 substrate 3.96456e-006 ; cpx Fringe metal5 substrate 2.47081e-005,0.0836769,2.67925 /max_distance = 3 /max_width = 0 ; cpx Lateral metal6 /factor = 14.3622,18.3981,4.14307 /max_distance = 3 /max_width = 0 /l_threshold = 0 ; cpx Area metal6 poly1 3.35256e-006 ; cpx Fringe metal6 poly1 2.41867e-005,0.0791816,1.71297 /max_distance = 3 /max_width = 0 ; cpx Fringe poly1 metal6 1e-006,0.0859697,0.983548 /max_distance = 3 /max_width = 0 ; cpx Area metal6 substrate 3.28557e-006 ; cpx Fringe metal6 substrate 2.40558e-005,0.0778986,1.75752 /max_distance = 3 /max_width = 0 ; cpx Lateral poly1 /factor = 1e-006,11.9201,4.11329 /max_distance = 3 /max_width = 0 /l_threshold = 0 ; cpx Area poly1 substrate 0.00345313 ; cpx Fringe poly1 substrate 0.000116307,2.18888,0.176024 /max_distance = 3 /max_width = 0 ;
silvaco_parasitic_r.lisa
rpx define_parasitic Wire /layer = DEEP_N_WELL /max_length = 0.0 /contact_oversize = 0.0 /contact_cluster = 0.0 /pres_sheet_resistivity_value = 10000.0 ; rpx define_parasitic Wire /layer = connect_metal1 /max_length = 0.0 /contact_oversize = 0.0 /contact_cluster = 0.0 /pres_sheet_resistivity_value = 0.05 ; rpx define_parasitic Wire /layer = METAL2 /max_length = 0.0 /contact_oversize = 0.0 /contact_cluster = 0.0 /pres_sheet_resistivity_value = 0.05 ; rpx define_parasitic Wire /layer = METAL3 /max_length = 0.0 /contact_oversize = 0.0 /contact_cluster = 0.0 /pres_sheet_resistivity_value = 0.05 ; rpx define_parasitic Wire /layer = METAL4 /max_length = 0.0 /contact_oversize = 0.0 /contact_cluster = 0.0 /pres_sheet_resistivity_value = 0.05 ; rpx define_parasitic Wire /layer = METAL5 /max_length = 0.0 /contact_oversize = 0.0 /contact_cluster = 0.0 /pres_sheet_resistivity_value = 0.05 ; rpx define_parasitic Wire /layer = METAL6 /max_length = 0.0 /contact_oversize = 0.0 /contact_cluster = 0.0 /pres_sheet_resistivity_value = 0.01 ; rpx define_parasitic Wire /layer = POLY2 /max_length = 0.0 /contact_oversize = 0.0 /contact_cluster = 0.0 /pres_sheet_resistivity_value = 100.0 ; rpx define_parasitic Contact /layer = VIA /top = connect_metal1 /bottom = METAL2 /pres_area_resistivity_value = 0.05 ; rpx define_parasitic Contact /layer = VIA2 /top = METAL2 /bottom = METAL3 /pres_area_resistivity_value = 0.05 ; rpx define_parasitic Contact /layer = VIA3 /top = METAL3 /bottom = METAL4 /pres_area_resistivity_value = 0.05 ; rpx define_parasitic Contact /layer = VIA4 /top = METAL4 /bottom = METAL5 /pres_area_resistivity_value = 0.05 ; rpx define_parasitic Contact /layer = VIA5 /top = METAL6 /bottom = METAL5 /pres_area_resistivity_value = 0.04 ; rpx define_parasitic Wire /layer = connect_nwell /max_length = 0.0 /contact_oversize = 0.0 /contact_cluster = 0.0 /pres_sheet_resistivity_value = 10000.0 ; rpx define_parasitic Wire /layer = connect_poly /max_length = 0.0 /contact_oversize = 0.0 /contact_cluster = 0.0 /pres_sheet_resistivity_value = 50.0 ; rpx define_parasitic Contact /layer = poly2cap_con /top = POLY2 /bottom = connect_metal1 /pres_area_resistivity_value = 0.05 ; rpx define_parasitic Contact /layer = poly_con /top = connect_metal1 /bottom = connect_poly /pres_area_resistivity_value = 0.05 ;