cicconf
Project templates for cicconf, the tool that clones an IP’s dependencies and scaffolds a new IP repository.
cicconf --config config.yaml clone --https # fetch dependencies
cicconf newip bias # make a new IP
newip does not take the template path. It reads it from the options block of the monorepo config.yaml you run it in:
options:
project: JNW
technology: SKY130A
template:
ip: ../tech_sky130A/cicconf/jnw.yaml
so cicconf newip bias creates JNW_BIAS_SKY130A in a directory named jnw_bias_sky130a. --project, --technology and --ip override the three values for one invocation, which is how you use a template that is not the project default:
cicconf newip bias --ip ../tech_sky130A/cicconf/lelo.yaml
A template is one yaml file describing a whole repository. cicconf substitutes into it before parsing it as yaml, then runs the keys it recognises in order:
| Key | What it does |
|---|---|
dirs | Directories to create |
create | filename: contents pairs to write |
do | Shell commands to run in the new directory |
echo | A message to print at the end |
copy | Files to copy from a source IP; only does anything with --src, which newip does not pass |
The substitutions are ${IP}, ${CELL} and their lowercase forms ${ip} and ${cell}, followed by environment variables. ${CELL} is not something you choose: it is the IP name with its last underscore-separated segment removed, so JNW_BIAS_SKY130A gives JNW_BIAS.
All four templates here build the same shape of repository and differ only in the details.
| Template | Standard cells | Extras |
|---|---|---|
| ip_template.yaml | jnw_tr, jnw_atr | an rtl/ directory for mixed signal work |
| jnw.yaml | jnw_tr, jnw_atr | a SIM workflow, so simulations run in CI |
| lelo.yaml | jnw_tr, jnw_atr | a root Makefile for the documentation targets |
| rey.yaml | rey_tr, rey_atr | a root Makefile, and a wider .gitignore |
Every one of them pins tech_sky130A as a dependency and symlinks it in as tech, which is how an IP ends up with the layout all the make targets and tcl templates in this repository are written against:
my_ip/
├── tech -> ../tech_sky130A
├── design/MY_IP_SKY130A/
├── work/ make drc, lvs, gds, ...
├── sim/ cicsim testbenches
└── .github/workflows/