Attempt to fix LVS mismatch and SRAM creation with banks for sky130#282
Open
ruhai-lin wants to merge 2 commits intoVLSIDA:devfrom
Open
Attempt to fix LVS mismatch and SRAM creation with banks for sky130#282ruhai-lin wants to merge 2 commits intoVLSIDA:devfrom
ruhai-lin wants to merge 2 commits intoVLSIDA:devfrom
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
✅I have read
CONTRIBUTING.mdand am submitting this PR against the dev branch as requested.Background
While compiling the sky130 macro config sky130_sram_1kbyte_1rw_32x256_8, I ran:
python sram_compiler.py macros/sram_configs/sky130_sram_1kbyte_1rw_32x256_8.pyand consistently hit two known failures that have been discussed publicly:
LVS mismatch:
#217
Could not find bl net in timing paths:
#228
https://web.open-source-silicon.dev/t/27045118/hello-everyone-i-am-exploring-openram-and-want-to-create-a-r
a more detailed log is:
Root causes
maybeThe LVS mismatch is driven by a sky130 col_cap / related array pin-order / connection-order mismatch (i.e., instance connection order does not match the expected port order), which causes top-level matching to fail.
The characterization failure is caused by the address bit-order assumption used by the characterizer did not match the generated netlist, leading to wrong probe row/col selection and thus missing BL paths.
What this PR changes
Align col_cap / bitcell base array port ordering with the actual instance connection order so that LVS top-level matching succeeds for this macro.
Affected files:
technology/sky130/sky130_bitcell_base_array.pytechnology/sky130/sky130_col_cap_array.pyFix address bit-order parsing used by the characterizer so probe row/col selection matches the generated netlist conventions.
Affected files:
compiler/characterizer/simulation.pycompiler/characterizer/delay.pycompiler/characterizer/trim_spice.pyTesting
I tested this on my stable/local branch again with:
python sram_compiler.py macros/sram_configs/sky130_sram_1kbyte_1rw_32x256_8.pyand the flow completes successfully for this configuration.
Limitations / request for review
I did not have knowledge or time to test other configs, and I also did not verify compatibility with the latest dev branch changes beyond my local environment.
Since I’m not deeply familiar with OpenRAM internals, I would appreciate maintainer review on whether these fixes are correctly scoped and whether any gating/generalization is preferred.