Open mithro opened 4 years ago
From @RTimothyEdwards;
The steps needed are;
- Read all the individual GDS files
- Create a new cell with the name of the library
- Instantiate one of every individual GDS cell in the new parent cell
- Write GDS of the parent cell
@mithro : I have this capability as part of the open_pdks "foundry install" script. It follows the steps you (or rather I) outlined above, although with additional technical details. I think it would be helpful for me to add an option to the "gds write" command in magic which would prevent it from writing the top-level cell, so that the result would be just a GDS library of components. The additional top-level cell is unnecessary, and while it should not cause problems, it could potentially confuse applications that read the GDS library.
@wenbodd Can you try this and merge the gds files for openroad?
The merged gds is pushed to the sky130 branch in openroad: https://github.com/The-OpenROAD-Project/OpenROAD-flow/tree/sky130/flow/platforms/sky130/gds
FYI - The open_pdk repo has a create_gds_library.py
which should be imported into the skywater-pdk Python API library and used here.
Similar to how there is a script which combines the timing data from the per cell timing JSON data into a single large liberty file, we need a script which does the same for the GDS files.
As GDS files are a binary format, this script should use Magic. (Magic should be installed into the environment from conda from https://github.com/litex-hub/litex-conda-eda/tree/master/misc/magic). This can be done by generating a TCL script to give to Magic.
The script should be added to the
skywater_pdk
Python module.