Reorganized the top level so that most working files for EDA tool setup are in directories with the EDA tool name. Updated the openlane setup files.
diff --git a/sky130/Makefile b/sky130/Makefile index 2673519..13b3052 100644 --- a/sky130/Makefile +++ b/sky130/Makefile
@@ -191,7 +191,7 @@ ${CPP} ${SKY130A_DEFS} ${TECH}.json > \ ${STAGING_PATH}/${SKY130A}/${CONFIG_DIR}/nodeinfo.json -magic-a: ${TECH}.tech ${TECH}gds.tech ${TECH}.magicrc ${TECH}.tcl +magic-a: magic/${TECH}.tech magic/${TECH}gds.tech magic/${TECH}.magicrc magic/${TECH}.tcl mkdir -p ${MAGICTOP_STAGING_A} mkdir -p ${MAGIC_STAGING_A} rm -f ${MAGICTOP_STAGING_A}/current @@ -202,14 +202,14 @@ rm -f ${MAGIC_STAGING_A}/magicrc (cd ${MAGICTOP_STAGING_A} ; ln -s ${REV_DIR} current) cp -rp custom/scripts/seal_ring_generator ${MAGIC_STAGING_A}/. - ${CPP} ${SKY130A_DEFS} ${TECH}.tech > ${MAGIC_STAGING_A}/${SKY130A}.tech - ${CPP} ${SKY130A_DEFS} ${TECH}gds.tech > ${MAGIC_STAGING_A}/${SKY130A}-GDS.tech - ${CPP} ${SKY130A_DEFS} ${TECH}.magicrc > ${MAGIC_STAGING_A}/${SKY130A}.magicrc + ${CPP} ${SKY130A_DEFS} magic/${TECH}.tech > ${MAGIC_STAGING_A}/${SKY130A}.tech + ${CPP} ${SKY130A_DEFS} magic/${TECH}gds.tech > ${MAGIC_STAGING_A}/${SKY130A}-GDS.tech + ${CPP} ${SKY130A_DEFS} magic/${TECH}.magicrc > ${MAGIC_STAGING_A}/${SKY130A}.magicrc ${CPP} ${SKY130A_DEFS} ../common/pdk.bindkeys > ${MAGIC_STAGING_A}/${SKY130A}-BindKeys - ${CPP} ${SKY130A_DEFS} ${TECH}.tcl > ${MAGIC_STAGING_A}/${SKY130A}.tcl + ${CPP} ${SKY130A_DEFS} magic/${TECH}.tcl > ${MAGIC_STAGING_A}/${SKY130A}.tcl ${CPP} ${SKY130A_DEFS} ../common/pdk.tcl >> ${MAGIC_STAGING_A}/${SKY130A}.tcl -qflow-a: ${TECH}.sh ${TECH}.par +qflow-a: qflow/${TECH}.sh qflow/${TECH}.par mkdir -p ${QFLOWTOP_STAGING_A} mkdir -p ${QFLOW_STAGING_A} rm -f ${QFLOW_STAGING_A}/${SKY130A}hd.sh @@ -226,57 +226,68 @@ rm -f ${QFLOW_STAGING_A}/${SKY130A}lp.par rm -f ${QFLOW_STAGING_A}/${SKY130A}ms.sh rm -f ${QFLOW_STAGING_A}/${SKY130A}ms.par - ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_hd ${TECH}.sh > \ + ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_hd qflow/${TECH}.sh > \ ${QFLOW_STAGING_A}/${SKY130A}hd.sh - ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_hdll ${TECH}.sh > \ + ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_hdll qflow/${TECH}.sh > \ ${QFLOW_STAGING_A}/${SKY130A}hdll.sh - ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_hvl ${TECH}.sh > \ + ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_hvl qflow/${TECH}.sh > \ ${QFLOW_STAGING_A}/${SKY130A}hvl.sh - ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_hs ${TECH}.sh > \ + ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_hs qflow/${TECH}.sh > \ ${QFLOW_STAGING_A}/${SKY130A}hs.sh - ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_lp ${TECH}.sh > \ + ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_lp qflow/${TECH}.sh > \ ${QFLOW_STAGING_A}/${SKY130A}lp.sh - ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_ls ${TECH}.sh > \ + ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_ls qflow/${TECH}.sh > \ ${QFLOW_STAGING_A}/${SKY130A}ls.sh - ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_ms ${TECH}.sh > \ + ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_ms qflow/${TECH}.sh > \ ${QFLOW_STAGING_A}/${SKY130A}ms.sh - ${CPP} ${SKY130A_DEFS} ${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}hd.par - ${CPP} ${SKY130A_DEFS} ${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}hdll.par - ${CPP} ${SKY130A_DEFS} ${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}hvl.par - ${CPP} ${SKY130A_DEFS} ${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}hs.par - ${CPP} ${SKY130A_DEFS} ${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}ms.par - ${CPP} ${SKY130A_DEFS} ${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}lp.par - ${CPP} ${SKY130A_DEFS} ${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}ls.par - ${CPP} ${SKY130A_DEFS} ${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}osu.par + ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}hd.par + ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}hdll.par + ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}hvl.par + ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}hs.par + ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}ms.par + ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}lp.par + ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}ls.par + ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}osu.par -netgen-a: ${TECH}_setup.tcl +netgen-a: netgen/${TECH}_setup.tcl mkdir -p ${NETGENTOP_STAGING_A} mkdir -p ${NETGEN_STAGING_A} rm -f ${NETGEN_STAGING_A}/${SKY130A}_setup.tcl rm -f ${NETGEN_STAGING_A}/setup.tcl - ${CPP} ${SKY130A_DEFS} ${TECH}_setup.tcl > ${NETGEN_STAGING_A}/${SKY130A}_setup.tcl + ${CPP} ${SKY130A_DEFS} netgen/${TECH}_setup.tcl > ${NETGEN_STAGING_A}/${SKY130A}_setup.tcl (cd ${NETGEN_STAGING_A} ; ln -s ${SKY130A}_setup.tcl setup.tcl) -klayout-a: ${TECH}.lyp ${TECH}.lyt +klayout-a: klayout/${TECH}.lyp klayout/${TECH}.lyt mkdir -p ${KLAYOUTTOP_STAGING_A} mkdir -p ${KLAYOUT_STAGING_A} rm -f ${KLAYOUT_STAGING_A}/${SKY130A}.lyp rm -f ${KLAYOUT_STAGING_A}/${SKY130A}.lyt - ${CPP} ${SKY130A_DEFS} ${TECH}.lyp > ${KLAYOUT_STAGING_A}/${SKY130A}.lyp - ${CPP} ${SKY130A_DEFS} ${TECH}.lyt > ${KLAYOUT_STAGING_A}/${SKY130A}.lyt + ${CPP} ${SKY130A_DEFS} klayout/${TECH}.lyp > ${KLAYOUT_STAGING_A}/${SKY130A}.lyp + ${CPP} ${SKY130A_DEFS} klayout/${TECH}.lyt > ${KLAYOUT_STAGING_A}/${SKY130A}.lyt -openlane-a: common_pdn.tcl common_tracks.info config.tcl sky130_fd_sc_hd_config.tcl +openlane-a: openlane/common_pdn.tcl openlane/config.tcl openlane/sky130_fd_sc_hd/config.tcl openlane/sky130_fd_sc_hs/config.tcl mkdir -p ${OPENLANETOP_STAGING_A} mkdir -p ${OPENLANE_STAGING_A} mkdir -p ${OPENLANE_STAGING_A}/sky130_fd_sc_hd + mkdir -p ${OPENLANE_STAGING_A}/sky130_fd_sc_hs rm -f ${OPENLANE_STAGING_A}/common_pdn.info - rm -f ${OPENLANE_STAGING_A}/common_tracks.info rm -f ${OPENLANE_STAGING_A}/config.tcl rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/config.tcl - ${CPP} ${SKY130A_DEFS} common_pdn.tcl > ${OPENLANE_STAGING_A}/common_pdn.tcl - ${CPP} ${SKY130A_DEFS} common_tracks.info > ${OPENLANE_STAGING_A}/common_tracks.info - ${CPP} ${SKY130A_DEFS} config.tcl > ${OPENLANE_STAGING_A}/config.tcl - ${CPP} ${SKY130A_DEFS} sky130_fd_sc_hd_config.tcl > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/config.tcl + rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/tracks.info + rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/no_synth.cells + rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/sky130_fd_sc_hd__fakediode_2.gds + rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/config.tcl + rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/tracks.info + rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/no_synth.cells + ${CPP} ${SKY130A_DEFS} openlane/common_pdn.tcl > ${OPENLANE_STAGING_A}/common_pdn.tcl + ${CPP} ${SKY130A_DEFS} openlane/config.tcl > ${OPENLANE_STAGING_A}/config.tcl + ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/config.tcl > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/config.tcl + ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/tracks.info > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/tracks.info + ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/no_synth.cells > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/no_synth.cells + cp openlane/sky130_fd_sc_hd/sky130_fd_sc_hd__fakediode_2.gds ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/sky130_fd_sc_hd__fakediode_2.gds + ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/config.tcl > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/config.tcl + ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/tracks.info > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/tracks.info + ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/no_synth.cells > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/no_synth.cells vendor-a: # Install base device models from vendor files
diff --git a/sky130/config.tcl b/sky130/config.tcl deleted file mode 100644 index ba96898..0000000 --- a/sky130/config.tcl +++ /dev/null
@@ -1,31 +0,0 @@ -# Process node -set ::env(PROCESS) 130 -set ::env(DEF_UNITS_PER_MICRON) 1000 - - -# Placement site for core cells -# This can be found in the technology lef -set ::env(PLACE_SITE) "unithd" -set ::env(PLACE_SITE_WIDTH) 0.460 -set ::env(PLACE_SITE_HEIGHT) 2.720 - -set ::env(VDD_PIN) "vpwr" -set ::env(GND_PIN) "vgnd" - -# Track information for generating DEF tracks -set ::env(TRACKS_INFO_FILE) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/openlane/common_tracks.info" - - -# Technology LEF -set ::env(TECH_LEF) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/techLEF/$::env(PDK_VARIANT)/$::env(PDK_VARIANT)_tech.lef" -set ::env(CELLS_LEF) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lef/$::env(PDK_VARIANT)/*.lef"] -set ::env(MAGIC_TECH_FILE) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/magic/current/EFS8A.tech" -set ::env(MAGIC_MAGICRC) "$::env(PDK_ROOT)/$::env(PDK)/libs.tech/magic/current/EFS8A.magicrc" -set ::env(GPIO_PADS_LEF) [glob "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lef/sky130_fd_io/routing_abstract/*.lef"] - -# netgen setup -set ::env(NETGEN_SETUP_FILE) $::env(PDK_ROOT)/$::env(PDK)/libs.tech/netgen/$::env(PDK)_setup.tcl -# CTS luts -set ::env(CTS_TECH_DIR) "N/A" - -set ::env(FP_TAPCELL_DIST) 20
diff --git a/sky130/sky130_make_torture.tcl b/sky130/custom/scripts/sky130_make_torture.tcl similarity index 100% rename from sky130/sky130_make_torture.tcl rename to sky130/custom/scripts/sky130_make_torture.tcl
diff --git a/sky130/sky130.lyp b/sky130/klayout/sky130.lyp similarity index 100% rename from sky130/sky130.lyp rename to sky130/klayout/sky130.lyp
diff --git a/sky130/sky130.lyt b/sky130/klayout/sky130.lyt similarity index 100% rename from sky130/sky130.lyt rename to sky130/klayout/sky130.lyt
diff --git a/sky130/sky130.magicrc b/sky130/magic/sky130.magicrc similarity index 100% rename from sky130/sky130.magicrc rename to sky130/magic/sky130.magicrc
diff --git a/sky130/sky130.tcl b/sky130/magic/sky130.tcl similarity index 100% rename from sky130/sky130.tcl rename to sky130/magic/sky130.tcl
diff --git a/sky130/sky130.tech b/sky130/magic/sky130.tech similarity index 100% rename from sky130/sky130.tech rename to sky130/magic/sky130.tech
diff --git a/sky130/sky130gds.tech b/sky130/magic/sky130gds.tech similarity index 100% rename from sky130/sky130gds.tech rename to sky130/magic/sky130gds.tech
diff --git a/sky130/sky130_setup.tcl b/sky130/netgen/sky130_setup.tcl similarity index 100% rename from sky130/sky130_setup.tcl rename to sky130/netgen/sky130_setup.tcl
diff --git a/sky130/common_pdn.tcl b/sky130/openlane/common_pdn.tcl similarity index 88% rename from sky130/common_pdn.tcl rename to sky130/openlane/common_pdn.tcl index 9ad2264..60ad840 100644 --- a/sky130/common_pdn.tcl +++ b/sky130/openlane/common_pdn.tcl
@@ -7,7 +7,7 @@ pdngen::specify_grid stdcell { name grid rails { - met1 {width 0.48 pitch $::env(PLACE_SITE_WIDTH) offset 0} + met1 {width 0.48 pitch $::env(PLACE_SITE_HEIGHT) offset 0} } straps { met4 {width 1.6 pitch $::env(FP_PDN_VPITCH) offset $::env(FP_PDN_VOFFSET)} @@ -36,9 +36,3 @@ # POWER or GROUND #Upper metal stripes starting with power or ground rails at the left/bottom of the core area set ::stripes_start_with "POWER" ; - -proc generate_viarules {} { -} - -cd $::env(TMP_DIR)/floorplan -
diff --git a/sky130/openlane/config.tcl b/sky130/openlane/config.tcl new file mode 100755 index 0000000..7c4f7fb --- /dev/null +++ b/sky130/openlane/config.tcl
@@ -0,0 +1,27 @@ +# Process node +set ::env(PROCESS) 130 +set ::env(DEF_UNITS_PER_MICRON) 1000 + + +# Placement site for core cells +# This can be found in the technology lef + +set ::env(VDD_PIN) "vpwr" +set ::env(GND_PIN) "vgnd" + +# Technology LEF +set ::env(TECH_LEF) "$::env(PDK_ROOT)/TECHNAME/libs.ref/techLEF/$::env(PDK_VARIANT)/*.tlef" +set ::env(CELLS_LEF) [glob "$::env(PDK_ROOT)/TECHNAME/libs.ref/lef/$::env(PDK_VARIANT)/*.lef"] +set ::env(MAGIC_TECH_FILE) "$::env(PDK_ROOT)/TECHNAME/libs.tech/magic/sky130A.tech" +set ::env(MAGIC_MAGICRC) "$::env(PDK_ROOT)/TECHNAME/libs.tech/magic/sky130A.magicrc" +set ::env(GPIO_PADS_LEF) [glob "$::env(PDK_ROOT)/TECHNAME/libs.ref/sky130_fd_io/lef/routing_abstract.lef"] + +# netgen setup +set ::env(NETGEN_SETUP_FILE) $::env(PDK_ROOT)/TECHNAME/libs.tech/netgen/TECHNAME_setup.tcl +# CTS luts +set ::env(CTS_TECH_DIR) "N/A" + +set ::env(FP_TAPCELL_DIST) 14 + + +set ::env(GLB_RT_L1_ADJUSTMENT) 0.99
diff --git a/sky130/openlane/sky130_fd_sc_hd/config.tcl b/sky130/openlane/sky130_fd_sc_hd/config.tcl new file mode 100755 index 0000000..9b0c818 --- /dev/null +++ b/sky130/openlane/sky130_fd_sc_hd/config.tcl
@@ -0,0 +1,64 @@ +set current_folder [file dirname [file normalize [info script]]] +# Technology lib + +set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/TECHNAME/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__tt_25C_1v80.lib" +set ::env(LIB_MAX) "$::env(PDK_ROOT)/TECHNAME/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__ff_n40C_1v95.lib" +set ::env(LIB_MIN) "$::env(PDK_ROOT)/TECHNAME/libs.ref/sky130_fd_sc_hd/lib/sky130_fd_sc_hd__ss_100C_1v60.lib" + +set ::env(LIB_TYPICAL) $::env(LIB_SYNTH) + +# Tracks info +set ::env(TRACKS_INFO_FILE) "$::env(PDK_ROOT)/TECHNAME/libs.tech/openlane/sky130_fd_sc_hd/tracks.info" + + +# Placement site for core cells +# This can be found in the technology lef +set ::env(PLACE_SITE) "unithd" +set ::env(PLACE_SITE_WIDTH) 0.460 +set ::env(PLACE_SITE_HEIGHT) 2.720 + +# welltap and endcap cells +set ::env(FP_WELLTAP_CELL) "sky130_fd_sc_hd__tapvpwrvgnd_1" +set ::env(FP_ENDCAP_CELL) "sky130_fd_sc_hd__decap_3" + +# defaults (can be overridden by designs): +set ::env(SYNTH_DRIVING_CELL) "sky130_fd_sc_hd__inv_8" +#capacitance : 0.017653; +set ::env(SYNTH_DRIVING_CELL_PIN) "Y" +# update these +set ::env(SYNTH_CAP_LOAD) "17.65" ; # femtofarad __inv_8 pin A cap +set ::env(SYNTH_MIN_BUF_PORT) "sky130_fd_sc_hd__buf_2 A X" +set ::env(SYNTH_TIEHI_PORT) "sky130_fd_sc_hd__conb_1 HI" +set ::env(SYNTH_TIELO_PORT) "sky130_fd_sc_hd_conb_1 LO" + +# cts defaults +set ::env(CTS_ROOT_BUFFER) sky130_fd_sc_hd__clkbuf_16 +set ::env(CELL_CLK_PORT) CLK + +# Placement defaults +set ::env(PL_LIB) $::env(LIB_TYPICAL) + +# Fillcell insertion +set ::env(FILL_CELL) "sky130_fd_sc_hd__fill_" +set ::env(DECAP_CELL) "sky130_fd_sc_hd__decap_" +set ::env(RE_BUFFER_CELL) "sky130_fd_sc_hd__buf_4" + + +# Diode insertaion +set ::env(DIODE_CELL) "sky130_fd_sc_hd__diode_2" +set ::env(FAKEDIODE_CELL) "sky130_fd_sc_hd__fakediode_2" +set ::env(DIODE_CELL_PIN) "DIODE" + +set ::env(CELL_PAD) 8 +set ::env(CELL_PAD_EXECLUDE) "sky130_fd_sc_hd__tap* sky130_fd_sc_hd__decap* sky130_fd_sc_hd__fill*" + +# Clk Buffers info CTS data +set ::env(ROOT_CLK_BUFFER) sky130_fd_sc_hd__clkbuf_16 +set ::env(CLK_BUFFER) sky130_fd_sc_hd__clkbuf_4 +set ::env(CLK_BUFFER_INPUT) A +set ::env(CLK_BUFFER_OUTPUT) X +set ::env(CTS_CLK_BUFFER_LIST) "sky130_fd_sc_hd__clkbuf_1 sky130_fd_sc_hd__clkbuf_2 sky130_fd_sc_hd__clkbuf_4 sky130_fd_sc_hd__clkbuf_8" +set ::env(CTS_SQR_CAP) 0.258e-3 +set ::env(CTS_SQR_RES) 0.125 +set ::env(CTS_MAX_CAP) 1.53169 +
diff --git a/sky130/openlane/sky130_fd_sc_hd/no_synth.cells b/sky130/openlane/sky130_fd_sc_hd/no_synth.cells new file mode 100644 index 0000000..a71461b --- /dev/null +++ b/sky130/openlane/sky130_fd_sc_hd/no_synth.cells
@@ -0,0 +1,422 @@ +scs8hd_dfstp_2 +scs8hd_xor3_4 +scs8hd_or2b_2 +scs8hd_xnor3_2 +scs8hd_sdfbbn_2 +scs8hd_sdfxtp_2 +scs8hd_dfxtp_2 +scs8hd_xor2_2 +scs8hd_o311ai_2 +scs8hd_nand2_2 +scs8hd_sdfrtp_2 +scs8hd_and4_2 +scs8hd_dfsbp_2 +scs8hd_or4_2 +scs8hd_inv_2 +scs8hd_dlymetal6s4s_1 +scs8hd_o31ai_2 +scs8hd_bufbuf_16 +scs8hd_dlygate4sd3_1 +scs8hd_o22ai_2 +scs8hd_o32ai_2 +scs8hd_and3_2 +scs8hd_o2111ai_2 +scs8hd_dlrbp_2 +scs8hd_and4bb_2 +scs8hd_nand3b_2 +scs8hd_buf_6 +scs8hd_and4b_2 +scs8hd_a2bb2oi_2 +scs8hd_buf_12 +scs8hd_and2_2 +scs8hd_dlxbn_2 +scs8hd_dlrtp_2 +scs8hd_xor3_1 +scs8hd_a21oi_2 +scs8hd_inv_12 +scs8hd_o21ai_2 +scs8hd_a311oi_2 +scs8hd_o21bai_2 +scs8hd_nand3_2 +scs8hd_dlygate4sd2_1 +scs8hd_o211ai_2 +scs8hd_or4b_2 +scs8hd_and3b_2 +scs8hd_or4bb_2 +scs8hd_sdfrbp_2 +scs8hd_o2bb2ai_2 +scs8hd_bufinv_16 +scs8hd_xor3_2 +scs8hd_o41ai_2 +scs8hd_or3b_2 +scs8hd_or2_2 +scs8hd_dfrtp_2 +scs8hd_bufbuf_8 +scs8hd_bufinv_8 +scs8hd_buf_2 +scs8hd_inv_6 +scs8hd_xnor3_4 +scs8hd_and2b_2 +scs8hd_a2111oi_2 +scs8hd_xnor3_1 +scs8hd_dlymetal6s6s_1 +scs8hd_o221ai_2 +scs8hd_sdfstp_2 +scs8hd_a31oi_2 +scs8hd_a211oi_2 +scs8hd_nand2b_2 +scs8hd_a22oi_2 +scs8hd_dlymetal6s2s_1 +scs8hd_dlxtn_2 +scs8hd_a21boi_2 +scs8hd_dlrtn_2 +scs8hd_a221oi_2 +scs8hd_or3_2 +scs8hd_sdfsbp_2 +scs8hd_xnor2_2 +scs8hd_sdfxbp_2 +scs8hd_clkbuf_1 +scs8hd_clkbuf_2 +scs8hd_clkbuf_4 +scs8hd_clkbuf_8 +scs8hd_clkbuf_16 +scs8hd_o22a_1 +scs8hd_o22ai_1 +scs8hd_o21a_1 +scs8hd_o21ai_1 +scs8hd_a211o_1 +scs8hd_a211oi_2 +scs8hd_a21oi_2 +scs8hd_a22oi_2 +scs8hd_a311oi_2 +scs8hd_and2_2 +scs8hd_and3_2 +scs8hd_and4_2 +scs8hd_and4bb_2 +scs8hd_buf_6 +scs8hd_bufbuf_8 +scs8hd_bufinv_8 +scs8hd_clkbuf_16 +scs8hd_clkbuf_4 +scs8hd_dfrtp_2 +scs8hd_dfstp_2 +scs8hd_dlrbp_2 +scs8hd_dlrtp_2 +scs8hd_dlxtn_2 +scs8hd_dlygate4sd3_1 +scs8hd_dlymetal6s4s_1 +scs8hd_inv_12 +scs8hd_inv_6 +scs8hd_nand2b_2 +scs8hd_nand3b_2 +scs8hd_o211ai_2 +scs8hd_o21ai_1 +scs8hd_o21bai_2 +scs8hd_o22a_1 +scs8hd_o22ai_2 +scs8hd_o311ai_2 +scs8hd_o32ai_2 +scs8hd_or2_2 +scs8hd_or3_2 +scs8hd_or4_2 +scs8hd_or4bb_2 +scs8hd_sdfrbp_2 +scs8hd_sdfsbp_2 +scs8hd_sdfxbp_2 +scs8hd_xnor2_2 +scs8hd_xnor3_2 +scs8hd_xor2_2 +scs8hd_xor3_2 +scs8hd_buf_12 +scs8hd_a2111o_1 +scs8hd_a2111o_2 +scs8hd_a2111oi_0 +scs8hd_a2111oi_1 +scs8hd_a211o_2 +scs8hd_a211oi_1 +scs8hd_a211oi_4 +scs8hd_a21bo_1 +scs8hd_a21bo_2 +scs8hd_a21boi_0 +scs8hd_a21boi_1 +scs8hd_a21o_1 +scs8hd_a21o_2 +scs8hd_a21oi_1 +scs8hd_a221o_1 +scs8hd_a221o_2 +scs8hd_a221o_4 +scs8hd_a221oi_1 +scs8hd_a221oi_4 +scs8hd_a222oi_1 +scs8hd_a22o_1 +scs8hd_a22o_2 +scs8hd_a22o_4 +scs8hd_a22oi_1 +scs8hd_a2bb2o_1 +scs8hd_a2bb2o_2 +scs8hd_a2bb2oi_1 +scs8hd_a311o_1 +scs8hd_a311o_2 +scs8hd_a311o_4 +scs8hd_a311oi_1 +scs8hd_a311oi_4 +scs8hd_a31o_1 +scs8hd_a31o_2 +scs8hd_a31o_4 +scs8hd_a31oi_1 +scs8hd_a31oi_4 +scs8hd_a32o_1 +scs8hd_a32o_2 +scs8hd_a32oi_1 +scs8hd_a32oi_2 +scs8hd_a41o_1 +scs8hd_a41o_2 +scs8hd_a41oi_1 +scs8hd_a41oi_2 +scs8hd_and2_0 +scs8hd_and2_1 +scs8hd_and2b_1 +scs8hd_and2b_4 +scs8hd_and3_1 +scs8hd_and3b_1 +scs8hd_and3b_4 +scs8hd_and4_1 +scs8hd_and4b_1 +scs8hd_and4b_4 +scs8hd_and4bb_1 +scs8hd_and4bb_4 +scs8hd_clkdlybuf4s15_1 +scs8hd_clkdlybuf4s15_2 +scs8hd_clkdlybuf4s18_1 +scs8hd_clkdlybuf4s18_2 +scs8hd_clkdlybuf4s25_1 +scs8hd_clkdlybuf4s25_2 +scs8hd_clkdlybuf4s50_1 +scs8hd_clkdlybuf4s50_2 +scs8hd_clkinv_1 +scs8hd_clkinv_16 +scs8hd_clkinv_2 +scs8hd_clkinv_4 +scs8hd_clkinv_8 +scs8hd_clkinvlp_2 +scs8hd_clkinvlp_4 +scs8hd_decap_12 +scs8hd_decap_3 +scs8hd_decap_4 +scs8hd_decap_6 +scs8hd_decap_8 +scs8hd_dfbbn_1 +scs8hd_dfbbp_1 +scs8hd_dfrbp_1 +scs8hd_dfrtn_1 +scs8hd_dfrtp_1 +scs8hd_dfsbp_1 +scs8hd_dfstp_1 +scs8hd_dfxbp_1 +scs8hd_dfxtp_1 +scs8hd_diode_2 +scs8hd_dlclkp_1 +scs8hd_dlclkp_2 +scs8hd_dlclkp_4 +scs8hd_dlrbn_1 +scs8hd_dlrbn_2 +scs8hd_dlrbp_1 +scs8hd_dlrtn_1 +scs8hd_dlrtn_4 +scs8hd_dlrtp_1 +scs8hd_dlrtp_4 +scs8hd_dlxbn_1 +scs8hd_dlxbp_1 +scs8hd_dlxtn_1 +scs8hd_dlxtn_4 +scs8hd_dlxtp_1 +scs8hd_dlygate4sd1_1 +scs8hd_ebufn_1 +scs8hd_ebufn_2 +scs8hd_ebufn_4 +scs8hd_ebufn_8 +scs8hd_edfxbp_1 +scs8hd_edfxtp_1 +scs8hd_einvn_0 +scs8hd_einvn_1 +scs8hd_einvn_2 +scs8hd_einvn_4 +scs8hd_einvn_8 +scs8hd_einvp_1 +scs8hd_einvp_2 +scs8hd_einvp_4 +scs8hd_einvp_8 +scs8hd_fa_1 +scs8hd_fa_2 +scs8hd_fa_4 +scs8hd_fah_1 +scs8hd_fahcin_1 +scs8hd_fahcon_1 +scs8hd_ha_1 +scs8hd_ha_2 +scs8hd_ha_4 +scs8hd_inv_1 +scs8hd_inv_4 +scs8hd_lpflow_bleeder_1 +scs8hd_lpflow_clkbufkapwr_1 +scs8hd_lpflow_clkbufkapwr_16 +scs8hd_lpflow_clkbufkapwr_2 +scs8hd_lpflow_clkbufkapwr_4 +scs8hd_lpflow_clkbufkapwr_8 +scs8hd_lpflow_clkinvkapwr_1 +scs8hd_lpflow_clkinvkapwr_16 +scs8hd_lpflow_clkinvkapwr_2 +scs8hd_lpflow_clkinvkapwr_4 +scs8hd_lpflow_clkinvkapwr_8 +scs8hd_lpflow_decapkapwr_12 +scs8hd_lpflow_decapkapwr_3 +scs8hd_lpflow_decapkapwr_4 +scs8hd_lpflow_decapkapwr_6 +scs8hd_lpflow_decapkapwr_8 +scs8hd_lpflow_inputiso0n_1 +scs8hd_lpflow_inputiso0p_1 +scs8hd_lpflow_inputiso1n_1 +scs8hd_lpflow_inputiso1p_1 +scs8hd_lpflow_inputisolatch_1 +scs8hd_lpflow_isobufsrc_1 +scs8hd_lpflow_isobufsrc_16 +scs8hd_lpflow_isobufsrc_2 +scs8hd_lpflow_isobufsrc_4 +scs8hd_lpflow_isobufsrc_8 +scs8hd_lpflow_isobufsrckapwr_16 +scs8hd_lpflow_lsbuf_lh_isowell_4 +scs8hd_lpflow_lsbuf_lh_isowell_tap_1 +scs8hd_lpflow_lsbuf_lh_isowell_tap_2 +scs8hd_lpflow_lsbuf_lh_isowell_tap_4 +scs8hd_macro_sparecell +scs8hd_maj3_1 +scs8hd_maj3_2 +scs8hd_mux2_1 +scs8hd_mux2_2 +scs8hd_mux2_4 +scs8hd_mux2_8 +scs8hd_mux2i_1 +scs8hd_mux2i_2 +scs8hd_mux2i_4 +scs8hd_mux4_1 +scs8hd_mux4_2 +scs8hd_nand2_1 +scs8hd_nand2_8 +scs8hd_nand2b_1 +scs8hd_nand2b_4 +scs8hd_nand3_1 +scs8hd_nand3b_1 +scs8hd_nand3b_4 +scs8hd_nand4_1 +scs8hd_nand4_2 +scs8hd_nand4b_1 +scs8hd_nand4b_2 +scs8hd_nand4b_4 +scs8hd_nand4bb_1 +scs8hd_nand4bb_2 +scs8hd_nand4bb_4 +scs8hd_nor2_1 +scs8hd_nor2_2 +scs8hd_nor2_8 +scs8hd_nor2b_1 +scs8hd_nor2b_2 +scs8hd_nor2b_4 +scs8hd_nor3_1 +scs8hd_nor3_2 +scs8hd_nor3b_1 +scs8hd_nor3b_2 +scs8hd_nor3b_4 +scs8hd_nor4_1 +scs8hd_nor4_2 +scs8hd_nor4b_1 +scs8hd_nor4b_2 +scs8hd_nor4b_4 +scs8hd_nor4bb_1 +scs8hd_nor4bb_2 +scs8hd_nor4bb_4 +scs8hd_o2111a_1 +scs8hd_o2111a_2 +scs8hd_o2111a_4 +scs8hd_o2111ai_1 +scs8hd_o2111ai_4 +scs8hd_o211a_1 +scs8hd_o211a_2 +scs8hd_o211a_4 +scs8hd_o211ai_1 +scs8hd_o211ai_4 +scs8hd_o21a_2 +scs8hd_o21ai_0 +scs8hd_o21ba_1 +scs8hd_o21ba_2 +scs8hd_o21ba_4 +scs8hd_o21bai_1 +scs8hd_o21bai_4 +scs8hd_o221a_1 +scs8hd_o221a_2 +scs8hd_o221a_4 +scs8hd_o221ai_1 +scs8hd_o221ai_4 +scs8hd_o22a_2 +scs8hd_o22ai_4 +scs8hd_o2bb2a_1 +scs8hd_o2bb2a_2 +scs8hd_o2bb2a_4 +scs8hd_o2bb2ai_1 +scs8hd_o2bb2ai_4 +scs8hd_o311a_1 +scs8hd_o311a_2 +scs8hd_o311a_4 +scs8hd_o311ai_0 +scs8hd_o311ai_1 +scs8hd_o311ai_4 +scs8hd_o31a_1 +scs8hd_o31a_2 +scs8hd_o31a_4 +scs8hd_o31ai_1 +scs8hd_o31ai_4 +scs8hd_o32a_1 +scs8hd_o32a_2 +scs8hd_o32ai_1 +scs8hd_o41a_1 +scs8hd_o41a_2 +scs8hd_o41ai_1 +scs8hd_or2_0 +scs8hd_or2_1 +scs8hd_or2b_1 +scs8hd_or2b_4 +scs8hd_or3_1 +scs8hd_or3b_1 +scs8hd_or3b_4 +scs8hd_or4_1 +scs8hd_or4b_1 +scs8hd_or4b_4 +scs8hd_or4bb_1 +scs8hd_or4bb_4 +scs8hd_probe_s8p_8 +scs8hd_probec_s8p_8 +scs8hd_sdfbbn_1 +scs8hd_sdfbbp_1 +scs8hd_sdfrbp_1 +scs8hd_sdfrtn_1 +scs8hd_sdfrtp_1 +scs8hd_sdfrtp_4 +scs8hd_sdfsbp_1 +scs8hd_sdfstp_1 +scs8hd_sdfstp_4 +scs8hd_sdfxbp_1 +scs8hd_sdfxtp_1 +scs8hd_sdfxtp_4 +scs8hd_sdlclkp_1 +scs8hd_sdlclkp_2 +scs8hd_sdlclkp_4 +scs8hd_sedfxbp_1 +scs8hd_sedfxbp_2 +scs8hd_sedfxtp_1 +scs8hd_sedfxtp_2 +scs8hd_sedfxtp_4 +scs8hd_xnor2_1 +scs8hd_xor2_1 +scs8hd_buf_16 +scs8hd_lpflow_lsbuf_lh_hl_isowell_tap_1 +scs8hd_lpflow_lsbuf_lh_hl_isowell_tap_2 +scs8hd_lpflow_lsbuf_lh_hl_isowell_tap_4
diff --git a/sky130/openlane/sky130_fd_sc_hd/sky130_fd_sc_hd__fakediode_2.gds b/sky130/openlane/sky130_fd_sc_hd/sky130_fd_sc_hd__fakediode_2.gds new file mode 100644 index 0000000..d98d9a4 --- /dev/null +++ b/sky130/openlane/sky130_fd_sc_hd/sky130_fd_sc_hd__fakediode_2.gds Binary files differ
diff --git a/sky130/common_tracks.info b/sky130/openlane/sky130_fd_sc_hd/tracks.info similarity index 100% rename from sky130/common_tracks.info rename to sky130/openlane/sky130_fd_sc_hd/tracks.info
diff --git a/sky130/openlane/sky130_fd_sc_hs/config.tcl b/sky130/openlane/sky130_fd_sc_hs/config.tcl new file mode 100755 index 0000000..ac0f516 --- /dev/null +++ b/sky130/openlane/sky130_fd_sc_hs/config.tcl
@@ -0,0 +1,57 @@ +set current_folder [file dirname [file normalize [info script]]] +# Technology lib + +set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/TECHNAME/libs.ref/sky130_fd_sc_hs/lib/sky130_fd_sc_hs__tt_25C_1v80.lib" +set ::env(LIB_MAX) "$::env(PDK_ROOT)/TECHNAME/libs.ref/sky130_fd_sc_hs/lib/sky130_fd_sc_hs__ff_n40C_1v95.lib" +set ::env(LIB_MIN) "$::env(PDK_ROOT)/TECHNAME/libs.ref/sky130_fd_sc_hs/lib/sky130_fd_sc_hs__ss_100C_1v60.lib" + +set ::env(LIB_TYPICAL) $::env(LIB_SYNTH) + +#tracks info +set ::env(TRACKS_INFO_FILE) "$::env(PDK_ROOT)/TECHNAME/libs.tech/openlane/sky130_fd_sc_hs/tracks.info" + + +# Placement site for core cells +# This can be found in the technology lef +set ::env(PLACE_SITE) "unit" +set ::env(PLACE_SITE_WIDTH) 0.480 +set ::env(PLACE_SITE_HEIGHT) 3.330 + + +# welltap and endcap cells +set ::env(FP_WELLTAP_CELL) "sky130_fd_sc_hs__tapvpwrvgnd_1" +set ::env(FP_ENDCAP_CELL) "sky130_fd_sc_hs__decap_4" + +# defaults (can be overridden by designs): +set ::env(SYNTH_DRIVING_CELL) "sky130_fd_sc_hs__inv_8" +#capacitance : 0.017653; +set ::env(SYNTH_DRIVING_CELL_PIN) "Y" +# update these +set ::env(SYNTH_CAP_LOAD) "17.65" ; # femtofarad _inv_8 pin A cap +set ::env(SYNTH_MIN_BUF_PORT) "sky130_fd_sc_hs__buf_2 A X" +set ::env(SYNTH_TIEHI_PORT) "sky130_fd_sc_hs__conb_1 HI" +set ::env(SYNTH_TIELO_PORT) "sky130_fd_sc_hs__conb_1 LO" + +# cts defaults +set ::env(CTS_ROOT_BUFFER) sky130_fd_sc_hs__clkbuf_16 +set ::env(CELL_CLK_PORT) CLK + +# Placement defaults +set ::env(PL_LIB) $::env(LIB_TYPICAL) + +# Fillcell insertion +set ::env(FILL_CELL) "sky130_fd_sc_hs__fill_" +set ::env(DECAP_CELL) "sky130_fd_sc_hs__decap_" + +# Diode insertaion +set ::env(DIODE_CELL) "sky130_fd_sc_hs__diode_2" +set ::env(DIODE_CELL_PIN) "DIODE" + +set ::env(CELL_PAD) 8 +set ::env(CELL_PAD_EXECLUDE) "sky130_fd_sc_hs__tap* sky130_fd_sc_hs__decap* sky130_fd_sc_hs__fill*" + +set ::env(ROOT_CLK_BUFFER) sky130_fd_sc_hs__clkbuf_16 +set ::env(CLK_BUFFER) sky130_fd_sc_hs__clkbuf_4 +set ::env(CLK_BUFFER_INPUT) A +set ::env(CLK_BUFFER_OUTPUT) X +
diff --git a/sky130/openlane/sky130_fd_sc_hs/no_synth.cells b/sky130/openlane/sky130_fd_sc_hs/no_synth.cells new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/sky130/openlane/sky130_fd_sc_hs/no_synth.cells
diff --git a/sky130/openlane/sky130_fd_sc_hs/tracks.info b/sky130/openlane/sky130_fd_sc_hs/tracks.info new file mode 100644 index 0000000..5ded724 --- /dev/null +++ b/sky130/openlane/sky130_fd_sc_hs/tracks.info
@@ -0,0 +1,12 @@ +li1 X 0.24 0.48 +li1 Y 0.185 0.37 +met1 X 0.185 0.37 +met1 Y 0.185 0.37 +met2 X 0.24 0.48 +met2 Y 0.24 0.48 +met3 X 0.37 0.74 +met3 Y 0.37 0.74 +met4 X 0.48 0.96 +met4 Y 0.48 0.96 +met5 X 1.85 3.33 +met5 Y 1.85 3.33
diff --git a/sky130/sky130.par b/sky130/qflow/sky130.par similarity index 100% rename from sky130/sky130.par rename to sky130/qflow/sky130.par
diff --git a/sky130/sky130.sh b/sky130/qflow/sky130.sh similarity index 100% rename from sky130/sky130.sh rename to sky130/qflow/sky130.sh
diff --git a/sky130/sky130osu.sh b/sky130/qflow/sky130osu.sh similarity index 100% rename from sky130/sky130osu.sh rename to sky130/qflow/sky130osu.sh
diff --git a/sky130/sky130_fd_sc_hd_config.tcl b/sky130/sky130_fd_sc_hd_config.tcl deleted file mode 100644 index 4d9393a..0000000 --- a/sky130/sky130_fd_sc_hd_config.tcl +++ /dev/null
@@ -1,41 +0,0 @@ -set current_folder [file dirname [file normalize [info script]]] -# Technology lib - -set ::env(LIB_SYNTH) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(PDK_VARIANT)/sky130_fd_sc_hd_tt_1.80v_25C.lib" -set ::env(LIB_MAX) "$::env(PDK_ROOT)/$::env(PDK)/libs.ref/lib/$::env(PDK_VARIANT)/sky130_fd_sc_hd_ff_1.95v_-40C.lib" -set ::env(LIB_MIN) "$::env(PDK_ROOT)$::env(PDK)/libs.ref/lib/$::env(PDK_VARIANT)/sky130_fd_sc_hd_ss_1.60v_100C.lib" - - -set ::env(LIB_TYPICAL) $::env(LIB_SYNTH) - -# welltap and endcap cells -set ::env(FP_WELLTAP_CELL) "sky130_fd_sc_hd_tapvpwrvgnd_1" -set ::env(FP_ENDCAP_CELL) "sky130_fd_sc_hd_decap_3" - -# defaults (can be overridden by designs): -set ::env(SYNTH_DRIVING_CELL) "sky130_fd_sc_hd_inv_8" -#capacitance : 0.017653; -set ::env(SYNTH_DRIVING_CELL_PIN) "Y" -# update these -set ::env(SYNTH_CAP_LOAD) "17.65" ; # femtofarad _inv_8 pin A cap -set ::env(SYNTH_MIN_BUF_PORT) "sky130_fd_sc_hd_buf_2 A X" -set ::env(SYNTH_TIEHI_PORT) "sky130_fd_sc_hd_conb_1 HI" -set ::env(SYNTH_TIELO_PORT) "sky130_fd_sc_hd_conb_1 LO" - -# cts defaults -set ::env(CTS_ROOT_BUFFER) sky130_fd_sc_hd_clkbuf_16 -set ::env(CELL_CLK_PORT) CLK - -# Placement defaults -set ::env(PL_LIB) $::env(LIB_TYPICAL) - -# Fillcell insertion -set ::env(FILL_CELL) "sky130_fd_sc_hd_decap_ sky130_fd_sc_hd_fill_" - -set ::env(CELL_PAD) 2 -set ::env(CELL_PAD_EXECLUDE) "$::env(PDK_VARIANT)_tap* $::env(PDK_VARIANT)_decap* $::env(PDK_VARIANT)_fill*" - -set ::env(ROOT_CLK_BUFFER) $::env(PDK_VARIANT)_clkbuf_16 -set ::env(CLK_BUFFER) $::env(PDK_VARIANT)_clkbuf_4 -set ::env(CLK_BUFFER_INPUT) A -set ::env(CLK_BUFFER_OUTPUT) X