Repository navigation
LibreLane 3 (CI2609) and native multi-domain wrapper PDN; remove bridge macros - #16
Draft
marwaneltoukhy wants to merge 6 commits into
Draft
marwaneltoukhy wants to merge 6 commits into
marwaneltoukhy wants to merge 6 commits into
Conversation
… core ring meta.version 2 with PDN_*/IO_* names. The macro now exposes a core ring as its power pins (ring method), so the wrapper PDN no longer has to match its strap pitch. Signoff on LibreLane 3.0.14: Magic/KLayout DRC 0, LVS 0, XOR 0.
- config.json moves to LibreLane 3 (meta.version 2, Classic flow, PDN_*, MACROS). VDD_NETS, GND_NETS and PDN_MACRO_CONNECTIONS come from power.json, which openlane/Makefile passes before config.json. - Odb.ApplyDEFTemplate now runs before OpenROAD.GeneratePDN, so the padframe power pins exist when the PDN is built and strict template matching works. - pdn_cfg.tcl builds one core ring per net, then ties every padframe pin of those nets to its ring with a met3 strap and via stack. check_power_grid verifies the result. It also grows the padframe signal pins 2um into the die so the LibreLane 3 detailed router can reach them. - Remove vccd1_connection/vssd1_connection (all views), macro.cfg, interactive.tcl, CustomApplyDEFTemplate, FP_TEMPLATE_MATCH_MODE permissive and the LVS_FLATTEN workaround. RUN_LVS is now enabled. - LibreLane pin: CI2609 (LibreLane 3.0.14).
… for LVS - pdn_cfg.tcl blocks met4/met5 inside each macro's core ring while pdngen runs, so wrapper straps stop on the ring. pdngen otherwise threads straps through holes in the macro LEF abstract. The flow errors if a macro has no ring. - Ground domains share the p-substrate, so a flat extraction merges vssd1 and vssd2. LibreLane LVS now extracts user macros as abstracts, and the precheck LVS config wraps them with EXTRACT_CREATE_SUBCUT.
…wer flow Final views on LibreLane 3.0.14 (vccd1 domain): Magic/KLayout DRC 0, LVS 0, XOR 0, PDN violations 0. cf precheck (mpw_precheck, --magic-drc): all 13 checks pass. README describes power.json, the ring method for user macros and the hierarchical alternative.
…LB_PLACEMENT Resolved configuration is unchanged apart from the removed variable.
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.
Why
vccd1_connectionandvssd1_connection, placed bymacro.cfgand hooked in withFP_PDN_MACRO_HOOKS.LVS_FLATTENon the bridge cells, withRUN_LVS: 0on the wrapperinteractive.tcl,CustomApplyDEFTemplate) were still in the tree.power.jsonfrom cf-cli) and to build natively on LibreLane 3.What
openlane/Makefile.config.jsonmoves to metaversion: 2with theClassicflow,PDN_*,MACROS(in place ofMACRO_PLACEMENT_CFG/EXTRA_*) andIO_PIN_ORDER_CFG. It loads with no deprecation warnings.openlane/Makefilepassespower.jsonbeforeconfig.json. LibreLane has no config include and the last file'smetawins.pdn_cfg.tcl).pdngen:check_power_gridthen verifies pad → ring → mesh → macro.PDN_CORE_RING_CONNECT_TO_PADSonly handles pad instance terminals, not block pins.--dockerizedruns the upstream image.meta.substituting_stepsmovesOdb.ApplyDEFTemplatebeforeOpenROAD.GeneratePDN, so the padframe power pins exist while the PDN is built. Strict template matching now works.user_proj_timeris re-hardened withPDN_MULTILAYERandPDN_CORE_RING, so it no longer has to match the wrapper's strap pitch. The README documents the hierarchical method as an alternative.MAGIC_EXT_ABSTRACT_CELLS: ["^user_proj_timer$"](with macro netlists excluded), and the precheck LVS config usesEXTRACT_CREATE_SUBCUT. Each macro is LVS-checked when it is hardened.DRT_ANTENNA_REPAIR_ITERS: 0. The wrapper has no rails or taps, so router-inserted diodes caused nwell DRC and LVS errors. The old wrapper ran no antenna repair either.vccd1_connection/vssd1_connection(rtl, gl, lef, gds, mag, maglef, spi)macro.cfg,interactive.tclandCustomApplyDEFTemplate/LVS_FLATTENand permissive template matchingRUN_LVS: trueon the wrapper.PL_RANDOM_GLB_PLACEMENTis dropped.Testing
mpw_precheck:latest, cf-precheck 1.3.7,--magic-drc)cf harden openframe_project_wrapper --use-dockerwith cf-cli 2.7.1 gave the same clean signoff.pdnmulti: cf-precheck limits it to gf180 digital projects, so it did not run.Follow-ups
CI2609tag: it must be created inchipfoundry/openlane-2(see the openlane-2 PR). Until then, install LibreLane 3.0.14 locally or from PyPI.versions.jsonpins3e0e31dc…, which is not in the ciel releases. Verification used LibreLane 3.0.14's pinned sky1308afc8346….MAGIC_EXT_ABSTRACT_CELLS(wrapperconfig.json) andEXTRACT_CREATE_SUBCUT(lvs/openframe_project_wrapper/lvs_config.json) must name every user macro master, andMACROSmust list the macro views and placement. The cf-cli generator could fill these if the spec recorded macro masters.pdngenhook dependency: the hook relies on LibreLane'spdn.tclcallingpdngenafter sourcingPDN_CFG, which is true in 3.0.14. Re-check this on upgrades.