tree: 8dad9269f779fe629ee767ede9a57b889042ef75 [path history] [tgz]
  1. rule_decks/
  2. testing/
  3. .gitkeep
  4. gf180BCDLite.lvs
  5. README.md
  6. run_lvs.py
BCDLite/klayout/lvs/README.md

LVS Documentation

Explains how to use the runset.

Folder Structure

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

Prerequisites

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

    • gf180BCDLite=A: Select metal_top=30K mim_option=A metal_level=3LM poly_res=1K, and mim_cap=2
    • gf180BCDLite=B: Select metal_top=11K mim_option=B metal_level=4LM poly_res=1K, and mim_cap=2
    • gf180BCDLite=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 NameStatusDigitalAnalogAdv 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_4p2_dw:heavy_check_mark:nfet_04v2_dn:x:YesYesYesMaybeNoNo
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
MOSFETnmos_10p0_asym:heavy_check_mark:nfet_10v0_asym:x:NoYesYesYesYesNo
MOSFETnmos_10p0_asym_iso:heavy_check_mark:nfet_10v0_asym_iso:x:NoYesYesYesYesNo
MOSFETnmos_10p0_sym_iso:heavy_check_mark:nfet_10v0_sym_iso:x:NoYesYesYesYesNo
MOSFETnmos_30p0_asym:heavy_check_mark:nfet_30v0_asym:x:NoMaybeMaybeMaybeYesNo
MOSFETnmos_30p0_sym:heavy_check_mark:nfet_30v0_sym:x:NoMaybeMaybeMaybeYesNo
MOSFETnmos_35p0_asym:heavy_check_mark:nfet_35v0_asym:x:NoMaybeMaybeMaybeYesNo
MOSFETnmos_eldd:heavy_check_mark:nfet_eldd:x:NoMaybeMaybeMaybeYesNo
MOSFETnmos_ddd:heavy_check_mark:nfet_ddd:x:NoMaybeMaybeMaybeYesNo
MOSFETpmos_1p8:heavy_check_mark:pfet_01v8:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETpmos_1p8_dw:x:pfet_01v8_dn:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETpmos_4p2_dw:heavy_check_mark:pfet_04v2_dn:x: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
MOSFETpmos_6p0_nat_dw:heavy_check_mark:pfet_06v0_nvt_dn:heavy_check_mark:YesYesYesMaybeNoNo
MOSFETpmos_10p0_asym:heavy_check_mark:pfet_10v0_asym:x:NoYesYesYesYesNo
MOSFETpmos_30p0_asym:heavy_check_mark:pfet_30v0_asym:x:NoMaybeMaybeYesYesNo
MOSFETpmos_30p0_sym:heavy_check_mark:pfet_30v0_sym:x:NoMaybeMaybeYesYesNo
MOSFETpmos_35p0_asym:heavy_check_mark:pfet_35v0_asym:x:NoMaybeMaybeYesYesNo
MOSFETpmos_35p0_sym:heavy_check_mark:pfet_35v0_sym:x:NoMaybeMaybeYesYesNo
MOSFETpmos_mv_dw_switch:x:pfet_06v0_dn_sw:x:NoYesYesMaybeNoNo
BJTvnpn_5x5:heavy_check_mark:npn_05p00x05p00:x:NoYesYesYesMaybeNo
BJTvnpn_0p54x16:heavy_check_mark:npn_00p54x16p00:x:NoYesYesYesMaybeNo
BJTvnpn_0p54x8:heavy_check_mark:npn_00p54x08p00:x:NoYesYesYesMaybeNo
BJTvnpn_0p54x4:heavy_check_mark:npn_00p54x04p00:x:NoYesYesYesMaybeNo
BJTvpnp_6p0_0p42x20:heavy_check_mark:pnp_00p42x20p00_06v0:x:NoYesYesYesMaybeNo
BJTvpnp_6p0_0p42x10:heavy_check_mark:pnp_00p42x10p00_06v0:x:NoYesYesYesMaybeNo
BJTvpnp_6p0_0p42x5:heavy_check_mark:pnp_00p42x05p00_06v0:x:NoYesYesYesMaybeNo
BJTvpnp_6p0_5x5:heavy_check_mark:pnp_05p00x05p00_06v0:x:NoYesYesYesMaybeNo
BJTvpnp_6p0_10x10:heavy_check_mark:pnp_10p00x10p00_06v0:x: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_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
DIODEnp_30p0:heavy_check_mark:diode_nd2ps_30v0:heavy_check_mark:NoYesYesMaybeYesMaybe
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_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
DIODEpn_30p0:heavy_check_mark:diode_pd2nw_30v0:x:NoYesYesMaybeYesMaybe
DIODEnwp_6p0:heavy_check_mark:diode_nw2ps_06v0:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEdnwpw:heavy_check_mark:diode_pw2dw:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEdnwpwhv:heavy_check_mark:diode_pw2dw_hv:x:NoYesYesMaybeYesMaybe
DIODEdnwps:heavy_check_mark:diode_dw2ps:heavy_check_mark:MaybeYesYesMaybeNoMaybe
DIODEdpwhvdnw:heavy_check_mark:diode_pw2dnw_hv:x:NoYesYesMaybeYesMaybe
DIODEpoly_diode:heavy_check_mark:diode_poly:x:MaybeYesYesMaybeMaybeMaybe
DIODEzener_diode:heavy_check_mark:diode_zener:x:NoYesYesNoYesMaybe
DIODEzener_diode_dw:x:diode_zener_dw:x:NoYesYesNoYesMaybe
DIODEsc_diode:heavy_check_mark:diode_sc:heavy_check_mark:NoYesYesMaybeNoMaybe
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
Resnwell:heavy_check_mark:res_nw_3t:x:NoYesYesMaybeMaybeMaybe
Resnwell_6p0_LD:heavy_check_mark:res_nw_3t_06v0_hv:x:NoYesYesMaybeMaybeMaybe
Resndrain_ext_30p0:heavy_check_mark:res_nd_3t_30v0_hv:x:NoYesYesMaybeYesMaybe
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
Resnpolyf_s_30p0:x:res_npo_3t_sal_hv:x:NoYesYesMaybeYesMaybe
Resnpolyf_s_30p0_dw:x::x:NoYesYesMaybeYesMaybe
Resppolyf_s_30p0_dw:x:res_ppo_3t_sal_30v0_dn:x:NoYesYesMaybeYesMaybe
Resppolyf_u_fhr_30p0_lv:x:res_ppo_3t_uns_fhr_30v0:x:NoYesYesMaybeYesMaybe
Resppolyf_u_fhr_30p0_lv_dw:x:res_ppo_3t_uns_fhr_30v0_dn:x:NoYesYesMaybeYesMaybe
Resppolyf_u_fhr_30p0_hv:x:res_ppo_3t_uns_fhr_30v0:x:NoYesYesMaybeYesMaybe
Resppolyf_u_fhr_30p0_hv_dw:x:res_ppo_3t_uns_fhr_30v0_hv_dn:x:NoYesYesMaybeYesMaybe
Resnpolyf_u_30p0:x:res_npo_3t_uns_hv:x:NoYesYesMaybeYesMaybe
Resnpolyf_u_30p0_dw:x:res_npo_3t_uns_hv:x:NoYesYesMaybeYesMaybe
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_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:x:NoYesYesMaybeMaybeMaybe
Resppolyf_u_dw:x:res_ppo_3t_uns_dn:x:NoYesYesMaybeMaybeMaybe
Resppolyf_u_30p0:x:res_ppo_3t_uns_30v0:x:NoYesYesMaybeYesMaybe
Resppolyf_u_30p0_dw:x:res_ppo_3t_uns_30v0_dn:x:NoYesYesMaybeYesMaybe
Resppolyf_s:heavy_check_mark:res_ppo_3t_sal:x:NoYesYesMaybeMaybeMaybe
Resppolyf_s_dw:x:res_ppo_3t_sal_dn:x: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_1k_30p0:x:res_ppo_3t_uns_1k_30v0:x:NoYesYesMaybeYesMaybe
Resppolyf_u_1k_30p0_dw:x:res_ppo_3t_uns_1k_30v0_dn:x:NoYesYesMaybeYesMaybe
Resppolyf_u_2k:heavy_check_mark:res_ppo_3t_uns_2k:x:NoYesYesMaybeMaybeMaybe
Resppolyf_u_2k_30p0:x:res_ppo_3t_uns_2k_30v0:x:NoYesYesMaybeYesMaybe
Resppolyf_u_2k_30p0_dw:x:res_ppo_3t_uns_2k_30v0_dn: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
Restm30k:heavy_check_mark:res_tm_30k:x:NoYesYesMaybeMaybeMaybe
Resms9k:x:res_tm_9k_sh:x:NoYesYesMaybeMaybeMaybe
Resms30k:x:res_tm_30k_sh:x:NoYesYesMaybeMaybeMaybe
Restanres:heavy_check_mark:res_tan:x:NoYesYesYesMaybeMaybe
MIMCAPmim_0p85fF:heavy_check_mark:cap_mim_0f85:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p0fF:heavy_check_mark:cap_mim_1f0:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p5fF:heavy_check_mark:cap_mim_1f5:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_0p85fF_tm:heavy_check_mark:cap_mim_0f85_tm:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p5fF_tm:heavy_check_mark:cap_mim_1f5_tm:heavy_check_mark:NoYesYesYesNoNo
MIMCAPmim_1p0fF_tm:heavy_check_mark:cap_mim_1f0:heavy_check_mark: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_1p8_nwell:heavy_check_mark:MaybeYesYesMaybeNoNo
MOSCAPnmoscap_1p8_dnwell:heavy_check_mark:cap_nmos_1p8_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_6p0_nwell:heavy_check_mark:MaybeYesYesMaybeNoNo
MOSCAPnmoscap_6p0_dnwell:heavy_check_mark:cap_nmos_06v0_dnw: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
MOMCAPapmom:heavy_check_mark:cap_apmom:x:NoYesYesMaybeMaybeNo
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
VARCTORpn_varactor_1p8:heavy_check_mark:cap_var_pd2nw_01v8:heavy_check_mark:NoYesYesYesNoNo
VARCTORpn_varactor_1p8_dw:x:cap_var_pd2nw_01v8_dn:heavy_check_mark:NoYesYesYesNoNo
VARCTORpn_varactor_6p0:heavy_check_mark:cap_var_pd2nw_06v0:heavy_check_mark:NoYesYesYesNoNo
VARCTORpn_varactor_6p0_dw:x:cap_var_pd2nw_06v0_dn:heavy_check_mark:NoYesYesYesNoNo
VARCTORmos_varactor_1p8:heavy_check_mark:cap_var_fet_01v8:heavy_check_mark:NoYesYesYesNoNo
VARCTORmos_varactor_1p8_dw:heavy_check_mark:cap_var_fet_01v8_dn:heavy_check_mark:NoYesYesYesNoNo
VARCTORmos_varactor_6p0:heavy_check_mark:cap_var_fet_06v0:heavy_check_mark:NoYesYesYesNoNo
VARCTORmos_varactor_6p0_dw:heavy_check_mark:cap_var_fet_06v0_dn:heavy_check_mark:NoYesYesYesNoNo
ESDnmos_1p8_sab:heavy_check_mark:nfet_01v8_dss:x:NoNoNoNoNoYes
ESDnmos_4p2_dw_sab:heavy_check_mark:nfet_04v2_dn_dss:x:NoNoNoNoNoYes
ESDnmos_6p0_sab:heavy_check_mark:nfet_06v0_dss:x:NoNoNoNoNoYes
ESDnmos_6p0_dw_sab:heavy_check_mark:nfet_06v0_dn_dss:x:NoNoNoNoNoYes
ESDesdnsh_1p8_tw:heavy_check_mark:esd_nfet_01v8_sal:x:NoNoNoNoNoYes
ESDggesdnsh_1p8_tw:x:esd_nfet_01v8_sal_gg:x:NoNoNoNoNoYes
ESDesdnsh_6p0_tw:heavy_check_mark:esd_nfet_06v0_sal:x:NoNoNoNoNoYes
ESDggesdnsh_6p0_tw:x:esd_nfet_06v0_sal_gg:x:NoNoNoNoNoYes
ESDesdnsh_6p0_tw_ed:heavy_check_mark:esd_nfet_06v0_sal_ed:x:NoNoNoNoNoYes
ESDggesdnsh_6p0_tw_ed:x:esd_nfet_06v0_sal_ed_gg:x:NoNoNoNoNoYes
ESDesdvnpn_1p8:heavy_check_mark:esd_npn_01v8:x:NoNoNoNoNoYes
ESDesdvnpn_6p0:heavy_check_mark:esd_npn_06v0:x:NoNoNoNoNoYes
ESDesddnwpw:heavy_check_mark:esd_diode_pw2dnw:x:NoNoNoNoNoYes
ESDesddnwp:heavy_check_mark:esd_diode_ps2dnw:x:NoNoNoNoNoYes
ESDesdvpnp_1p8:heavy_check_mark:esd_pnp_01v8:x:NoNoNoNoNoYes
ESDesdvpnp_6p0:heavy_check_mark:esd_pnp_06v0:x:NoNoNoNoNoYes