tree: 411f16a9e82dc776fdeff23c356b27394944779f [path history] [tgz]
  1. rule_decks/
  2. testing/
  3. .gitkeep
  4. gf180IC.lvs
  5. README.md
  6. run_lvs.py
IC/klayout/lvs/README.md

LVS Documentation

Explains how to use the runset.

Folder Structure

📁 lvs
  📁testing                        Testing environment directory for GF180IC LVS. 
  📁rule_decks                     All LVS rule decks used in GF180IC.
  📜gf_018IC.lvs                  Main LVS rule deck that call all runsets.
  📜README.md                      This file to document the LVS run for GF180IC.
  📜run_lvs.py                     Main python script used for GF180IC LVS.

Prerequisites

You need the following set of tools installed to be able to run GF180IC LVS:

  • Python 3.6+
  • KLayout 0.28.4+

Usage

The run_lvs.py script takes your input gds and netlist files to run LVS rule deck of GF180IC technology on it with switches to select subsets of all checks.

    run_lvs.py (--help| -h)
    run_lvs.py (--layout=<layout_path>) (--netlist=<netlist_path>) (--variant=<combined_options>) [--thr=<thr>] [--run_dir=<run_dir_path>] [--topcell=<topcell_name>] [--run_mode=<run_mode>] [--verbose] [--lvs_sub=<sub_name>] [--no_net_names] [--spice_comments] [--scale] [--schematic_simplify] [--net_only] [--top_lvl_pins] [--combine] [--purge] [--purge_nets]

Example:

    python3 run_lvs.py --layout=testing/testcases/extraction_checking/nfet_01v8.gds --netlist=testing/testcases/extraction_checking/nfet_01v8.cdl --variant=C --run_mode=deep --run_dir=lvs_switch_checking --lvs_sub=vdd!

Options

  • --help -h Print this help message.

  • --layout=<layout_path> The input GDS file path.

  • --netlist=<netlist_path> The input netlist file path.

  • --variant=<combined_options> Select combined options of metal_top, mim_option, and metal_level. Allowed values (A, B, C).

    • gf180IC=A: Select metal_top=30K mim_option=A metal_level=3LM poly_res=1K, and mim_cap=2
    • gf180IC=B: Select metal_top=11K mim_option=B metal_level=4LM poly_res=1K, and mim_cap=2
    • gf180IC=C: Select metal_top=9K mim_option=B metal_level=5LM poly_res=1K, and mim_cap=2
  • --thr=<thr> The number of threads used in run.

  • --run_dir=<run_dir_path> Run directory to save all the results [default: pwd]

  • --topcell=<topcell_name> Topcell name to use.

  • --run_mode=<run_mode> Select klayout mode Allowed modes (flat , deep, tiling). [default: deep]

  • --lvs_sub=<sub_name> Substrate name used in your design.

  • --verbose Detailed rule execution log for debugging.

  • --no_net_names Discard net names in extracted netlist.

  • --spice_comments Enable netlist comments in extracted netlist.

  • --scale Enable scale of 1e6 in extracted netlist.

  • --schematic_simplify Enable schematic simplification in input netlist.

  • --net_only Enable netlist object creation only in extracted netlist.

  • --top_lvl_pins Enable top level pins only in extracted netlist.

  • --combine Enable netlist combine only in extracted netlist.

  • --purge Enable netlist purge all only in extracted netlist.

  • --purge_nets Enable netlist purge nets only in extracted netlist.

LVS Outputs

You could find the run results at your run directory if you previously specified it through --run_dir=<run_dir_path>. Default path of run directory is lvs_run_<date>_<time> in current directory.

Folder Structure of run results

📁 lvs_run_<date>_<time>
  📜 lvs_run_<date>_<time>.log
  📜 <your_design_name>.cir
  📜 <your_design_name>.lvsdb

