LVS Documentation

Explains how to use the runset.

Folder Structure

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

Prerequisites

You need the following set of tools installed to be able to run GF180ULL 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 GF180ULL 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).

    • variant=A: Select metal_top=30K mim_option=A metal_level=3LM poly_res=1K, and mim_cap=2
    • variant=B: Select metal_top=11K mim_option=B metal_level=4LM poly_res=1K, and mim_cap=2
    • variant=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_dw:x:nfet_01v8_dn:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETnmos_1p8_nat:heavy_check_mark:nfet_01v8_nvt:heavy_check_mark:YesYesMaybeMaybeNoNo
MOSFETnmos_3p3:heavy_check_mark:nfet_03v3:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETnmos_3p3_dw:heavy_check_mark:nfet_03v3_dn:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETnmos_3p3_nat:heavy_check_mark:nfet_03v3_nvt:heavy_check_mark:YesYesMaybeMaybeNoNo
MOSFETnmos_5p0:x:nfet_05v0:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETnmos_5p0_dw:x:nfet_05v0_dn:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETnmos_6p0:heavy_check_mark:nfet_06v0:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETnmos_6p0_dw:heavy_check_mark:nfet_06v0_dn:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETnmos_6p0_nat:heavy_check_mark:nfet_06v0_nvt:heavy_check_mark:YesYesMaybeMaybeNoNo
MOSFETpmos_1p8:heavy_check_mark:pfet_01v8:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETpmos_1p8_dw:x:pfet_01v8_dn:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETpmos_3p3:heavy_check_mark:pfet_03v3:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETpmos_3p3_dw:heavy_check_mark:pfet_03v3_dn:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETpmos_5p0:x:pfet_05v0:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETpmos_5p0_dw:x:pfet_05v0_dn:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETpmos_6p0:heavy_check_mark:pfet_06v0:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETpmos_6p0_dw:heavy_check_mark:pfet_06v0_dn:heavy_check_mark:YesYesYesMaybeNoNo
BJTvnpn_5x5:heavy_check_mark:npn_05p00x05p00:heavy_check_mark:NoYesYesYesMaybeNo
BJTvnpn_0p54x16:heavy_check_mark:npn_00p54x16p00:heavy_check_mark:NoYesYesYesMaybeNo
BJTvnpn_0p54x8:heavy_check_mark:npn_00p54x08p00:heavy_check_mark:NoYesYesYesMaybeNo
BJTvnpn_0p54x2:heavy_check_mark:npn_00p54x02p00:heavy_check_mark:NoYesYesYesMaybeNo
BJTvnpn_0p54x16_3p3:x:npn_00p54x16p00_03v3:heavy_check_mark:NoYesYesYesMaybeNo
BJTvnpn_0p54x8_3p3:x:npn_00p54x08p00_03v3:heavy_check_mark:NoYesYesYesMaybeNo
BJTvnpn_0p54x2_3p3:x:npn_00p54x02p00_03v3:heavy_check_mark:NoYesYesYesMaybeNo
BJTvnpn_5x5_3p3:x:npn_05p00x05p00_03v3:heavy_check_mark:NoYesYesYesMaybeNo
BJTvpnp_6p0_0p42x20:heavy_check_mark:pnp_00p42x20p00_06v0:heavy_check_mark:NoYesYesYesMaybeNo
BJTvpnp_6p0_0p42x10:heavy_check_mark:pnp_00p42x10p00_06v0:heavy_check_mark:NoYesYesYesMaybeNo
BJTvpnp_6p0_0p42x5:heavy_check_mark:pnp_00p42x05p00_06v0:heavy_check_mark:NoYesYesYesMaybeNo
BJTvpnp_6p0_5x5:heavy_check_mark:pnp_05p00x05p00_06v0:heavy_check_mark:NoYesYesYesMaybeNo
BJTvpnp_6p0_10x10:heavy_check_mark:pnp_10p00x10p00_06v0:heavy_check_mark:NoYesYesYesMaybeNo
DIODEnp_1p8:heavy_check_mark:diode_nd2ps_01v8:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEnp_1p8_dw:x:diode_nd2ps_01v8_dn:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEnp_3p3:heavy_check_mark:diode_nd2ps_03v3:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEnp_3p3_dw:heavy_check_mark:diode_nd2ps_03v3_dn:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEnp_6p0:heavy_check_mark:diode_nd2ps_06v0:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEnp_6p0_dw:heavy_check_mark:diode_nd2ps_06v0_dn:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEpn_1p8:heavy_check_mark:diode_pd2nw_01v8:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEpn_1p8_dw:x:diode_pd2nw_01v8_dn:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEpn_3p3:heavy_check_mark:diode_pd2nw_03v3:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEpn_3p3_dw:heavy_check_mark:diode_pd2nw_03v3_dn:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEpn_6p0:heavy_check_mark:diode_pd2nw_06v0:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEpn_6p0_dw:heavy_check_mark:diode_pd2nw_06v0_dn:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEnwp_6p0:heavy_check_mark:diode_nw2ps_06v0:x:MaybeYesYesMaybeNoMaybe
DIODEdnwpw:heavy_check_mark:diode_pw2dw:x:MaybeYesYesMaybeNoMaybe
DIODEdnwps:heavy_check_mark:diode_dw2ps:x:MaybeYesYesMaybeNoMaybe
RESnplus_u:heavy_check_mark:res_nd_3t_uns:x:NoYesYesMaybeMaybeMaybe
RESnplus_u_dw:x:res_nd_3t_uns:x:NoYesYesMaybeMaybeMaybe
RESnplus_s:heavy_check_mark:res_nd_3t_sal:x:NoYesYesMaybeMaybeMaybe
RESnplus_s_dw:x:res_nd_3t_sal:x:NoYesYesMaybeMaybeMaybe
RESnpolyf_u:heavy_check_mark:res_npo_3t_uns:x:NoYesYesMaybeMaybeMaybe
RESnpolyf_u_dw:x:res_npo_3t_uns:x:NoYesYesMaybeMaybeMaybe
RESnpolyf_s:heavy_check_mark:res_npo_3t_sal:x:NoYesYesMaybeMaybeMaybe
RESnpolyf_s_dw:x:res_npo_3t_sal:x:NoYesYesMaybeMaybeMaybe
RESpplus_u:heavy_check_mark:res_pd_3t_uns:x:NoYesYesMaybeMaybeMaybe
RESpplus_u_dw:x:res_pd_3t_uns_dn:x:NoYesYesMaybeMaybeMaybe
RESpplus_s:heavy_check_mark:res_pd_3t_sal:x:NoYesYesMaybeMaybeMaybe
RESpplus_s_dw:x:res_pd_3t_sal_dn:x:NoYesYesMaybeMaybeMaybe
RESpwell:heavy_check_mark:res_pw_3t:x:NoYesYesMaybeMaybeMaybe
RESppolyf_u:heavy_check_mark:res_ppo_3t_uns:heavy_check_mark:YesYesYesMaybeMaybeMaybe
RESppolyf_u_dw:x:res_ppo_3t_uns_dn:heavy_check_mark:NoYesYesMaybeMaybeMaybe
RESppolyf_s:heavy_check_mark:res_ppo_3t_sal:heavy_check_mark:NoYesYesMaybeMaybeMaybe
RESppolyf_s_dw:x:res_ppo_3t_sal_dn:heavy_check_mark:NoYesYesMaybeMaybeMaybe
RESppolyf_u_1k:heavy_check_mark:res_ppo_3t_uns_1k:x:NoYesYesMaybeMaybeMaybe
RESppolyf_u_1k_dw:x:res_ppo_3t_uns_1k_dn:x:NoYesYesMaybeMaybeMaybe
RESppolyf_u_2k:heavy_check_mark:res_ppo_3t_uns_2k:x:NoYesYesMaybeMaybeMaybe
RESppolyf_u_2k_dw:x:res_ppo_3t_uns_2k_dn:x:NoYesYesMaybeMaybeMaybe
RESppolyf_u_fhr_16p0_lv:heavy_check_mark:res_ppo_3t_uns_fhr_16v0:x:NoYesYesMaybeYesMaybe
RESppolyf_u_fhr_16p0_lv_dw:x:res_ppo_3t_uns_fhr_16v0_dw:x:NoYesYesMaybeYesMaybe
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
MIMCAPmim_0p85fF:heavy_check_mark:cap_mim_0f85_m2m3_noshield:heavy_check_mark:NoYesYesYesNoNo
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_2p0fF:heavy_check_mark:cap_mim_2f0_m2m3_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_0p85fF_tm:heavy_check_mark:cap_mim_0f85_m3m4_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p0fF_tm:heavy_check_mark:cap_mim_1f0_m3m4_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p5fF_tm:heavy_check_mark:cap_mim_1f5_m3m4_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_2p0fF_tm:heavy_check_mark:cap_mim_2f0_m3m4_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_0p85fF_tm:heavy_check_mark:cap_mim_0f85_m4m5_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p0fF_tm:heavy_check_mark:cap_mim_1f0_m4m5_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p5fF_tm:heavy_check_mark:cap_mim_1f5_m4m5_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_2p0fF_tm:heavy_check_mark:cap_mim_2f0_m4m5_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_0p85fF_tm:heavy_check_mark:cap_mim_0f85_m5m6_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p0fF_tm:heavy_check_mark:cap_mim_1f0_m5m6_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p5fF_tm:heavy_check_mark:cap_mim_1f5_m5m6_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_2p0fF_tm:heavy_check_mark:cap_mim_2f0_m5m6_noshield:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p5fF_stk:heavy_check_mark:cap_mim_1f5_stk:x:NoYesYesYesNoNo
MOSCAPnmoscap_1p8:heavy_check_mark:cap_nmos_01v8:heavy_check_mark:MaybeYesYesMaybeNoNo
MOSCAPnmoscap_1p8_dw:x:cap_nmos_01v8_dn:heavy_check_mark:MaybeYesYesMaybeNoNo
MOSCAPnmoscap_1p8_nwell:heavy_check_mark:cap_nmos_01v8_nwell:heavy_check_mark:MaybeYesYesMaybeNoNo
MOSCAPnmoscap_1p8_dnwell:heavy_check_mark:cap_nmos_01v8_dnwell:heavy_check_mark:MaybeYesYesMaybeNoNo
MOSCAPnmoscap_6p0:heavy_check_mark:cap_nmos_06v0:heavy_check_mark:MaybeYesYesMaybeNoNo
MOSCAPnmoscap_6p0_dw:heavy_check_mark:cap_nmos_06v0_dn:heavy_check_mark:MaybeYesYesMaybeNoNo
MOSCAPnmoscap_6p0_nwell:heavy_check_mark:cap_nmos_06v0_nwell:heavy_check_mark:MaybeYesYesMaybeNoNo
MOSCAPnmoscap_6p0_dnwell:heavy_check_mark:cap_nmos_06v0_dnwell:heavy_check_mark:MaybeYesYesMaybeNoNo
MOSCAPpmoscap_1p8:heavy_check_mark:cap_pmos_01v8:heavy_check_mark:MaybeYesYesMaybeNoNo
MOSCAPpmoscap_1p8_dw:x:cap_pmos_01v8_dn:heavy_check_mark:MaybeYesYesMaybeNoNo
MOSCAPpmoscap_6p0:heavy_check_mark:cap_pmos_06v0:heavy_check_mark:MaybeYesYesMaybeNoNo
MOSCAPpmoscap_6p0_dw:heavy_check_mark:cap_pmos_06v0_dn:heavy_check_mark:MaybeYesYesMaybeNoNo
PISCAPpis_1p8:heavy_check_mark:cap_pis_01v8:heavy_check_mark:NoYesYesMaybeNoNo
PISCAPpis_1p8_dw:x:cap_pis_01v8_dn:heavy_check_mark:NoYesYesMaybeNoNo
PISCAPpis_6p0:heavy_check_mark:cap_pis_06v0:heavy_check_mark:NoYesYesMaybeNoNo
PISCAPpis_6p0_dw:x:cap_pis_06v0_dn:heavy_check_mark:NoYesYesMaybeNoNo
VARACTORpn_varactor_1p8:heavy_check_mark:cap_var_pd2nw_01v8:heavy_check_mark:NoYesYesYesNoNo
VARACTORpn_varactor_1p8_dw:x:cap_var_pd2nw_01v8_dn:heavy_check_mark:NoYesYesYesNoNo
VARACTORpn_varactor_6p0:heavy_check_mark:cap_var_pd2nw_06v0:heavy_check_mark:NoYesYesYesNoNo
VARACTORpn_varactor_6p0_dw:x:cap_var_pd2nw_06v0_dn:heavy_check_mark:NoYesYesYesNoNo
VARACTORmos_varactor_1p8:heavy_check_mark:cap_var_fet_01v8:heavy_check_mark:NoYesYesYesNoNo
VARACTORmos_varactor_1p8_dw:heavy_check_mark:cap_var_fet_01v8_dn:heavy_check_mark:NoYesYesYesNoNo
VARACTORmos_varactor_6p0:heavy_check_mark:cap_var_fet_06v0:heavy_check_mark:NoYesYesYesNoNo
VARACTORmos_varactor_6p0_dw:heavy_check_mark:cap_var_fet_06v0_dn:heavy_check_mark:NoYesYesYesNoNo
eFuseeFuse:heavy_check_mark:efuse:x:MaybeYesYesNoMaybeNo