Real-world layouts used by gdsfill and gdscheck as CI test inputs. The designs are not golden references: they exercise the tools on realistic data to catch crashes, regressions, and density rule violations.
Designs are grouped by PDK process, one directory per process, any number of designs per directory:
<process>/<design-name>.gds.gz
designs.json lists every design. name must be unique across the whole
manifest, and tools selects which consumers run the design:
{
"name": "ihp-sg13g2",
"process": "ihp-sg13g2",
"path": "ihp-sg13g2/ihp-sg13g2.gds.gz",
"topcell": "ihp-sg13g2",
"tools": ["gdscheck", "gdsfill"],
"source": "",
"license": "CERN-OHL-W-2.0",
"notes": ""
}designs.py reads the manifest (stdlib only, no dependencies):
./designs.py # all designs as TSV: name process path topcell
./designs.py --process ihp-sg13g2 # only one PDK
./designs.py --tool gdsfill # only designs enabled for gdsfill
./designs.py --json --absolute # JSON with absolute paths
./designs.py --check # validate the manifest
./designs.py --tool gdscheck --absolute | while IFS=$'\t' read -r name process path topcell; do
gdscheck run --process "$process" --suite main --topcell "$topcell" --input "$path"
done