Skip to content

GF180 / Magic 8.3.678: hierarchy-sensitive DV.9 recognition with polygon-equivalent source input #558

Description

@JerryZhong0910

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions