blob: b4f0bd619e20abde0c16fb4dbd24e5cac52070ab [file] [log] [blame]
Tim Edwards55f4d0e2020-07-05 15:41:02 -04001# Makefile for efabless design kits for SkyWater Sky130:
2#
3# sky130A = 5-metal backend stack with dual MiM
4#
5# Written by Tim Edwards March 2019
6# efabless corporation
7# updated October 2019
8# updated December 2019 (divide installation sections for individual tools)
9# updated March 2020 (refactored the install process)
10# updated May 2020 (changed to new process name Sky130)
11#
12# Instructions:
13#
Tim Edwards7cbaaba2020-08-05 12:19:18 -040014# Run "configure" from the top level directory. Use the following
15# configuration options to match your environment:
Tim Edwards55f4d0e2020-07-05 15:41:02 -040016#
Tim Edwardsc7ab1ea2020-12-24 17:04:36 -050017# --enable-sky130-pdk[=<path>]
Tim Edwards942a14f2020-12-24 16:20:31 -050018# If enabled, install the skywater PDK. If <path> is specified,
19# then the skywater PDK is expected to be found rooted at the
20# given path. If not specified, then the skywater PDK will be
21# downloaded and installed to <repo root>/pdks.
22# If explicitly disabled, sky130 is skipped over entirely.
23#
Tim Edwards7cbaaba2020-08-05 12:19:18 -040024# --with-sky130-local-path=<path>
25# where <path> is the run-time location of the installed PDK
26# files generated by open_pdks. This option is mandatory and
27# has no default.
28#
29# --with-sky130-dist-path=<path>
30# where <path> is the install-time location of the installed
31# PDK files generated by open_pdks, with the expectation that
32# <path> is something like a git repository that is then
33# distributed across a system. If this option is not specified,
34# then files are installed to the local path.
35#
36# --with-sky130-link-targets=<value>
37# where <value> is one of "none" or "source". If set to "source",
38# then where possible, the installed files are symbolic links
39# back to the source, rather than copies of the source. The
40# default value is "none" if the option is not specified.
41#
42# --with-ef-style
43# If specified, then the installation uses the efabless style,
44# which swaps the file hierarchy of file formats vs. IP libraries;
45# e.g., "gds/sky130_fd_sc_hd/" with ef-style, vs.
46# "sky130_fd_sc_hd/gds/" without it.
47#
Tim Edwards22fdb442020-12-02 12:40:03 -050048# Enable/disable for specific libraries to be installed (and downloaded if
49# needed). Libraries that are part of the open_pdks repository are enabled
50# by default and must be disabled by passing an option to configure. Libraries
51# that are not part of the open_pdks repository are disabled by default and
52# must be enabled by passing an option to configure.
53#
54# Internal libraries and tool setups that can be disabled are the following:
55#
56# --disable-magic
57# Do not install setup files for the magic layout tool.
58#
59# --disable-netgen
60# Do not install setup files for the netgen LVS tool.
61#
62# --disable-qflow
63# Do not install setup files for the qflow synthesis flow.
64#
65# --disable-openlane
66# Do not install setup files for the openlane sythesis flow.
67#
68# --disable-klayout
69# Do not install setup files for the klayout layout tool.
70#
Tim Edwardsccaea722020-12-24 10:59:42 -050071#
72# NOTE: The comments below are for features that have not yet been
73# implemented.
74#
Tim Edwards22fdb442020-12-02 12:40:03 -050075# External libraries and tool setups that can be enabled are the following:
76#
Tim Edwards22fdb442020-12-02 12:40:03 -050077# --enable-osu-lib[=<path>]
78# If enabled, install the OSU standard cell library. If <path>
79# is specified, then the OSU standard cell library is expected
80# to be found rooted at the given path. If not specified, then
81# the OSU standard cell library will be cloned from the git
82# repository and installed.
83#
84# --enable-alpha-lib[=<path>]
Tim Edwardsbcf59aa2020-12-17 16:55:13 -050085# If enabled, install the sky130_ml_xx_hd font library from
86# Paul Schulz on github. If not specified, then the font
87# library will be cloned from the git repository and installed.
Tim Edwards22fdb442020-12-02 12:40:03 -050088#
89# --enable-xschem[=<path>]
90# If enabled, install the Sky130 setup for the xschem schematic
91# editor. If <path> is specified, then the xschem setup is
92# expected to be found rooted at the given path. If not
93# specified, then the xschem setup will be cloned from the
94# repository and installed.
95#
Tim Edwards7cbaaba2020-08-05 12:19:18 -040096# The variables below are substituted from the configuration options:
97#
98# SKYWATER_PATH: points to vendor sources
Tim Edwards55f4d0e2020-07-05 15:41:02 -040099# EF_STYLE: 1 for efabless style, 0 otherwise
100# LINK_TARGETS: link back to source or link to 1st PDK when possible
101# DIST_PATH: install location for distributed install
102# LOCAL_PATH: install location for local install or runtime location
103# for distributed install
104#
105# Run "make" to stage the PDK for tool setup and vendor libraries
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400106#
Tim Edwards7cbaaba2020-08-05 12:19:18 -0400107# Run "make install" to install all staged files. The installation is
108# either local or distributed, depending on whether --with-sky130-dist-path
109# has been set when running configure.
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400110#
111# Run "make clean" to remove all staging files.
112#
113# Run "make veryclean" to remove all staging and install log files.
114#
Tim Edwards7cbaaba2020-08-05 12:19:18 -0400115# For the sake of simplicity, the "standard" installation can be done
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400116# with the usual
117#
118# make
119# make install
120# make clean
121#
122#--------------------------------------------------------------------
123# This Makefile contains bash-isms
124SHELL = bash
Tristan Gingolda5854312020-10-15 18:28:16 +0200125MV = mv
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400126
Tim Edwardsc3baf462020-11-16 12:40:24 -0500127REVISION = `git describe --long`
Tim Edwardsccaea722020-12-24 10:59:42 -0500128TECH = sky130
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400129
130# If EF_STYLE is set to 1, then efabless naming conventions are
131# used, otherwise the generic naming conventions are used.
132# Mainly, the hierarchy of library names and file types is reversed
133# (e.g., sky130_fd_sc_hd/lef vs. lef/sky130_fd_sc_hd).
134
Tim Edwards7cbaaba2020-08-05 12:19:18 -0400135# EF_STYLE = 0 | 1
136EF_STYLE = @EF_STYLE@
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400137
138# Normally it's fine to keep the staging path in a local directory,
139# although /tmp or a dedicated staging area are also fine, as long
140# as the install process can write to the path.
141
142STAGING_PATH = `pwd`
143
144# If LINK_TARGETS is set to "none", then files are copied
145# from the SkyWater sources to the target. If set to "source",
146# symbolic links are made in the target directories pointing
147# back to the SkyWater sources. If set to the name of another
148# PDK (e.g, "sky130A"), then symbolic links are made to the
149# same files in that PDK, where they exist, and are copied
150# from source, where they don't.
151
Tim Edwards7cbaaba2020-08-05 12:19:18 -0400152# LINK_TARGETS = source | none | sky130A
153LINK_TARGETS = @SKY130_LINK_TARGETS@
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400154
155# Paths:
156
Tim Edwards942a14f2020-12-24 16:20:31 -0500157# Path to skywater_pdk
Tim Edwards7cbaaba2020-08-05 12:19:18 -0400158SKYWATER_PATH = @SKY130_SOURCE_PATH@
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400159
Tim Edwards7cbaaba2020-08-05 12:19:18 -0400160# Path to OSU standard cell library sources (to be added to configuration options).
Tim Edwards31a2adf2020-07-07 21:47:30 -0400161OSU_PATH = ~/gits/osu_130_pdk
162
Tim Edwardsbcf59aa2020-12-17 16:55:13 -0500163# Path to independent library sources (to be added to configuration options).
164REPO_PATH = ~/gits
165
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400166# NOTE: Install destination is the git repository of the technology platform.
167# Once updated in git, the git project can be distributed to all hosts.
168#
169ifeq (${EF_STYLE}, 1)
Tim Edwards7cbaaba2020-08-05 12:19:18 -0400170 LOCAL_PATH = @SKY130_LOCAL_PATH@
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400171 CONFIG_DIR = .ef-config
172 REV_DIR = ${REVISION}
173else
174 # LOCAL_PATH = /usr/local/share/vlsi/SkyWater
Tim Edwards7cbaaba2020-08-05 12:19:18 -0400175 LOCAL_PATH = @SKY130_LOCAL_PATH@
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400176 CONFIG_DIR = .config
177 REV_DIR = .
178endif
179
Tim Edwards7cbaaba2020-08-05 12:19:18 -0400180# DIST_PATH = ~/gits/ef-skywater-${TECH}
181DIST_PATH = @SKY130_DIST_PATH@
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400182
183# EF process nodes created from the master sources
184SKY130A = sky130A
185
186ifeq (${LINK_TARGETS}, ${SKY130A})
187 DIST_LINK_TARGETS = ${LOCAL_PATH}/${LINK_TARGETS}
188else
189 DIST_LINK_TARGETS = ${LINK_TARGETS}
190endif
191
192# Basic definitions for each EF process node
193SKY130A_DEFS = -DTECHNAME=sky130A -DREVISION=${REVISION}
194
195# Module definitions for each process node
196# (Note that MOS is default and therefore not used anywhere)
Tim Edwards0a0272b2020-07-28 14:40:10 -0400197SKY130A_DEFS += -DMETAL5 -DMIM -DREDISTRIBUTION
198# SKY130A_DEFS += -DMETAL5 -DMIM
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400199
200# Add staging path
201SKY130A_DEFS += -DSTAGING_PATH=${STAGING_PATH}
202
203ifeq (${EF_STYLE}, 1)
204 EF_FORMAT = -ef_format
205 SKY130A_DEFS += -DEF_FORMAT
206else
207 EF_FORMAT = -std_format
208endif
209
210MAGICTOP = libs.tech/magic
211NETGENTOP = libs.tech/netgen
212QFLOWTOP = libs.tech/qflow
213KLAYOUTTOP = libs.tech/klayout
214OPENLANETOP = libs.tech/openlane
215
216ifeq (${EF_STYLE}, 1)
217 MAGICPATH = ${MAGICTOP}/${REVISION}
218else
219 MAGICPATH = ${MAGICTOP}
220endif
221
222# Currently, netgen, qflow, and klayout do not use revisioning (needs to change!)
223NETGENPATH = ${NETGENTOP}
224QFLOWPATH = ${QFLOWTOP}
225KLAYOUTPATH = ${KLAYOUTTOP}
226OPENLANEPATH = ${OPENLANETOP}
227
228MAGICTOP_STAGING_A = ${STAGING_PATH}/${SKY130A}/${MAGICTOP}
229NETGENTOP_STAGING_A = ${STAGING_PATH}/${SKY130A}/${NETGENTOP}
230QFLOWTOP_STAGING_A = ${STAGING_PATH}/${SKY130A}/${QFLOWTOP}
231KLAYOUTTOP_STAGING_A = ${STAGING_PATH}/${SKY130A}/${KLAYOUTTOP}
232OPENLANETOP_STAGING_A = ${STAGING_PATH}/${SKY130A}/${OPENLANETOP}
233
234MAGIC_STAGING_A = ${STAGING_PATH}/${SKY130A}/${MAGICPATH}
235NETGEN_STAGING_A = ${STAGING_PATH}/${SKY130A}/${NETGENPATH}
236QFLOW_STAGING_A = ${STAGING_PATH}/${SKY130A}/${QFLOWPATH}
237KLAYOUT_STAGING_A = ${STAGING_PATH}/${SKY130A}/${KLAYOUTPATH}
238OPENLANE_STAGING_A = ${STAGING_PATH}/${SKY130A}/${OPENLANEPATH}
239
240SKY130A_DEFS += -DMAGIC_CURRENT=${MAGICTOP}/current
241
242# Where cpp syntax is followed, this is equivalent to cpp, but it does not
243# mangle non-C source files under the belief that they are actually C code.
244CPP = ../common/preproc.py
245
246# The following script in the ../common directory does most of the work of
247# copying or linking the foundry vendor files to the target directory.
248STAGE = set -f ; ../common/foundry_install.py ${EF_FORMAT}
249INSTALL = ../common/staging_install.py ${EF_FORMAT}
250
251# The script(s) below are used for custom changes to the vendor PDK files
Ahmed Ghazya285ff42020-07-27 17:52:14 +0200252ADDPROP = ../common/insert_property.py ${EF_FORMAT}
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400253
254# List the EDA tools to install local setup files for
Tim Edwardsccaea722020-12-24 10:59:42 -0500255TOOLS =
256
257# KLAYOUT_DISABLED = 0 | 1
258KLAYOUT_DISABLED = @KLAYOUT_DISABLED@
259ifneq (${KLAYOUT_DISABLED}, 1)
260 TOOLS += klayout
261endif
262
263# OPENLANE_DISABLED = 0 | 1
264OPENLANE_DISABLED = @OPENLANE_DISABLED@
265ifneq (${OPENLANE_DISABLED}, 1)
266 TOOLS += openlane
267endif
268
269# QFLOW_DISABLED = 0 | 1
270QFLOW_DISABLED = @QFLOW_DISABLED@
271ifneq (${QFLOW_DISABLED}, 1)
272 TOOLS += qflow
273endif
274
275# MAGIC_DISABLED = 0 | 1
276MAGIC_DISABLED = @MAGIC_DISABLED@
277ifneq (${MAGIC_DISABLED}, 1)
278 TOOLS += magic
279endif
280
281# NETGEN_DISABLED = 0 | 1
282NETGEN_DISABLED = @NETGEN_DISABLED@
283ifneq (${NETGEN_DISABLED}, 1)
284 TOOLS += netgen
285endif
286
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400287
288all: all-a
289
290all-a:
291 echo "Starting sky130A PDK staging on "`date` > ${SKY130A}_install.log
292 ${MAKE} tools-a
293 ${MAKE} vendor-a
294 echo "Ended sky130A PDK staging on "`date` >> ${SKY130A}_install.log
295
Tim Edwards942a14f2020-12-24 16:20:31 -0500296tools-a: $(addsuffix -a, $(TOOLS))
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400297
298general-a: ${TECH}.json
299 mkdir -p ${STAGING_PATH}/${SKY130A}/${CONFIG_DIR}
300 rm -f ${STAGING_PATH}/${SKY130A}/${CONFIG_DIR}/nodeinfo.json
301 ${CPP} ${SKY130A_DEFS} ${TECH}.json > \
302 ${STAGING_PATH}/${SKY130A}/${CONFIG_DIR}/nodeinfo.json
303
Tim Edwards5778c232020-07-07 16:57:52 -0400304magic-a: magic/${TECH}.tech magic/${TECH}gds.tech magic/${TECH}.magicrc magic/${TECH}.tcl
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400305 mkdir -p ${MAGICTOP_STAGING_A}
306 mkdir -p ${MAGIC_STAGING_A}
307 rm -f ${MAGICTOP_STAGING_A}/current
308 rm -f ${MAGIC_STAGING_A}/${SKY130A}.tech
309 rm -f ${MAGIC_STAGING_A}/${SKY130A}-GDS.tech
310 rm -f ${MAGIC_STAGING_A}/${SKY130A}.tcl
311 rm -f ${MAGIC_STAGING_A}/${SKY130A}-BindKeys
312 rm -f ${MAGIC_STAGING_A}/magicrc
313 (cd ${MAGICTOP_STAGING_A} ; ln -s ${REV_DIR} current)
314 cp -rp custom/scripts/seal_ring_generator ${MAGIC_STAGING_A}/.
Tim Edwards4d46bac2020-12-29 16:23:22 -0500315 cp custom/scripts/generate_fill.py ${MAGIC_STAGING_A}/.
Tim Edwards5778c232020-07-07 16:57:52 -0400316 ${CPP} ${SKY130A_DEFS} magic/${TECH}.tech > ${MAGIC_STAGING_A}/${SKY130A}.tech
317 ${CPP} ${SKY130A_DEFS} magic/${TECH}gds.tech > ${MAGIC_STAGING_A}/${SKY130A}-GDS.tech
318 ${CPP} ${SKY130A_DEFS} magic/${TECH}.magicrc > ${MAGIC_STAGING_A}/${SKY130A}.magicrc
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400319 ${CPP} ${SKY130A_DEFS} ../common/pdk.bindkeys > ${MAGIC_STAGING_A}/${SKY130A}-BindKeys
Tim Edwards5778c232020-07-07 16:57:52 -0400320 ${CPP} ${SKY130A_DEFS} magic/${TECH}.tcl > ${MAGIC_STAGING_A}/${SKY130A}.tcl
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400321 ${CPP} ${SKY130A_DEFS} ../common/pdk.tcl >> ${MAGIC_STAGING_A}/${SKY130A}.tcl
322
Tim Edwards5778c232020-07-07 16:57:52 -0400323qflow-a: qflow/${TECH}.sh qflow/${TECH}.par
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400324 mkdir -p ${QFLOWTOP_STAGING_A}
325 mkdir -p ${QFLOW_STAGING_A}
326 rm -f ${QFLOW_STAGING_A}/${SKY130A}hd.sh
327 rm -f ${QFLOW_STAGING_A}/${SKY130A}hd.par
328 rm -f ${QFLOW_STAGING_A}/${SKY130A}hdll.sh
329 rm -f ${QFLOW_STAGING_A}/${SKY130A}hdll.par
330 rm -f ${QFLOW_STAGING_A}/${SKY130A}hs.sh
331 rm -f ${QFLOW_STAGING_A}/${SKY130A}hs.par
332 rm -f ${QFLOW_STAGING_A}/${SKY130A}hvl.sh
333 rm -f ${QFLOW_STAGING_A}/${SKY130A}hvl.par
334 rm -f ${QFLOW_STAGING_A}/${SKY130A}ls.sh
335 rm -f ${QFLOW_STAGING_A}/${SKY130A}ls.par
336 rm -f ${QFLOW_STAGING_A}/${SKY130A}lp.sh
337 rm -f ${QFLOW_STAGING_A}/${SKY130A}lp.par
338 rm -f ${QFLOW_STAGING_A}/${SKY130A}ms.sh
339 rm -f ${QFLOW_STAGING_A}/${SKY130A}ms.par
Tim Edwards7ec76972020-07-07 21:56:08 -0400340 rm -f ${QFLOW_STAGING_A}/${SKY130A}osu.sh
341 rm -f ${QFLOW_STAGING_A}/${SKY130A}osu.par
Tim Edwards5778c232020-07-07 16:57:52 -0400342 ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_hd qflow/${TECH}.sh > \
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400343 ${QFLOW_STAGING_A}/${SKY130A}hd.sh
Tim Edwards5778c232020-07-07 16:57:52 -0400344 ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_hdll qflow/${TECH}.sh > \
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400345 ${QFLOW_STAGING_A}/${SKY130A}hdll.sh
Tim Edwards5778c232020-07-07 16:57:52 -0400346 ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_hvl qflow/${TECH}.sh > \
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400347 ${QFLOW_STAGING_A}/${SKY130A}hvl.sh
Tim Edwards5778c232020-07-07 16:57:52 -0400348 ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_hs qflow/${TECH}.sh > \
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400349 ${QFLOW_STAGING_A}/${SKY130A}hs.sh
Tim Edwards5778c232020-07-07 16:57:52 -0400350 ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_lp qflow/${TECH}.sh > \
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400351 ${QFLOW_STAGING_A}/${SKY130A}lp.sh
Tim Edwards5778c232020-07-07 16:57:52 -0400352 ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_ls qflow/${TECH}.sh > \
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400353 ${QFLOW_STAGING_A}/${SKY130A}ls.sh
Tim Edwards5778c232020-07-07 16:57:52 -0400354 ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_fd_sc_ms qflow/${TECH}.sh > \
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400355 ${QFLOW_STAGING_A}/${SKY130A}ms.sh
Tristan Gingolda5854312020-10-15 18:28:16 +0200356 ${CPP} ${SKY130A_DEFS} -DLIBRARY=sky130_osu_sc_t18 qflow/sky130osu.sh > \
Tim Edwards7ec76972020-07-07 21:56:08 -0400357 ${QFLOW_STAGING_A}/${SKY130A}osu.sh
Tim Edwards5778c232020-07-07 16:57:52 -0400358 ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}hd.par
359 ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}hdll.par
360 ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}hvl.par
361 ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}hs.par
362 ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}ms.par
363 ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}lp.par
364 ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}ls.par
365 ${CPP} ${SKY130A_DEFS} qflow/${TECH}.par > ${QFLOW_STAGING_A}/${SKY130A}osu.par
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400366
Tim Edwards5778c232020-07-07 16:57:52 -0400367netgen-a: netgen/${TECH}_setup.tcl
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400368 mkdir -p ${NETGENTOP_STAGING_A}
369 mkdir -p ${NETGEN_STAGING_A}
370 rm -f ${NETGEN_STAGING_A}/${SKY130A}_setup.tcl
371 rm -f ${NETGEN_STAGING_A}/setup.tcl
Tim Edwards5778c232020-07-07 16:57:52 -0400372 ${CPP} ${SKY130A_DEFS} netgen/${TECH}_setup.tcl > ${NETGEN_STAGING_A}/${SKY130A}_setup.tcl
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400373 (cd ${NETGEN_STAGING_A} ; ln -s ${SKY130A}_setup.tcl setup.tcl)
374
Tim Edwards5778c232020-07-07 16:57:52 -0400375klayout-a: klayout/${TECH}.lyp klayout/${TECH}.lyt
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400376 mkdir -p ${KLAYOUTTOP_STAGING_A}
377 mkdir -p ${KLAYOUT_STAGING_A}
378 rm -f ${KLAYOUT_STAGING_A}/${SKY130A}.lyp
379 rm -f ${KLAYOUT_STAGING_A}/${SKY130A}.lyt
Tim Edwards5778c232020-07-07 16:57:52 -0400380 ${CPP} ${SKY130A_DEFS} klayout/${TECH}.lyp > ${KLAYOUT_STAGING_A}/${SKY130A}.lyp
381 ${CPP} ${SKY130A_DEFS} klayout/${TECH}.lyt > ${KLAYOUT_STAGING_A}/${SKY130A}.lyt
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400382
Tristan Gingolda5854312020-10-15 18:28:16 +0200383openlane-a: openlane/common_pdn.tcl openlane/config.tcl openlane/sky130_fd_sc_hd/config.tcl openlane/sky130_fd_sc_hs/config.tcl openlane/sky130_fd_sc_ms/config.tcl openlane/sky130_fd_sc_ls/config.tcl openlane/sky130_fd_sc_hdll/config.tcl openlane/sky130_osu_sc_t18/config.tcl
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400384 mkdir -p ${OPENLANETOP_STAGING_A}
385 mkdir -p ${OPENLANE_STAGING_A}
Tim Edwards3c1dd9a2020-11-27 13:49:58 -0500386 rm -rf ${OPENLANE_STAGING_A}/custom_cells/*
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400387 mkdir -p ${OPENLANE_STAGING_A}/sky130_fd_sc_hd
Tim Edwards5778c232020-07-07 16:57:52 -0400388 mkdir -p ${OPENLANE_STAGING_A}/sky130_fd_sc_hs
Ahmed Ghazy8e84e5c2020-07-27 14:32:34 +0200389 mkdir -p ${OPENLANE_STAGING_A}/sky130_fd_sc_ls
390 mkdir -p ${OPENLANE_STAGING_A}/sky130_fd_sc_ms
391 mkdir -p ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll
392 mkdir -p ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl
Tristan Gingolda5854312020-10-15 18:28:16 +0200393 mkdir -p ${OPENLANE_STAGING_A}/sky130_osu_sc_t18
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400394 rm -f ${OPENLANE_STAGING_A}/common_pdn.info
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400395 rm -f ${OPENLANE_STAGING_A}/config.tcl
396 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/config.tcl
Tim Edwards5778c232020-07-07 16:57:52 -0400397 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/tracks.info
398 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/no_synth.cells
Tim Edwards5778c232020-07-07 16:57:52 -0400399 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/config.tcl
400 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/tracks.info
401 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/no_synth.cells
Ahmed Ghazy8e84e5c2020-07-27 14:32:34 +0200402 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/config.tcl
403 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/tracks.info
404 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/no_synth.cells
405 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/config.tcl
406 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/tracks.info
407 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/no_synth.cells
408 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/config.tcl
409 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/tracks.info
410 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/no_synth.cells
411 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/config.tcl
412 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/tracks.info
413 rm -f ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/no_synth.cells
Tristan Gingolda5854312020-10-15 18:28:16 +0200414 rm -f ${OPENLANE_STAGING_A}/sky130_osu_sc_t18/config.tcl
415 rm -f ${OPENLANE_STAGING_A}/sky130_osu_sc_t18/tracks.info
Ahmed Ghazy5fd61d22020-11-24 21:44:28 +0200416 cp -r openlane/custom_cells ${OPENLANE_STAGING_A}
Tim Edwards5778c232020-07-07 16:57:52 -0400417 ${CPP} ${SKY130A_DEFS} openlane/common_pdn.tcl > ${OPENLANE_STAGING_A}/common_pdn.tcl
418 ${CPP} ${SKY130A_DEFS} openlane/config.tcl > ${OPENLANE_STAGING_A}/config.tcl
419 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/config.tcl > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/config.tcl
420 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/tracks.info > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/tracks.info
421 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/no_synth.cells > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/no_synth.cells
manarabdelatya6e75452020-11-30 19:12:12 +0200422 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hd/tribuff_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hd/tribuff_map.v
Tim Edwards5778c232020-07-07 16:57:52 -0400423 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/config.tcl > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/config.tcl
424 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/tracks.info > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/tracks.info
425 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/no_synth.cells > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/no_synth.cells
manarabdelatyf2abe532020-12-01 13:24:40 +0200426 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hs/tribuff_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hs/tribuff_map.v
Ahmed Ghazy8e84e5c2020-07-27 14:32:34 +0200427 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ms/config.tcl > ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/config.tcl
428 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ms/tracks.info > ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/tracks.info
429 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ms/no_synth.cells > ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/no_synth.cells
manarabdelatyf2abe532020-12-01 13:24:40 +0200430 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ms/tribuff_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_ms/tribuff_map.v
Ahmed Ghazy8e84e5c2020-07-27 14:32:34 +0200431 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ls/config.tcl > ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/config.tcl
432 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ls/tracks.info > ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/tracks.info
433 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ls/no_synth.cells > ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/no_synth.cells
manarabdelatyf2abe532020-12-01 13:24:40 +0200434 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_ls/tribuff_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_ls/tribuff_map.v
Ahmed Ghazy8e84e5c2020-07-27 14:32:34 +0200435 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hdll/config.tcl > ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/config.tcl
436 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hdll/tracks.info > ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/tracks.info
437 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hdll/no_synth.cells > ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/no_synth.cells
manarabdelatyf2abe532020-12-01 13:24:40 +0200438 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hdll/tribuff_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hdll/tribuff_map.v
Ahmed Ghazy8e84e5c2020-07-27 14:32:34 +0200439 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hvl/config.tcl > ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/config.tcl
440 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hvl/tracks.info > ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/tracks.info
441 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hvl/no_synth.cells > ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/no_synth.cells
manarabdelatyf2abe532020-12-01 13:24:40 +0200442 ${CPP} ${SKY130A_DEFS} openlane/sky130_fd_sc_hvl/tribuff_map.v > ${OPENLANE_STAGING_A}/sky130_fd_sc_hvl/tribuff_map.v
Tristan Gingolda5854312020-10-15 18:28:16 +0200443 ${CPP} ${SKY130A_DEFS} openlane/sky130_osu_sc_t18/config.tcl > ${OPENLANE_STAGING_A}/sky130_osu_sc_t18/config.tcl
444 ${CPP} ${SKY130A_DEFS} openlane/sky130_osu_sc_t18/tracks.info > ${OPENLANE_STAGING_A}/sky130_osu_sc_t18/tracks.info
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400445
446vendor-a:
agorararmard14a276b2020-10-07 20:40:48 +0200447 # Modify the LEF files to update hs and ms libraries
Tim Edwards106e38b2020-09-20 13:07:54 -0400448 # Install device subcircuits from vendor files
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400449 ${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
Tim Edwards995c1332020-09-25 15:33:58 -0400450 -ngspice sky130_fd_pr/latest/models/* \
451 filter=custom/scripts/rename_models.py \
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400452 |& tee -a ${SKY130A}_install.log
453 # Install base device library from vendor files
454 ${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
Tim Edwards106e38b2020-09-20 13:07:54 -0400455 -gds %l/latest/cells/*/*.gds compile-only \
456 -cdl %l/latest/cells/*/*.cdl compile-only \
457 -lef %l/latest/cells/*/*.magic.lef compile-only \
Tim Edwardsbfc82692020-09-20 21:33:08 -0400458 -spice %l/latest/cells/*/*.spice filter=custom/scripts/rename_cells.py \
Tim Edwards106e38b2020-09-20 13:07:54 -0400459 -library primitive sky130_fd_pr |& tee -a ${SKY130A}_install.log
Tim Edwardse60b4862020-11-23 16:56:52 -0500460 # Custom: Add "short" resistor model and subcircuit to the r+c models file
Tim Edwards42f79a32020-09-21 14:18:09 -0400461 cat ./custom/models/short.spice >> \
462 ${STAGING_PATH}/${SKY130A}/libs.tech/ngspice/sky130_fd_pr__model__r+c.model.spice
Tim Edwardse60b4862020-11-23 16:56:52 -0500463 # Custom: Add diodes as subcircuits to the r+c models file
464 cat ./custom/models/diode.spice >> \
465 ${STAGING_PATH}/${SKY130A}/libs.tech/ngspice/sky130_fd_pr__model__r+c.model.spice
466
Ahmed Ghazy59370ab2020-10-29 02:04:45 +0200467 # Install custom additions to I/O pad library
468 ${STAGE} -source ./custom -target ${STAGING_PATH}/${SKY130A} \
469 -verilog %l/verilog/*.v \
470 -cdl %l/cdl/*.cdl \
471 -gds %l/gds/*.gds \
472 -lef %l/lef/*.lef compile-only rename=sky130_ef_io \
473 -library general sky130_fd_io |& tee -a ${SKY130A}_install.log
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400474 # Install SkyWater I/O pad library
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400475 ${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
Tim Edwards1134fbc2020-10-12 22:35:42 -0400476 -spice %l/latest/cells/*/*.spice compile-only \
477 sort=custom/scripts/sort_pdkfiles.py \
478 -cdl %l/latest/cells/*/*.cdl ignore=topography compile-only \
479 sort=custom/scripts/sort_pdkfiles.py \
480 -lef %l/latest/cells/*/*.magic.lef compile-only \
481 sort=custom/scripts/sort_pdkfiles.py \
482 -doc %l/latest/cells/*/*.pdf \
483 -lib %l/latest/timing/*.lib \
484 -gds %l/latest/cells/*/*.gds compile-only \
485 sort=custom/scripts/sort_pdkfiles.py \
Tim Edwards26ab4962021-01-03 14:22:54 -0500486 options=custom/scripts/sky130_fd_io_import.tcl \
Tim Edwards1134fbc2020-10-12 22:35:42 -0400487 -verilog %l/latest/cells/*/*.*.v \
488 -verilog %l/latest/cells/*/*.v exclude=*.*.v \
489 compile-only filter=custom/scripts/inc_verilog.py \
490 sort=custom/scripts/sort_pdkfiles.py \
491 -library general sky130_fd_io |& tee -a ${SKY130A}_install.log
492 # Remove the base verilog files which have already been included into
493 # the libraries
494 ${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_io/verilog/*.*.v
Ahmed Ghazy5fd61d22020-11-24 21:44:28 +0200495 # Install custom additions to standard cell libraries
496 ${STAGE} -source ./custom -target ${STAGING_PATH}/${SKY130A} \
497 -gds %l/gds/*.gds \
498 -lef %l/lef/*.lef \
499 -library digital sky130_fd_sc_hd |& tee -a ${SKY130A}_install.log
Tim Edwardsd14571f2021-01-06 14:49:27 -0500500 # Add a maskhint set for the GPIO pad .mag view to prevent problems writing
501 # when writing HVI to GDS during hierarchical adjustments.
502 ${ADDPROP} ${STAGING_PATH}/${SKY130A} sky130_fd_io sky130_fd_io__top_gpiov2 \
503 "MASKHINTS_HVI 1346 17198 5828 19224 13700 1890 15920 2360 24 17522 1778 20612" -mag
Ahmed Ghazya285ff42020-07-27 17:52:14 +0200504 # Install all SkyWater digital standard cells.
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400505 ${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
Tim Edwardsfd5136b2020-07-08 22:57:04 -0400506 -techlef %l/latest/tech/*.tlef \
507 -spice %l/latest/cells/*/*.spice compile-only \
Tim Edwards995c1332020-09-25 15:33:58 -0400508 sort=custom/scripts/sort_pdkfiles.py \
Tim Edwardsfd5136b2020-07-08 22:57:04 -0400509 -cdl %l/latest/cells/*/*.cdl ignore=topography compile-only \
Tim Edwards995c1332020-09-25 15:33:58 -0400510 sort=custom/scripts/sort_pdkfiles.py \
Tim Edwards106e38b2020-09-20 13:07:54 -0400511 -lef %l/latest/cells/*/*.magic.lef compile-only \
Tim Edwards995c1332020-09-25 15:33:58 -0400512 sort=custom/scripts/sort_pdkfiles.py \
Tim Edwardsfd5136b2020-07-08 22:57:04 -0400513 -doc %l/latest/cells/*/*.pdf \
514 -lib %l/latest/timing/*.lib \
515 -gds %l/latest/cells/*/*.gds compile-only \
Tim Edwards995c1332020-09-25 15:33:58 -0400516 sort=custom/scripts/sort_pdkfiles.py \
517 -verilog %l/latest/models/*/*.v exclude=*.*.v compile-only \
518 rename=primitives filter=custom/scripts/inc_verilog.py \
519 sort=custom/scripts/sort_pdkfiles.py \
520 -verilog %l/latest/cells/*/*.*.v \
521 -verilog %l/latest/cells/*/*.v exclude=*.*.v,primitives.v \
522 compile-only filter=custom/scripts/inc_verilog.py \
523 sort=custom/scripts/sort_pdkfiles.py \
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400524 -library digital sky130_fd_sc_hd \
525 -library digital sky130_fd_sc_hdll \
526 -library digital sky130_fd_sc_hvl \
527 -library digital sky130_fd_sc_hs \
528 -library digital sky130_fd_sc_ls \
529 -library digital sky130_fd_sc_ms \
530 -library digital sky130_fd_sc_lp |& tee -a ${SKY130A}_install.log
Tim Edwards16a9caa2021-01-08 13:10:06 -0500531 # Add a maskhint set for the tap cell .ag view to prevent problems writing
532 # when writing NSDM and PSDM to GDS during hierarchical adjustments.
533 ${ADDPROP} ${STAGING_PATH}/${SKY130A} sky130_fd_sc_hd sky130_fd_sc_hd__tapvpwrvgnd_1 \
534 "MASKHINTS_PSDM 0 38 92 196" -mag
535 ${ADDPROP} ${STAGING_PATH}/${SKY130A} sky130_fd_sc_hd sky130_fd_sc_hd__tapvpwrvgnd_1 \
536 "MASKHINTS_NSDM 0 280 92 506" -mag
Tim Edwards995c1332020-09-25 15:33:58 -0400537 # Remove the base verilog files which have already been included into
538 # the libraries
539 ${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_hd/verilog/*.*.v
540 ${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_hdll/verilog/*.*.v
541 ${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_hvl/verilog/*.*.v
542 ${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_hs/verilog/*.*.v
543 ${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_ms/verilog/*.*.v
544 ${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_ls/verilog/*.*.v
545 ${RM} ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_fd_sc_lp/verilog/*.*.v
Tim Edwardsbcf59aa2020-12-17 16:55:13 -0500546 # Install alphanumeric library.
547 ${STAGE} -source ${REPO_PATH} -target ${STAGING_PATH}/${SKY130A} \
Tim Edwards88bd42e2020-12-18 15:29:48 -0500548 -mag %l/mag/*.mag filter=custom/scripts/text2m5.py \
Tim Edwardsbcf59aa2020-12-17 16:55:13 -0500549 -library general sky130_ml_xx_hd |& tee -a ${SKY130A}_install.log
550 # Install text2mag.py script for alphanumeric library
551 mkdir -p ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_ml_xx_hd/scripts
552 cp custom/scripts/text2mag.py \
553 ${STAGING_PATH}/${SKY130A}/libs.ref/sky130_ml_xx_hd/scripts
Tristan Gingolda5854312020-10-15 18:28:16 +0200554 # Install OSU digital standard cells.
555 ${STAGE} -source ${SKYWATER_PATH} -target ${STAGING_PATH}/${SKY130A} \
Tim Edwardsbbab9f62020-11-02 10:12:20 -0500556 -techlef %l/latest/lef/sky130_osu_sc.tlef rename=sky130_osu_sc_t18.tlef \
Tristan Gingolda5854312020-10-15 18:28:16 +0200557 -cdl %l/latest/cdl/*.cdl ignore=topography compile-only \
558 -lef %l/latest/lef/*.lef compile-only \
559 -lib %l/latest/lib/*.lib \
560 -gds %l/latest/gds/*.gds compile-only \
561 -library digital sky130_osu_sc_t18 |& tee -a ${SKY130A}_install.log
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400562
Tim Edwards7cbaaba2020-08-05 12:19:18 -0400563install:
Ahmed Ghazyf45cbf32020-08-08 17:11:53 +0200564 if test "x${DIST_PATH}" == "x" ; then \
565 ${MAKE} install-local ; \
566 else \
567 ${MAKE} install-dist; \
Tim Edwards7cbaaba2020-08-05 12:19:18 -0400568 fi
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400569
570install-local: install-local-a
571
572install-local-a:
573 echo "Starting SKY130 PDK migration on "`date` > ${SKY130A}_migrate.log
574 ${INSTALL} -source ${STAGING_PATH}/${SKY130A} \
575 -target ${LOCAL_PATH}/${SKY130A} \
Tim Edwardsb184e852020-12-04 15:30:05 -0500576 -variable PDKPATH \
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400577 -link_from ${LINK_TARGETS} |& tee -a ${SKY130A}_migrate.log
578 echo "Ended SKY130 PDK migration on "`date` >> ${SKY130A}_migrate.log
579
580install-dist: install-dist-a
581
582install-dist-a:
583 echo "Starting SKY130 PDK migration on "`date` > ${SKY130A}_migrate.log
584 ${INSTALL} -source ${STAGING_PATH}/${SKY130A} \
585 -target ${DIST_PATH}/${SKY130A} \
Tim Edwardsb184e852020-12-04 15:30:05 -0500586 -variable PDKPATH \
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400587 -local ${LOCAL_PATH}/${SKY130A} \
588 -link_from ${DIST_LINK_TARGETS} |& tee -a ${SKY130A}_migrate.log
589 echo "Ended SKY130 PDK migration on "`date` >> ${SKY130A}_migrate.log
590
591clean: clean-a
592
593clean-a:
594 ${STAGE} -target ${STAGING_PATH}/${SKY130A} -clean
595
596veryclean: veryclean-a
597
598veryclean-a: clean-a
599 ${RM} ${SKY130A}_install.log
600 ${RM} ${SKY130A}_migrate.log