Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: convert OR detailed router drc file to klayout xml #607

Draft
wants to merge 6 commits into
base: dev
Choose a base branch
from

Conversation

kareefardi
Copy link
Collaborator

@kareefardi kareefardi commented Nov 28, 2024

Steps

  • OpenROADStep.DetailedRouting

    • Moved DRC report file to <step_dir>/reports/drc.rpt
    • Created a converted DRC KLayout xml file in <step_dir>/reports/drc.xml

Fixes #527

commit e7a0e71
Author: Kareem Farid <[email protected]>
Date:   Sun Nov 3 13:22:53 2024 +0200

    lint

    Signed-off-by: Kareem Farid <[email protected]>

commit 9e25b72
Author: Kareem Farid <[email protected]>
Date:   Sun Nov 3 13:11:51 2024 +0200

    update changelog, Verilator.Lint, Yosys.JsonHeader

    Signed-off-by: Kareem Farid <[email protected]>

commit 36bca9b
Author: Kareem Farid <[email protected]>
Date:   Sun Nov 3 12:52:59 2024 +0200

    bugfix: allow unsetting variables in configuration files

    Signed-off-by: Kareem Farid <[email protected]>

commit b0246e6
Author: Kareem Farid <[email protected]>
Date:   Tue Oct 29 15:29:20 2024 +0300

    hotfix: incorrect error message when substiuting with a nonexistent step

commit 19109e1
Author: Mohamed Gaber <[email protected]>
Date:   Sat Oct 26 20:12:12 2024 +0300

    bugfix: odb steps dropping PYTHONPATH (#592)

    * `Odb.*`
      * Fixed OpenROAD dropping user-set `PYTHONPATH` values.

    ## Tool Updates

    * Use `NIX_PYTHONPATH` instead of `PYTHONPATH` in Docker and devshells
      to avoid collisions with user-set `PYTHONPATH` variables.

commit 627a5ab
Author: Mohamed Gaber <[email protected]>
Date:   Thu Oct 24 11:03:55 2024 +0300

    nix: make flake.createOpenLane shell more ergonomic

    ## Tool Updates
    * `flake.createOpenLaneShell` now gets OpenLane from `python3.pkgs`.
    * Fixed issue with `flake.createOpenLaneShell` where plugins would not get
      included due to an operator precedence issue.

commit 8451508
Author: Mohamed Gaber <[email protected]>
Date:   Thu Oct 24 10:57:58 2024 +0300

    hotfix: regression in nix/create-shell.nix

commit 1bfa43d
Author: Mohamed Gaber <[email protected]>
Date:   Mon Oct 21 21:05:05 2024 +0300

    Temporarily revert Colab's OpenLane version until it's fixed

Signed-off-by: Kareem Farid <[email protected]>
@openlane-bot
Copy link
Collaborator

openlane-bot commented Nov 28, 2024

Metric comparisons are in beta. Please report bugs under the issues tab.

To create this report yourself, grab the metrics artifact from the CI run, extract them, and invoke python3 -m openlane.common.metrics compare-remote current --branch dev --table-verbosity ALL --table-out ./tables_all.md.

  • No changes to critical metrics were detected in analyzed designs.

Full tables ► https://gist.github.com/openlane-bot/5759497d3e4fb0fb629e4c1356f61bba

openlane/common/drc.py Outdated Show resolved Hide resolved


@dataclass
class Violation:
rules: List[Tuple[str, str]] # (layer, rule)
description: str
bounding_boxes: List[BoundingBox] = field(default_factory=list)
bounding_boxes: List[Union[BoundingBox, BoundingBoxWithDescription]] = field(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry to be pedantic but that's still an API break. If you were iterating over .bounding_boxes using:

for (llx, lly, urx, ury) in violation.bounding_boxes:
   pass

This code wouldn't work after this patch.


Can you reason why BoundingBoxWithDescription is needed? Can the information not be captured in description?

Copy link
Collaborator Author

@kareefardi kareefardi Nov 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why won't the code work? If violations.bounding_boxes is of type List[BoundingBox] code will still work.

description is common for all bounding boxes for a certain category. To add the additional information in the image below you need a text field with the bounding box. In the image Short is the description of certain category while the other is the additional text.

image

Copy link
Collaborator Author

@kareefardi kareefardi Nov 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made another update. I think it is more reasonable.
Edit:
Not yet. local hook failed, fixing it..

@kareefardi
Copy link
Collaborator Author

Delayed till OpenLane 3. For cleaner implementation with API break

@kareefardi kareefardi marked this pull request as draft December 11, 2024 09:09
@kareefardi kareefardi added this to the 3.0.0 milestone Dec 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants