Workspace Components
In the spirit of enabling process agnostic generators, the BAG workspace rigorously maintains a clear separation between process agnostic generator repositories, and process specific primitives library and data repositories containing process specific yamls for the generator repositories.
Process agnostic submodules
A typical BAG workspace will have the following process agnostic submodules:
BAG_framework: The core framework, defining base classes for generators, interfaces with simulation and verification tools, etc
pybag: This defines the python bindings for the C++ implementation of the back-end.
cbag: This contains the C++ implementation of the back-end.
xbase: The core layout framework (XBase), that defines the various layout base classes like MOSBase, ArrayBase, ResArrayBase, etc.
bag3_testbenches: This defines the various generic testbenches (DCTB, ACTB, SPTB, PSSTB, etc) that are used in MeasurementManagers.
bag3_digital: Repository with generators for “digital” custom cells
bag3_analog: Repository with generators for “analog” custom cells
bag3_magnetics: Repository with generators for magnetic passives like inductor, t-coil
Warning
Never put any process specific information in the previous repositories to avoid violating NDAs.
Process specific submodules
A typical BAG workspace will have the following process specific submodules:
<tech repo>: This usually has the same name as the PDK, and contains implementations of the layout primitives,
BAG_prim
schematics, netlisting setup, verification tools setup, etc.data/xbase: Process specific yamls for executing xbase generators.
data/bag3_testbenches: Process specific yamls for executing bag3_testbenches generators.
data/bag3_digital: Process specific yamls for executing bag3_digital generators.
data/bag3_analog: Process specific yamls for executing bag3_analog generators.
data/bag3_magnetics: Process specific yamls for executing bag3_magnetics generators.
Warning
We can release these repositories for only cds_ff_mpt
and SkyWater130
since those PDKs
are open source. The corresponding process specific repositories for closed source PDKs are
hosted on BWRC’s internal Git server.