15 : Domain Decomposition in Hipex Parasitic Capacitance Extraction
Minimum Required Versions: Expert 5.2204.3.R, Hipex 3.8.7.R
This example demonstrates running Hipex Parasitic Capacitance Extraction in Domain Decomposition mode using Field Solvers. The functionality is available for Linux only.
The layout decomposition is used in the both solver engines and in the 3D structure builder to process layouts of large size. Two ways of decomposition are supported by Hipex for parasitic capacitance extraction:
- Stripe decomposition
- Box decomposition
Hipex forms a set of overlapped partial layouts (original stripes/boxes extended with vicinities, and vicinity areas themselves) to build a series of virtual 3D structures (see Figure1 ). These structures are simulated separately, and then results are combined (using proprietary non-duplicating technique) to produce parasitic capacitors for the whole layout.
Parallel computations are used for the both 3D structure building (by running simultaneously multiple instances of Victory Process) and for Field Solver calculations (by running simultaneously multiple instances of Victory RCx or using multithreading in Stellar solver).
Domain decomposition shows promising results for Field Solver capacitance extraction. Without noticeable sacrifice of accuracy, it dramatically increases the performance of extraction. Decomposition is a way to obtain accurate extraction for layouts too big in size to be processed in one piece.
We will demonstrate domain decomposition on 6 by 6 pixels non-planar TFT layout (see Figure2 ).
1: Start Expert
Run Expert layout editor (either with the command "expert &" or by clicking the "Expert" icon).
2: Load GDS file
Choose File->Import... menu command. In appeared Import Project dialog:
- select GDS II in the File type control;
- choose the array_of_pixel2_6x6.gds file using dialog's file browser;
- choose technology file techfiles/hipex/tft.tcn using the Technology control;
- click the Open button;
- choose the array_of_pixel2_6x6 cell to open for extraction.
3: Load Extraction Settings
Select Verification->Extraction->Setup command to open the "Layout Parameter Extraction Setup" dialog. Press the Load button, and choose the array_of_pixel2_6x6_240_300_50_50.lpe file to load required extraction settings.
4: Set device directory
Before performing the extraction of the devices with all the netlist parameters, the user needs to set the proper path to the LISA generic device extraction file. Select Setup->Technology->Device Path Setup command to open the "Device Path Setup" dialog. Specify the <...>/techfiles/hipex directory name in the LISA files directory control and press the Set button.
5: Verify parasitic capacitance extraction settings in Domain Decomposition mode
- Make sure the techfiles/pex/tft_process__m.in process and the techfiles/pex/tft_materials__m.in materials files are specified in the Process file and Materials file edit lines in the "Technology" tab of the "LPE Setup" dialog (see Figure3 ).
- Make sure the appropriate versions of DeckBuild, Victory Process and Victory Mesh are specified (if needed) in the Process simulation setup section in the "Technology" tab of the "LPE Setup" dialog (see Figure3 ).
- Verify capacitance mapping and mapping of masked dielectric layers in the "Parasitic Extraction (Capacitance)" tab of the "LPE Setup" dialog to ensure proper mask usage in process description (see Figure4 ).
- Make sure the Boxes radio button is turned on and the appropriate values of Size and Vicinity settings are specified in the Decomposition group box in the "Parasitic Extraction (Capacitance)" tab of the "LPE Setup" dialog (see Figure5 ).
- Make sure the Victory RCx radio button is turned on and the appropriate version of Victory RCx is specified (if needed) in the Field Solver button group in the "Parasitic Extraction (Capacitance)" tab of the "LPE Setup" dialog (see Figure6 ).
- Specify the extraction parameters in the "Victory RCx Field Solver C-extraction" tab of the "LPE Setup" dialog (see Figure7 ).
6: Performing extraction.
First, run netlist extraction with Verification->Extraction->Net->Run command from the main Expert window. Then, run parasitic capacitance extraction with Verification->Extraction->C->Run command. Press the Open Netlist button to view capacitance netlist.
tft.tcn
[an error occurred while processing this directive]
run_c.lisa
INCLUDE ("array_of_pixel2_6x6_opt.lisa"); INCLUDE ("array_of_pixel2_6x6_net_cmd.lisa"); HIPEX_SUMMARY_PATH = "/home/alexa/webexaples/15"; HDB READ; print("Writing Box Database..."); HDB WRITE_BOXES /FULL "default" 240 300 50 50; print("Boxes OK."); CPX MAIN "default" /rewrite /box; netlist spice/hier/c "/home/alexa/webexaples/15/array_of_pixel2_6x6_c_hier.spice";
array_of_pixel2_6x6_opt.lisa
!-------------------------------------------------------------------- !Run file !DESIGN : design !TECHNO : techno !USER : !TIME : Thu Jun 9 22:52:35 2022 !-------------------------------------------------------------------- TOP_CELL = "array_of_pixel2_6x6"; HIPEX_DB_DIRECTORY = "database"; !-------------------------------------------------------------------- !Extraction: LISA template command file !-------------------------------------------------------------------- !-------------------------------------------------------------------- !Layout parameters !-------------------------------------------------------------------- HIPEX_LAYOUT_FORMAT = "GDS"; HIPEX_LAYOUT_FILE = "array_of_pixel2_6x6$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 = "YES"; HIPEX_COMMENT_TOP_SUBCKT = "NO"; HIPEX_HIER_SPICE_WL_NAME = "/home/alexa/webexaples/15/array_of_pixel2_6x6_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 = "ACCURATELADDER"; NETLIST_LINE_LENGTH = 80; NETLIST_EXCLUDE_LIBRARY_PREFIX = "NO"; NETLIST_GLOBALS_IN_SUBCKT_PINS = "YES"; NETLIST_TEXTED_PINS = "NO"; NETLIST_LIBRARIES = {}; !-------------------------------------------------------------------- !ERC parameters !-------------------------------------------------------------------- HIPEX_DANGLE_FLAG = "YES"; HIPEX_CAP_MESSAGE = "NO"; HIPEX_DIODE_MESSAGE = "NO"; HIPEX_RENAME_OPENS = "YES"; 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 = "YES"; HIPEX_XY_LOCATION = "NO"; HIPEX_CASE_SENSITIVE_NET_NAMES = "YES"; HIPEX_AUTOGENERATE_LOCAL = "YES"; POWER_NODE = {}; GROUND_NODE = {"Subs"}; GLOBAL_TEXT_LIST = {"Subs"}; 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 {"pixel2"} /EXPLODE; HIPEX SET_CELL_OPTIONS {"array_of_pixel2_6x6"} /EXPLODE; !-------------------------------------------------------------------- !Pins parameters !-------------------------------------------------------------------- HIPEX_IGNORE_DANGLE_PINS = "YES"; !-------------------------------------------------------------------- !BackAnnotate parameters !-------------------------------------------------------------------- HIPEX_BACKANNOTATE = "NO"; !-------------------------------------------------------------------- !Process Simulation and Materials parameters !-------------------------------------------------------------------- HIPEX_PROCESS_FILE = "../techfiles/pex/tft_process__m.in"; HIPEX_MATERIALS_FILE = "../techfiles/pex/tft_materials__m.in"; HIPEX_DECKBUILD_VERSION = "5.2.14.R"; HIPEX_VICTORY_PROCESS_VERSION = "7.76.1.R"; HIPEX_VICTORY_MESH_VERSION = "1.8.4.R"; !-------------------------------------------------------------------- !Capacitance Extraction parameters !-------------------------------------------------------------------- CPX_COUPLED_THRESHOLD = 0.0; CPX_EXTRACT_DANGLES = "NO"; CPX_OUTPUT_DUMMY_CAPA = "NO"; CPX_FIELD_SOLVER = "VICTORYRCX"; !-------------------------------------------------------------------- !Stellar Field Solver C-extraction 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_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/webexaples/15/RenewSavedFile.sav"; !-------------------------------------------------------------------- !Victory RCx Capacitance Extraction parameters !-------------------------------------------------------------------- CPX_VICTORYRCX_EXTRACTION_FILE = "array_of_pixel2_6x6_victoryrcx_c_cmd.in"; CPX_VICTORYRCX_VERSION = "1.0.7.R"; CPX_VICTORYRCX_PARALLEL_MODE = "YES"; CPX_VICTORYRCX_CPU_NUMBER = 2; !-------------------------------------------------------------------- !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"; !-------------------------------------------------------------------- !Substrate Extraction parameters !-------------------------------------------------------------------- SPX_RUN_SIPEX = "NO"; SPX_MODE = "SIPEX"; SPX_SILICON_THICKNESS = 300.0; SPX_BACKSIDE = "CONDUCTIVE_CONNECTED"; SPX_BACKSIDE_NODE = "cwsBackside"; SPX_INCLUDE_BACKSIDE_MODEL = "NO"; SPX_BACKSIDE_THICKNESS = 10.0; SPX_BACKSIDE_CONDUCTIVITY = 3.3e-10; SPX_BACKSIDE_PERMITTIVITY = 6.2; SPX_SIPEX_MANUFACTURING_DATABASE = ""; !-------------------------------------------------------------------- !Coefficient Units parameters !-------------------------------------------------------------------- HIPEX SET_UNIT /CAPACITANCE "F"; HIPEX SET_UNIT /RESISTANCE "Ohm"; HIPEX SET_UNIT /LENGTH "um";
array_of_pixel2_6x6_net_cmd.lisa
!-------------------------------------------------------------------- !Net command file !DESIGN : design !TECHNO : techno !USER : !TIME : Thu Jun 9 22:51:07 2022 !-------------------------------------------------------------------- ! HIPEX to CUP map table cup layer "Gate" /hipex_layer="Gate"; cup layer "M4" /hipex_layer="M4"; cup layer "SD" /hipex_layer="SD"; cup layer "ITO" /hipex_layer="ITO"; cup layer "via" /hipex_layer="via"; ! GDS LAYER MAP hipex layer /gds_layer= 0 /gds_type= 0 /geom_layer="tft_rec"; hipex layer /gds_layer= 1 /gds_type= 0 /geom_layer="Gate" /text_layer="_HPX_TEXT_Gate"; hipex layer /gds_layer= 4 /gds_type= 0 /geom_layer="Via"; hipex layer /gds_layer= 5 /gds_type= 0 /geom_layer="M4" /text_layer="_HPX_TEXT_M4"; hipex layer /gds_layer= 8 /gds_type= 0 /geom_layer="NIP"; hipex layer /gds_layer= 11 /gds_type= 0 /geom_layer="SD" /text_layer="_HPX_TEXT_SD"; hipex layer /gds_layer= 70 /gds_type= 0 /geom_layer="IMDx"; hipex layer /gds_layer= 71 /gds_type= 0 /geom_layer="OxydeGate"; hipex layer /gds_layer= 72 /gds_type= 0 /geom_layer="ITO"; hipex layer /gds_layer= 74 /gds_type= 0 /geom_layer="aSi"; hipex layer /gds_layer= 80 /gds_type= 0 /geom_layer="Passivation"; hipex layer /gds_layer= 81 /gds_type= 0 /geom_layer="via"; hipex layer /gds_layer= 82 /gds_type= 0 /geom_layer="pd_rec"; hipex layer /gds_layer= 83 /gds_type= 0 /geom_layer="sd_pd"; hipex layer /gds_layer= 84 /gds_type= 0 /geom_layer="sd_connect"; hipex layer /gds_layer= 85 /gds_type= 0 /geom_layer="channel"; hipex layer /gds_layer= 86 /gds_type= 0 /geom_layer="sd_ovl"; hipex layer /gds_layer= 87 /gds_type= 0 /geom_layer="sd_aux"; hipex layer /gds_layer= 88 /gds_type= 0 /geom_layer="ffzone"; ! TEXT TYPES ! PORT LAYERS ! SOFT LAYERS ! MISC (optional) statementsS ! CONNECTIVITY hipex attach "_HPX_TEXT_Gate" "Gate"; hipex connect "ITO" "M4" /contact="via"; hipex connect "M4" "Gate" /contact="via"; hipex attach "_HPX_TEXT_M4" "M4"; hipex attach "_HPX_TEXT_SD" "SD"; hipex connect "sd_connect" "SD"; hipex connect "sd_connect" "M4" /contact="via"; hipex attach "_HPX_TEXT_SD" "sd_connect"; hipex connect "sd_pd" "sd_connect"; ! DEVICES TEXTS ! DEVICE DEFINITIONS hipex generic_device "tft_rec" /pins=({{"sd_connect", "D"}, {"Gate", "G"}, {"sd_connect", "S"}}) /auxs={"sd_ovl", "channel", "sd_aux"} /by_shape /func="tft" /element_name="NMOS" /model_name="TFT"; hipex generic_device "pd_rec" /pins=({{"ITO", "POS"}, {"sd_pd", "NEG"}}) /auxs={"ffzone"} /by_shape /func="pd" /element_name="D" /model_name="PD"; Include("/home/viktarm/examples/hipex/2022_04_01/15/techfiles/hipex/tft_lvs_d.lisa"); ! SOFT/WELL CHECKS ! MASKED DIELECTRIC LAYERS cup masked dielectric layer "IMDx"; cup masked dielectric layer "NIP"; cup masked dielectric layer "OxydeGate"; cup masked dielectric layer "Passivation"; cup masked dielectric layer "Via"; cup masked dielectric layer "aSi"; ! SUBSTRATE EXTRACTION LAYERS
array_of_pixel2_6x6_victoryrcx_c_cmd.in
#go victoryrcx interconnect capacitance AdaptC=0.05 minCAP=1e-19
tft_process__m.in
go victoryp init depth=10 oxide GasHeight=10 separate.layers # Metal gate deposit material=aluminum_m thickness=0.12 max mask "Gate" etch material=aluminum_m thickness=0.12 max strip resist electrodes "Gate" material=aluminum_m # Gate Oxide deposit material=SiN_m thickness=0.15 conformal # Active Amorphous Silicon deposit material=aSi_m thickness=0.033 conformal mask "aSi" etch material=aSi_m max strip resist # Nitride Hard Mask deposit material=SiN_m thickness=0.135 conformal # Source-Drain Contacts deposit material=Cr_m thickness=0.12 conformal mask "SD" etch material=Cr_m max strip resist electrodes "SD" material=Cr_m # NIP deposit material=t_silicon_m thickness=1.8 conformal mask "NIP" etch material=t_silicon_m max strip resist # ITO deposit material=ITO_m thickness=0.06 conformal mask "ITO" etch material=ITO_m max strip resist electrodes "ITO" material=ITO_m # IMDx deposit material=SiON_m thickness=2.072 conformal mask "IMDx" etch material=SiON_m max strip resist # Top Metal deposit material=M4aluminum_m thickness=0.646 conformal mask "M4" etch material=M4aluminum_m max strip resist electrodes "M4" material=M4aluminum_m # Passivation deposit material=Passiv_m thickness=2.25 max # Via ##mask "Via" reverse ##etch material("Passiv") max ##strip resist save name=""
tft_materials__m.in
material material("aluminum_m") conductivity=376676 material material("aSi_m") permittivity=7.514 material material("Cr_m") conductivity=5000 material material("ITO_m") conductivity=5000 material material("Passiv_m") permittivity=9.225 material material("SiN_m") permittivity=6.21 material material("t_silicon_m") permittivity=16.5 material material("SiON_m") permittivity=7.82 material material("M4aluminum_m") conductivity=5000