A template repository for analog designs to ensure consistency and interoperability between IP blocks.
To create a new repository with this template, click on Use this template
and set your new repository name.
The repository name should follow the convention:
<pdk_family>_<handle>_ip__<project>
(Note the double underscore after ip
.)
The handle should be a unique short identifier to prevent conflicts between any IP blocks of the same project name. This could be your initials, for example. Please changes all occurrences of sky130_ef_ip__template
to your chosen repository/IP name.
The template is set up for the common open source EDA tools for analog design. This list includes magic, KLayout, xschem, ngspice, netgen and CACE.
CACE is used to run characterization on the IP. It is recommended to install all of the tools using Nix, as explained in the documentation.
cace/
- CACE datasheet and filesdeps/
- dependencies (not used in this simple example)docs/
- documentation generated by CACEgds/
- GDSII layoutsky130_ef_ip__template.gds.gz
mag/
- magic layoutsky130_ef_ip__template.mag
xschem/
- files for xschemxschemrc
- project xschemrc (must be sourced)sky130_ef_ip__template.sch
- top level schematicsky130_ef_ip__template.sym
- top level symbolsky130_ef_ip__template_tb.sch
- top level testbenchsky130_ef_ip__template/
- internal symbols and schematics (not used in this simple example)
netlist/
- spice netlists generated by CACEruns/
- run directory generated by CACE (not commited).github/actions/cace.yaml
- GitHub Action to run CACE
Note: If your project does not use magic layout files, simply delete the mag/
folder and provide the GDS directly in gds/
.
Other IP blocks following this convention can be added as a git submodule in the deps/
folder.
This command expects the IP block to belong to the same user as the superproject:
git submodule add ../<ip_block>.git deps/<ip_block>
This command expects the IP block to be hosted on GitHub by a different user:
git submodule add ../../<user>/<ip_block>.git deps/<ip_block>
Using relative URLs will make sure the submodule is pulled using the correct method (HTTPS/SSH).
The xschemrc of this repository will automatically source the xschemrcs of the dependencies. This is repeated recursively.
Please delete everything above and including this text when you create your own IP block using this template, and update the information below.
Short description about your IP block.
- Documentation
- Characterization