02 : Hipex Parasitic Capacitance Extraction (Hipex-C)
Minimum Required Versions: Expert 5.2204.3.R, Hipex 3.8.0.R
This example demonstrates running Hipex Parasitic Capacitance Extraction on a layout in the Expert interactive layout environment.
1: Setting up Hipex-C with Expert
Start the Expert layout editor(either with the command expert or by clicking the expert icon). From the main menu bar at the top, click File->Open to pop up the Load Project menu, navigate to the directory into which the hipex_ex02.eld design database file was downloaded and Open it.This will call up the Open Cell(s) menus, and here double-click mux4, the top-level cell. By default this shows the hierarchical view of the design; you can see the full details ( figure1 ) by clicking View->Cell View->Flat. From the main Expert menu, click Verification->Extraction->Setup ; this pops up the Layout Parameter Extraction Setup panel (see Figure2 with Cell Explosion page shown). The pages within this panel are accessed using the menu on the left. The controls on these pages are used to load the required Hipex technology files and change any settings to customize the extraction. Refer to previous example (hipex_ex01) for overview of these controls.
To assure the anticipated behavior of the example, some controls need to be attended and values corrected if necessary.
In particular, for extraction a fully hierarchical netlist, click Set all->Hcell while visiting the fourth page ( Cell Explosion ).
Then, attend second page, Node Names , and make sure VDD is assigned as power node and VSS as ground node in "Global Node Names" section of this page.
Finally, choose the sixth page, Technology . For Derived layer generation , select Use external script and use the file browser to specify the hipex_ex02_lvs.dsf file previously downloaded. This file controls the generation of device recognition layers from the drawn/mask layers.
To specify settings for parasitic capacitance extraction, select Use external LISA script in the Parasitic capacitance technology section and use the file browser to specify the hipex_ex02_c.lisa file previously downloaded.
For settings to be in effect, click OK in the Layout Parameter Extraction Setup panel.
2: Hipex Parasitic Capacitance Extraction
First, the netlist extraction must be run, with Verification->Extraction->Hipex-Net->Run from the main Expert window. This step is necessary even if only the parasitics are required, because the full connectivity must first be extracted to identify all the nodes.
To perform parasitic capacitance extraction, invoke Verification->Extraction->Hipex-C->Run command from the main Expert window. When the parasitic capacitance extraction has completed, a window will popup, prompting to Close, Open Netlist or Show Detail (ie. show the run log). The Open Netlist option is worth noting; rather than simply showing a text netlist, it opens a Netlist Editor window (see Figure3 ), and shows both the text netlist (on the left) and a hierarchy display (on the right). These views are linked; clicking on a device in the hierarchy display will highlight the corresponding item in the text netlist. It is also linked to the layout, so clicking on the item in the hierarchy display will also jump to the relevant cell in the Expert layout editor. As with the plain netlist extraction, the parasitic extraction is actually done in different stages internally; the first stage is to create databases holding information about the parasitics, and the second stage is to generate netlists or parasitic files from the databases. So after creating the parasitic capacitance netlist, you can go into the Verification->Extraction->Netlister menu and create other types of netlists, including a flat netlist from the hierarchical databases: Verification->Extraction->Netlister->C Flat Spice Netlist (see Figure4 ).
hipex_ex02_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 ;
hipex_ex02_lvs.dsf
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;
hipex_ex02_net_cmd.lisa
!-------------------------------------------------------------------- !Net command file !DESIGN : design !TECHNO : techno !USER : !TIME : Sat May 30 01:00:53 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= 6 /geom_layer="METAL4_port_text" /text_layer="METAL4_port_text_HPX_TEXT"; 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= 6 /geom_layer="METAL5_port_text" /text_layer="METAL5_port_text_HPX_TEXT"; 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= 6 /geom_layer="METAL6_port_text" /text_layer="METAL6_port_text_HPX_TEXT"; 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 /text_layer="M1_LABEL"; hipex layer /gds_layer= 49 /gds_type= 5 /geom_layer="METAL1_port"; hipex layer /gds_layer= 49 /gds_type= 6 /geom_layer="METAL1_port_text" /text_layer="METAL1_port_text_HPX_TEXT"; 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= 51 /gds_type= 6 /geom_layer="METAL2_port_text" /text_layer="METAL2_port_text_HPX_TEXT"; 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= 6 /geom_layer="METAL3_port_text" /text_layer="METAL3_port_text_HPX_TEXT"; 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 hipex port_layer "METAL1_port_text_HPX_TEXT"; copy_ "METAL1_port_text" "METAL1_port_text_HPX_PORT$"; hipex port_layer "METAL1_port_text_HPX_PORT$" {"METAL1_port_text"}; hipex port_layer "METAL2_port_text_HPX_TEXT"; copy_ "METAL2_port_text" "METAL2_port_text_HPX_PORT$"; hipex port_layer "METAL2_port_text_HPX_PORT$" {"METAL2_port_text"}; hipex port_layer "METAL3_port_text_HPX_TEXT"; copy_ "METAL3_port_text" "METAL3_port_text_HPX_PORT$"; hipex port_layer "METAL3_port_text_HPX_PORT$" {"METAL3_port_text"}; hipex port_layer "METAL4_port_text_HPX_TEXT"; copy_ "METAL4_port_text" "METAL4_port_text_HPX_PORT$"; hipex port_layer "METAL4_port_text_HPX_PORT$" {"METAL4_port_text"}; hipex port_layer "METAL5_port_text_HPX_TEXT"; copy_ "METAL5_port_text" "METAL5_port_text_HPX_PORT$"; hipex port_layer "METAL5_port_text_HPX_PORT$" {"METAL5_port_text"}; hipex port_layer "METAL6_port_text_HPX_TEXT"; copy_ "METAL6_port_text" "METAL6_port_text_HPX_PORT$"; hipex port_layer "METAL6_port_text_HPX_PORT$" {"METAL6_port_text"}; ! 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 attach "METAL1_port_text_HPX_TEXT" "METAL1_port_text"; hipex connect "METAL2" "METAL2_port_text"; hipex connect "METAL2" "METAL2_port"; hipex connect "METAL2" "METAL3" /contact="VIA2"; hipex attach "METAL2_port_text_HPX_TEXT" "METAL2"; hipex attach "METAL2_port_text_HPX_TEXT" "METAL2_port_text"; hipex connect "METAL3" "METAL3_port_text"; hipex connect "METAL3" "METAL4" /contact="VIA3"; hipex attach "METAL3_port_text_HPX_TEXT" "METAL3"; hipex attach "METAL3_port_text_HPX_TEXT" "METAL3_port_text"; hipex connect "METAL4" "METAL4_port_text"; hipex connect "METAL4" "METAL5" /contact="VIA4"; hipex attach "METAL4_port_text_HPX_TEXT" "METAL4"; hipex attach "METAL4_port_text_HPX_TEXT" "METAL4_port_text"; hipex connect "METAL5" "METAL5_port_text"; hipex connect "METAL5" "METAL6" /contact="VIA5"; hipex attach "METAL5_port_text_HPX_TEXT" "METAL5"; hipex attach "METAL5_port_text_HPX_TEXT" "METAL5_port_text"; hipex connect "METAL6" "METAL6_port_text"; hipex attach "METAL6_port_text_HPX_TEXT" "METAL6"; hipex attach "METAL6_port_text_HPX_TEXT" "METAL6_port_text"; 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_text"; 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 attach "M1_LABEL" "connect_metal1"; hipex attach "METAL1_port_text_HPX_TEXT" "connect_metal1"; 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_ex02_opt.lisa
!-------------------------------------------------------------------- !Run file !DESIGN : design !TECHNO : techno !USER : !TIME : Sat May 30 01:01:27 2020 !-------------------------------------------------------------------- TOP_CELL = "mux4"; HIPEX_DB_DIRECTORY = "database"; !-------------------------------------------------------------------- !Extraction: LISA template command file !-------------------------------------------------------------------- !-------------------------------------------------------------------- !Layout parameters !-------------------------------------------------------------------- HIPEX_LAYOUT_FORMAT = "GDS"; HIPEX_LAYOUT_FILE = "mux4$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/02/mux4_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"; !-------------------------------------------------------------------- !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/02/RenewSavedFile.sav"; CPX_THREED_GENERATION = "NO"; CPX_THREED_FILENAME = "/home/alexa/2020_06/02/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_c.lisa
INCLUDE ("hipex_ex02_opt.lisa"); INCLUDE ("hipex_ex02_net_cmd.lisa"); INCLUDE ("../hipex_ex02_c.lisa"); HIPEX_SUMMARY_PATH = "/home/alexa/2020_06/02"; HDB READ; print("Writing Stripe Database..."); HDB WRITE_STRIPES /FULL "default" 200 10; print("Stripes OK."); CPX MAIN "default" /append; netlist spice/hier/c "/home/alexa/2020_06/02/mux4_c_hier.spice";
run_net.lisa
INCLUDE ("hipex_ex02_opt.lisa"); INCLUDE ("hipex_ex02_net_cmd.lisa"); HIPEX_SUMMARY_PATH = "/home/alexa/2020_06/02"; HIPEX_NET_MAIN();
run_netlist.lisa
INCLUDE ("hipex_ex02_opt.lisa"); INCLUDE ("hipex_ex02_net_cmd.lisa"); INCLUDE ("S:\\examples\\hipex_web\\hipex_ex02\\hipex_ex02_c.lisa"); HDB READ; print("C Flat SPICE Netlist generation..."); netlist spice/flat/c "S:/examples/hipex_web/hipex_ex02/mux4_c_flat.spice";