The-OpenROAD-Project / The-OpenROAD-Project/OpenROAD

Create an IP Checker Utility

Open
#4,872 33 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement good first issue
Dominant language
Verilog
Stars
3.1k
Forks
1k
Avg merge
2d 23h
Merged PRs (30d)
136

Description

Description

Originally posted by @rovinski in https://github.com/The-OpenROAD-Project/OpenROAD/issues/4871#issuecomment-2026137319

Currently, it is very possible to import an IP block which is poorly designed and will cause downstream issues in OpenROAD, which becomes difficult to root-cause. A checker utility which checks against a list of common problems can go a long way in identifying problems early.

Suggested Solution

List of common problems to check (far from an exhaustive list):

  • LEF
    • Macro dimensions are a multiple of the manufacturing grid
    • Pins are aligned to the manufacturing grid
    • Each signal pin must obey one of the following:
      • Minimum width, and each pin lies on the routing grid (with an offset is okay)
      • Greater than minimum size, has an access point on the routing grid, and connections from a default width wire OR an NDR rule does not cause a DRC violation.
      • Pins are wide enough such that regardless of offset, a connection from a default width wire (OR NDR rule) does not cause a DRC violation.
    • Power ring or grid straps are accessible (no obstructions in the way)
    • Signal pins are accessible (no obstructions in the way)
    • LEF file does not have an excessive number of polygons which will slow down OR
    • Ports have antenna info
    • LEFs in finfet processes have a fin grid property
    • Pins have geometries
  • LIB
    • All quantities (rise, fall, delay, power, cap, etc.) are sane
      • No instantaneous transitions for reasonable input values
      • No excessively long transitions for reasonable input values
      • No excessively large capacitances
    • No missing properties
    • Characterization corner(s) match(es) the characterization corner(s) of the design
  • LIB+LEF
    • Every LEF digital pin has lib timing info
    • LEF power pins defined match lib power pins
    • LEF and LIB area match
Additional Context

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No file, test, or entry point is named. Start by turning the LEF, LIB, and LEF+LIB checklist into a bounded first scope, then define how completion will be validated against the listed common-problem checks.

Written by the indexing model from the issue text.

Assessment

Domain
tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.