hammer
hammer copied to clipboard
Sky130 - Convert to Pydantic, support sky130_scl
- Implemented method
gen_configfor tech plugins to override and generate their own config (TechJSONinstance, i.e. directly creating the Pydantic model). This enables multi-library support within the same tech plugin. - Removed all existing sky130-tech-gen-... scripts and outputs, static
sky130.tech.json - Upstream @nayiri-k's tech LEF parsing of Metals into
LEFUtils(unfortunately can't create Metal object directly or else it has a circular import) - Fixed
gds_map_filereading in OpenROAD plugin - Adds more robust tech overriding (automatically uses cache paths for PDK collateral if they exist, and allows for manually hacked paths through
technology.override_libraries: []andtechnology.manually_override_pdk_collateral: bool
TODOs:
- [ ] Add sky130_scl Cadence standard cell library option @elamdf
- [x] Documentation for this alternate method
- [x] Sky130 documentation for selecting library
- [x] e2e tests
Related PRs / Issues
Type of change:
- [ ] Bug fix
- [X] New feature
- [X] Other enhancement
Impact:
- [X] Change to core Hammer
- [X] Change to a Hammer plugin
- [ ] Other
Contributor Checklist:
- [X] Did you set
masteras the base branch? - [X] Did you state the type-of-change/impact?
- [X] Did you delete any extraneous prints/debugging code?
- [ ] (If applicable) Did you add documentation for the feature?
- [ ] (If applicable) Did you update the
poetry.lockfile if you updated the requirements inpyproject.toml? - [ ] (If applicable) Did you add a unit test demonstrating the PR?
- [ ] (If applicable) Did you run this through the e2e integration tests?
- [ ] (If applicable) Did you update the submodules in
e2e/if this feature depends on updated plugins?
syn/par works on commercial tutorial flow
make tutorial=sky130-commercial power-syn BINARY=/tools/C/elamdf/chipyard_dev/tests/symmetric.riscv works as well (with joules)