Skip to content

ram: add placement sanity checks to the regression tests (check_placement, etc.) #10561

Description

@rovinski

The ram tests don't feature any basic sanity tests to ensure that the result is correct. Sometimes visual inspection isn't sufficient.

  • Tests should add check_placement after running in order to ensure that cells were not placed on top of each other or are otherwise overlapping
  • The power grid should be checked to ensure that there are no unconnected pins
  • I think that routing violations are already checked, so that's ok
  • Formal equivalence should be checked, but that can be a separate issue
  • Any other built-in checks that can be run

Activity

  1. changed the title [-]Add placement sanity checks to the regression tests (`check_placement`, etc.)[/-] [+]ram: add placement sanity checks to the regression tests (`check_placement`, etc.)[/+] on May 30, 2026
  2. self-assigned this
    on May 30, 2026
  3. added theissue type on May 30, 2026
  4. rovinski commented on May 30, 2026

    @rovinski
    CollaboratorAuthor
  5. tnguy19 commented on Jul 7, 2026

    @tnguy19
    Contributor

    FYI/notice on this issue. There's a known error that will happen if placement check is added where RAMs with column muxing will have a layer conflict issue with clock gates.

    Reproduces on make_8x8_mux2_sky130.tcl with check_placement -verbose:

    [WARNING DPL-0010] Blocked layers check failed (8).
     storage_0_0_0.cg ... storage_3_1_0.cg
    [ERROR DPL-0033] detailed placement checks failed during check placement.
    

    Cause of issue is currently believed to be:

    There's a check in src/dpl/src/infrastructure/network.cxx (lines 98-100):

    • If a cell has a pin on met1, also reserve met2 above it for via access

    • Clock gate (sky130_fd_sc_hd__dlclkp_1) CLK pin is on met1, so met2 gets reserved. VDD power stripe also physically sit on met2 at that location leading to this conflict

    • Other cells (DFFs, buffers) have pins only on li1 which is skipped by this check so no conflict is raised

    Routing and functionality still works normally despite this. Will be resolved in a follow-up.

  6. github-actions commented on Sep 5, 2026

    @github-actions
    Contributor

    This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 21 days if no further activity occurs. Remove the Stale label or comment to keep it open.

  7. added
    StaleA stale PR or issue subject to automated closure.
    on Sep 5, 2026
  8. removed
    StaleA stale PR or issue subject to automated closure.
    on Sep 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

ramDFF Ram Generator

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions