updates to sky130 cell lists#508
Conversation
Done using bash command: ```sh awk -i inplace '!seen[$0]++' ./sky130_fd_sc_*/no_synth.cells ```
Using bash script: ``` sort ./sky130_fd_sc_hd/no_synth.cells -o ./sky130_fd_sc_hd/no_synth.cells sort ./sky130_fd_sc_hdll/no_synth.cells -o ./sky130_fd_sc_hdll/no_synth.cells sort ./sky130_fd_sc_hs/no_synth.cells -o ./sky130_fd_sc_hs/no_synth.cells sort ./sky130_fd_sc_ms/no_synth.cells -o ./sky130_fd_sc_ms/no_synth.cells sort ./sky130_fd_sc_ls/no_synth.cells -o ./sky130_fd_sc_ls/no_synth.cells ```
Using bash script: ```sh sort ./sky130_fd_sc_hd/drc_exclude.cells -o ./sky130_fd_sc_hd/drc_exclude.cells sort ./sky130_fd_sc_hdll/drc_exclude.cells -o ./sky130_fd_sc_hdll/drc_exclude.cells sort ./sky130_fd_sc_hs/drc_exclude.cells -o ./sky130_fd_sc_hs/drc_exclude.cells sort ./sky130_fd_sc_ms/drc_exclude.cells -o ./sky130_fd_sc_ms/drc_exclude.cells sort ./sky130_fd_sc_ls/drc_exclude.cells -o ./sky130_fd_sc_ls/drc_exclude.cells ```
|
@mole99 : Can you please take a look at this at your convenience? Should we be reviewing what's in all the exclude lists? The exclude lists were created long ago and I have no idea whether updates to openROAD and openlane/librelane have made much of the contents unnecessary. |
|
We might need to clean the entire exclude lists and run it through the LibreLane CI to see which cells pose issues. This will likely not catch all the issues, as some may only occur under certain circumstances. So we unfortunately need to rely on LibreLane users to report any remaining issues. But I think it's still worth doing this properly. I'm not sure if it's possible to add comments to the cell lists using, e.g., |
mole99
left a comment
There was a problem hiding this comment.
These changes look fine to me. Thank you for the cleanup, and I'm looking forward to future list updates.
|
Setting up a LibreLane CI should probably be the first step before making risky changes. According to information from old forum posts (from about 2021~2024) According to announcements LibreLane 3 uses an updated version of OpenROAD, so hopefully at least some of those issues were solved. I did run a test using the semi last I have created a draft document where I investigate why cells are used excluded in In addition to broad cell exclusions other problematic areas are technology mapping and clock gating. There is also power gating and DFT, bot those lack so much tool support I will ignore them for now.
|
|
LibreLane already has a CI with a selection of designs. You can find the designs here: https://github.com/librelane/librelane-ci-designs My suggestion would be to edit the exclude lists and run the tests from the CI locally. Regarding the Yes, you can see the OpenROAD version in use here: https://github.com/librelane/librelane/blob/1e4f4d5bf9d2693798b12dc0c1cd0337ad266a0d/nix/openroad.nix#L45 The document is great. However, if there's no information as to why a cell was excluded, I would lean towards removing it from the list anyways. We will find out later on if there are any issues, or not if the original issue has been resolved in the meantime. Power gating is still an open topic. Mapping more of the supported cells would be good in general. |
|
@jeras Regarding clock gating, this works for sky130: Add this to the PDK config: set ::env(SYNTH_CLOCKGATE_POSEDGE_ICG) "sky130_fd_sc_hd__dlclkp_1/GATE/CLK/GCLK"And in your design enable clock gating via: SYNTH_CLOCKGATE_MIN_WIDTH: 4However, I haven't simulated a design with it yet. |
|
Pulled and merged to opencircuitdesign.com. Github mirror will update overnight. |
|
Thanks @mole99 for the details on clock gating. I was going to try the same, but right now my main problem is setting up automated checks. While I got the LibreLane CI to run on my branch I have the following issues:
|
|
Thanks @RTimothyEdwards with this and the config.tcl variable changes, I will now prepare the LP (low power) configuration pull request. |
|
I started cleaning up A GOOD thing is that since LibreLane 2.0.0b17 cell lists can contain comments and wildcards: The BAD is that LibreLane is mishandling this, so I am unable to test exclusion lists: The SLIGHTLY ANNOYING part is there are more deprecated variables, in the PDK TCL configuration file. So I would like to make some renames here. The IHP 130 library is already using some of the new variable names for cell exclude lists (but still some deprecated names elsewhere). |
Yes, sorry about that. When LibreLane 3.0 was released, the submodules hadn't been updated. The dev branch of the submodules should have been merged into main, and LibreLane main should have been updated. I'll ping Donn about it. That said, the CI for LibreLane dev is clean. That's where feature development should happen.
If you invoke LibreLane without any extra arguments: It will manage the PDK by itself, i.e. it will use Ciel to download the pinned PDK release. However, you can specify that you are managing the PDK yourself. This is done via: or Usually PDK_ROOT is ~/ciel, but you can compile your own open_pdks fork and point to it. Is that what you were asking? If you'd like, you can join FOSSi Chat (https://fossi-chat.org) and I can explain more clearly. There are also dedicated rooms for LibreLane and the open-source PDKs. |
|
Thanks for working on the clean-up. It's unfortunate to hear that LibreLane mishandles Yes, using the latest name for a variable is always preferred. |
|
@mole99 thanks for the CI and tests submodule clarifications. For now I am using Regarding the handling of SYNTH_EXCLUDED_CELL_FILE by LibreLane, my understanding is too limited to make any suggestions, I will wait for a reply to the issue report. |
|
You're welcome! Yes, I agree with that. Well, the reply will likely come from either me or Donn. I'm currently rather busy, though, so it might take me a while to look into this more closely. |
I am working on porting sky130 LP SCL and noticed
no_synth.cellslists seem unmaintained.no_synthlists for HDLL/HS/MS/LS seem to be just copies of the one for HD wit search/rename, but the libraries do not contain the same set of cells, so current lists could contain non existing cell s and miss cell that should be listed.The commits in this pull request are trivial should make no functional changes (so no regressions), they are just a preparation for further changes.
The idea behind 2, 3 is to make future list updates easier, since being able to compare the sorted lists using a side by side diff tool.