The result is a database file (<your_design_name>.lvsdb) contains LVS extractions and comparison results. You could view it on your file using: klayout <input_gds_file> -m <resut_db_file> , or you could view it on your gds file via netlist browser option in tools menu using klayout GUI.

You could also find the extracted netlist generated from your design at (<your_design_name>.cir) in your run directory.

Devices Status

Device GroupDevice NameSim ModelsGoogle Standard NameStatusStandard DigitalAnalogAdvanced AnalogRFHVESD
MOSFETnmos_1p8:heavy_check_mark:nfet_01v8:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETnmos_1p8_nat:heavy_check_mark:nfet_01v8_nvt:heavy_check_mark:YesYesMaybeMaybeNoNo
MOSFETnmos_1p8_mvt:heavy_check_mark:nfet_01v8_mvt:x:NoYesYesMaybeNoNo
MOSFETnmos_3p3:heavy_check_mark:nfet_03v3:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETnmos_3p3_mvt:heavy_check_mark:nfet_03v3_mvt:x:NoYesYesMaybeNoNo
MOSFETnmos_3p3_nat:heavy_check_mark:nfet_03v3_nvt:heavy_check_mark:YesYesMaybeMaybeNoNo
MOSFETpmos_1p8:heavy_check_mark:pfet_01v8:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETpmos_1p8_mvt:heavy_check_mark:pfet_01v8_mvt:x:NoYesYesMaybeNoNo
MOSFETpmos_3p3:heavy_check_mark:pfet_03v3:heavy_check_mark:YesYesYesMaybeNoNo
BJTvnpn_5x5:heavy_check_mark:npn_05p00x05p00:heavy_check_mark:NoYesYesYesMaybeNo
BJTvnpn_2x2:heavy_check_mark:npn_02p00x02p00:heavy_check_mark:NoYesYesYesMaybeNo
BJTvpnp_10x10:heavy_check_mark:pnp_10p00x10p00:heavy_check_mark:NoYesYesYesMaybeNo
BJTvpnp_5x5:heavy_check_mark:pnp_05p00x05p00:heavy_check_mark:NoYesYesYesMaybeNo
BJTvpnp_0p46x0p46:heavy_check_mark:pnp_00p46x00p46:heavy_check_mark:NoYesYesYesMaybeNo
BJTvpnp_0p46x1p2:heavy_check_mark:pnp_00p46x01p20:heavy_check_mark:NoYesYesYesMaybeNo
BJTvpnp_1p2x2p5:heavy_check_mark:pnp_01p20x02p50:heavy_check_mark:NoYesYesYesMaybeNo
BJTlpnp_1p8_0p54x0p54:heavy_check_mark:pnp_00p54x00p54_01v8:x:NoYesYesYesMaybeNo
BJTlpnp_1p8_0p54x1p2:heavy_check_mark:pnp_00p54x01p20_01v8:x:NoYesYesYesMaybeNo
BJTlpnp_1p8_1p2x2p5:heavy_check_mark:pnp_01p20x02p50_01v8:x:NoYesYesYesMaybeNo
BJTlpnp_1p8_5x5:heavy_check_mark:pnp_05p00x05p00_01v8:x:NoYesYesYesMaybeNo
DIODEnp_1p8:heavy_check_mark:diode_nd2ps_01v8:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEnp_1p8_nat:heavy_check_mark:diode_nd2ps_01v8_nvt:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEnp_3p3:heavy_check_mark:diode_nd2ps_03v3:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEnp_3p3_nat:heavy_check_mark:diode_nd2ps_03v3_nvt:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEpn_1p8:heavy_check_mark:diode_pd2nw_01v8:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEpn_3p3:heavy_check_mark:diode_pd2nw_03v3:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEnwp:heavy_check_mark:diode_nw2ps:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEdnwpw:heavy_check_mark:diode_pw2dw:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEdnwps:heavy_check_mark:diode_dw2ps:heavy_check_mark:MaybeYesYesMaybeNoMaybe
RESnplus_u:heavy_check_mark:res_nd_3t_uns:x:NoYesYesMaybeMaybeMaybe
RESnplus_s:heavy_check_mark:res_nd_3t_sal:x:NoYesYesMaybeMaybeMaybe
RESnwell:heavy_check_mark:res_nw_3t:x:NoYesYesMaybeMaybeMaybe
RESnpolyf_u:heavy_check_mark:res_npo_3t_uns:x:NoYesYesMaybeMaybeMaybe
RESnpolyf_s:heavy_check_mark:res_npo_3t_sal:x:NoYesYesMaybeMaybeMaybe
RESnpolyf_u_1k:heavy_check_mark:res_npo_3t_uns_1k:x:NoYesYesMaybeMaybeMaybe
RESpplus_u:heavy_check_mark:res_pd_3t_uns:x:NoYesYesMaybeMaybeMaybe
RESpplus_s:heavy_check_mark:res_pd_3t_sal:x:NoYesYesMaybeMaybeMaybe
RESppolyf_u:heavy_check_mark:res_ppo_3t_uns:heavy_check_mark:NoYesYesMaybeMaybeMaybe
RESppolyf_s:heavy_check_mark:res_ppo_3t_sal:heavy_check_mark:NoYesYesMaybeMaybeMaybe
RESppolyf_u_1k:heavy_check_mark:res_ppo_3t_uns_1k:x:NoYesYesMaybeMaybeMaybe
RESppolyf_u_2k:heavy_check_mark:res_ppo_3t_uns_2k:x:NoYesYesMaybeMaybeMaybe
RESrm1:heavy_check_mark:res_m1:x:NoYesYesMaybeMaybeMaybe
RESrm2:heavy_check_mark:res_m2:x:NoYesYesMaybeMaybeMaybe
RESrm3:heavy_check_mark:res_m3:x:NoYesYesMaybeMaybeMaybe
RESrm4:heavy_check_mark:res_m4:x:NoYesYesMaybeMaybeMaybe
RESrm5:heavy_check_mark:res_m5:x:NoYesYesMaybeMaybeMaybe
REStm9k:heavy_check_mark:res_tm_9k:x:NoYesYesMaybeMaybeMaybe
REStm25k:heavy_check_mark:res_tm_25k:x:NoYesYesMaybeMaybeMaybe
MIMCAPmim_1p0fF:heavy_check_mark:cap_mim_1f0_m2m3_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p5fF:heavy_check_mark:cap_mim_1f5_m2m3_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_single_2p0fF:heavy_check_mark:cap_mim_2f0_m2m3_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p0fF:heavy_check_mark:cap_mim_1f0_m3m4_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p5fF:heavy_check_mark:cap_mim_1f5_m3m4_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_single_2p0fF:heavy_check_mark:cap_mim_2f0_m3m4_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p0fF:heavy_check_mark:cap_mim_1f0_m4m5_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p5fF:heavy_check_mark:cap_mim_1f5_m4m5_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_single_2p0fF:heavy_check_mark:cap_mim_2f0_m4m5_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p0fF:heavy_check_mark:cap_mim_1f0_m5m6_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p5fF:heavy_check_mark:cap_mim_1f5_m5m6_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_single_2p0fF:heavy_check_mark:cap_mim_2f0_m5m6_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_2p0fF:heavy_check_mark:cap_mim_2f0:x:NoYesYesYesNoNo
MIMCAPmim_3p0fF:heavy_check_mark:cap_mim_3f0:x:NoYesYesYesNoNo
VARACTORpnvar_1p8:heavy_check_mark:cap_var_pd2nw_01v8:x:NoYesYesYesNoNo
VARACTORnmosvar_1p8:heavy_check_mark:cap_var_01v8:x:NoYesYesYesNoNo
VARACTORnmosvar_3p3:heavy_check_mark:cap_var_03v3:x:NoYesYesYesNoNo