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.
Note
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 filesdocs/
- documentation generated by CACEgds/
- GDSII layoutsky130_ef_ip__template.gds.gz
ip/
- IP blocks that the project depends on (not used in this simple example)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
.
├── cace - CACE datasheet and files
├── docs - documentation generated by CACE
├── gds - GDSII layout
│ └── sky130_ef_ip__template.gds.gz
├── ip - IP blocks that the project depends on (not used in this simple example)
├── LICENSE
├── mag - magic layout
│ └── sky130_ef_ip__template.mag
├── netlist - spice netlists generated by CACE
├── README.md
├── runs - run directory generated by CACE (not commited)
├── xschem - files for xschem
│ ├── sky130_ef_ip__template - project internal symbols and schematics
│ ├── sky130_ef_ip__template.sch - top level schematic
│ │ └── …
│ ├── sky130_ef_ip__template.sym - top level symbol
│ ├── sky130_ef_ip__template_tb.sch - top level testbench
│ └── xschemrc - project xschemrc (must be sourced)
├── .github
│ └── workflows
│ └── cace.yml - GitHub Action to run CACE
└── .gitignore
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 ip/
folder.
This command expects the IP block to belong to the same user as the superproject:
git submodule add ../<ip_block>.git ip/<ip_block>
This command expects the IP block to be hosted on GitHub by a different user:
git submodule add ../../<user>/<ip_block>.git ip/<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.
Important
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