Observation
With the pinned generated GF180D SRAM source, Magic’s native bad_nwell mask depends on whether hierarchy is flattened before import. The hierarchical input produces 33 components; flattening already-imported Magic types preserves them. Flattening the complete GDS before import produces no bad_nwell, while the nonempty 126-component MV-well mask remains. Complete input polygon unions and 15,331 transformed text occurrences agree.
We used Magic 8.3.678, GF180D release f6eeac7dad085ffcc829ccfd721f7b4ce39edcf7, and the recorded readonly/noduplicates/maskhints settings. Supported CIF paint exported derived masks into separate diagnostic cells with background DRC catch-up disabled. These are mask queries, not full-deck DRC results.
Two source witnesses distinguish recognition: PMOS geometry at (146.370,324.915)–(151.865,328.855) µm changes from pmos to mvpmos; N-active/contact geometry within (335.370,26.035)–(335.790,27.865) µm changes from ndiff/ndiffc to MV well-tap types. Ancestor voltage/well markers cover these regions; the contributing leaves lack the same local context. Names and supply labels are not voltage evidence. Magic’s diffusion/device-seed scope also differs from KLayout’s PMOS-only predicate.
Question
Are ancestor DUALGATE/FET5VDEF/nwell markers intended to participate in typing these child shapes? If so, which reader/technology boundary should ensure this? Otherwise, what supported input preparation is intended for this source hierarchy?
Pre-import flattening is a diagnostic contrast, not a proposed production fix. We seek intended semantics, not a waiver, electrical acceptance, or a predetermined bug verdict.
Controls
| Complete-source control |
Recorded observation |
| Hierarchical R0; flatten after import |
33 bad / 126 MV-well components; masks unchanged |
| Flatten before import |
0 bad / 126 MV-well components |
| Hierarchical MX, origin (98.200,539.360) µm |
Inverse-transformed masks/types equal R0 |
| Original KLayout 0.30.9 DV.9 predicate |
12,062 high-voltage PMOS regions; 0 low-voltage; 0 findings |
Reproducer and environment
Source: gf180mcu_fd_ip_sram__sram512x8m8wm1.gds, SHA256 40d76d3ccfc8779c9db9f1db7a0bbccbbaf12c4627a3fa5b59049f23eef7d915.
Attached package: gf180_magic_dv9_repro.tar.gz.
Extract and use the actual repro/run.sh entry with --pdk-dir, --source-gds, --magic-bin, --magic-tcl-dir, --klayout-bin, and --output-root; PYTHON_BIN selects Python. repro/README.md documents every parameter and the verified historical source-acquisition route. No PDK/tool binaries or private wrapper are bundled. Magic source reference 73620475d7d70f72b475e746d5cf023b98f34eac is a release mapping, not immutable build attestation.
The source-only replay passed 31 comparisons after relocation on our existing installation. The launcher currently requires matching recorded tool binaries and PDK inputs; independent-machine reproduction has not been validated.
Observation
With the pinned generated GF180D SRAM source, Magic’s native
bad_nwellmask depends on whether hierarchy is flattened before import. The hierarchical input produces 33 components; flattening already-imported Magic types preserves them. Flattening the complete GDS before import produces nobad_nwell, while the nonempty 126-component MV-well mask remains. Complete input polygon unions and 15,331 transformed text occurrences agree.We used Magic 8.3.678, GF180D release
f6eeac7dad085ffcc829ccfd721f7b4ce39edcf7, and the recorded readonly/noduplicates/maskhints settings. Supported CIF paint exported derived masks into separate diagnostic cells with background DRC catch-up disabled. These are mask queries, not full-deck DRC results.Two source witnesses distinguish recognition: PMOS geometry at (146.370,324.915)–(151.865,328.855) µm changes from
pmostomvpmos; N-active/contact geometry within (335.370,26.035)–(335.790,27.865) µm changes fromndiff/ndiffcto MV well-tap types. Ancestor voltage/well markers cover these regions; the contributing leaves lack the same local context. Names and supply labels are not voltage evidence. Magic’s diffusion/device-seed scope also differs from KLayout’s PMOS-only predicate.Question
Are ancestor DUALGATE/FET5VDEF/nwell markers intended to participate in typing these child shapes? If so, which reader/technology boundary should ensure this? Otherwise, what supported input preparation is intended for this source hierarchy?
Pre-import flattening is a diagnostic contrast, not a proposed production fix. We seek intended semantics, not a waiver, electrical acceptance, or a predetermined bug verdict.
Controls
Reproducer and environment
Source:
gf180mcu_fd_ip_sram__sram512x8m8wm1.gds, SHA25640d76d3ccfc8779c9db9f1db7a0bbccbbaf12c4627a3fa5b59049f23eef7d915.Attached package: gf180_magic_dv9_repro.tar.gz.
Extract and use the actual
repro/run.shentry with--pdk-dir,--source-gds,--magic-bin,--magic-tcl-dir,--klayout-bin, and--output-root;PYTHON_BINselects Python.repro/README.mddocuments every parameter and the verified historical source-acquisition route. No PDK/tool binaries or private wrapper are bundled. Magic source reference73620475d7d70f72b475e746d5cf023b98f34eacis a release mapping, not immutable build attestation.The source-only replay passed 31 comparisons after relocation on our existing installation. The launcher currently requires matching recorded tool binaries and PDK inputs; independent-machine reproduction has not been validated.