This is Anton's repo for individually hardening several projects that will target a single GFMPW-1 submission (GF180 Open PDK).
For more info, see: 0181 § 'What I did'.
NOTE: Whichever gf180-*
branch you're on reflects which project you're in, specifically, and all should be branching from gf180-base
(which should hopefully be the default).
The idea is that if general updates are required to gf180-base
, they should be easy enough to merge to each of the project branches, to keep everything consistent.
Say you want to harden one of the gf180-*
project branches... let's use gf180-rbz-fsm
as an example. Here's a very high-level overview, assuming you already have at least something of a working OpenLane environment (or at least the prerequisites installed; see the original efabless guide for more info, but note that the PDK version in that doco might be outdated):
NOTE: Zero to ASIC VM also redirects certain other things (
MGMT_AREA_ROOT
,DESIGNS
,CARAVEL_ROOT
, etc. to subdirectories of~/asic_tools/caravel_user_project
). Check your~/.bashrc
for details. I've been trying to make this a bit more flexible (see Tip 2312A point 5) but note that I've not completed this work yet.
- Switch to the branch and set it up for the first time:
git checkout gf180-rbz-fsm mkdir -p dependencies # Changing OPENLANE_ROOT & PDK_ROOT optional if using Zero to ASIC VM: export OPENLANE_ROOT=$(pwd)/dependencies/openlane_src export PDK_ROOT=$(pwd)/dependencies/pdks # Required: export PDK=gf180mcuD # This will download and install caravel, the PDK, required OpenLane version, etc. make setup
- Each time you want to harden:
# Optional, as above: export OPENLANE_ROOT=$(pwd)/dependencies/openlane_src export PDK_ROOT=$(pwd)/dependencies/pdks # Required: export PDK=gf180mcuD # MAIN HARDENING STEP: make top_ew_algofoogle
NOTE: It is expected that each individual hardened project branch will be copied into one consolidated caravel_user_project when it is considered stable.
You should find that the information above does not deviate per branch, but the information below intentionally does.
You are on the branch that defines the 'clean base' project that is common to all other project branches.
This branch has no gds/
, lef/
, etc. because that is the domain of a real project which branches from this base.