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

Modifications to the openframe padframe #503

Merged
merged 12 commits into from
Oct 19, 2023
Merged

Conversation

RTimothyEdwards
Copy link
Contributor

Modified the openframe padframe so that the GPIO "wrapped" cells are replaced with the base cells. Routing to pins is instead done in the "gpio_connects" cells while improving on the original routing (fewer cross-overs, multiple vias per contact, wider buses for the analog signals). Made small adjustments to many of the openframe wrapper pins to keep them all on a 10nm grid. Moved the connections previously from the "wrapped" GPIO cell back from the openframe project border, so that the border can be clear of all blockages. Added the DEF file of the wrapper (previously only in the openframe example repo) to the def/ directory. Note: The modified LVS scripts depend on the gate-level netlists of the frame, which have been committed in a prior pull request. This pull request does not conflict with those files.

cells are replaced with the base cells.  Routing to pins
is instead done in the "gpio_connects" cells while
improving on the original routing (fewer cross-overs,
multiple vias per contact, wider buses for the analog
signals).  Made small adjustments to many of the openframe
wrapper pins to keep them all on a 10nm grid.  Moved the
connections previously from the "wrapped" GPIO cell back
from the openframe project border, so that the border can
be clear of all blockages.  Added the DEF file of the
wrapper (previously only in the openframe example repo)
to the def/ directory.  Note:  The modified LVS scripts
depend on the gate-level netlists of the frame, which
have been committed in a prior pull request.  This pull
request does not conflict with those files.
@RTimothyEdwards
Copy link
Contributor Author

For the record, this pull request should resolve the outstanding issues with geometry not belonging to pins extending into the user project area. Also the abutment bounding box is terminated at the ends of the pins and does not extend into the bounding boxes of the padframe or constant_block cells, but abuts cleanly.

RTimothyEdwards and others added 2 commits September 25, 2023 23:51
modified it so that it matches the modified chip_io_openframe layout
in this PR (namely, the GPIO "_wrapped" pads are replaced with the
equivalent non-wrapped base cells).
consistent (all metal2 pins the same width and length and all
metal3 pins the same width and length).  The PR boundary was
moved back to where it was, 0.28um from the pin ends;  that
causes overlap with the padframe but should not be an issue since
the openframe wrapper is manually placed.  All pins reach from
0.28um inside the boundary to the bottom of the comment layer
(which is 2um wide).  Some remaining pins which were not on a
10nm grid were corrected.
@RTimothyEdwards
Copy link
Contributor Author

@marwaneltoukhy : All issues should now be resolved except that there will be an overlap of the PR boundary between the user project wrapper and the padframe. I believe that this will not be a problem.

pin, which was neither 0.28um wide nor completely covered by
metal2.
@marwaneltoukhy
Copy link
Member

@RTimothyEdwards we need to increase the PR Boundary by 0.02um in the X direction, to respect the minimum width of metal 3. openroad routes outside the PR boundary when the Pin doesn't respect the minimum width, I created an issue here The-OpenROAD-Project/OpenLane#2006

@marwaneltoukhy
Copy link
Member

marwaneltoukhy commented Sep 27, 2023

@RTimothyEdwards I manually stretched the pins inside the PR boundary by 0.02um in the def file, and tried the flow with it, and it fixed the issue, maybe we can stretch it a bit more just to be safe.

@RTimothyEdwards
Copy link
Contributor Author

@marwaneltoukhy : The end result of the conversation over klayout is that the wire extension applies only to the extension at a via, and not for any arbitrary wire segment, so klayout's interpretation is correct, and I need to rework the code in magic to assume a default wire extension of 1/2 route width.

@RTimothyEdwards
Copy link
Contributor Author

@marwaneltoukhy : If there is no problem routing to the metal2 pins on top and bottom but there is on the pins to the right and left, then that means that the router wants to see at least the minimum metal width available inside the PR boundary. Since the metal3 minimum with is 0.3um and the pin is sticking out by 0.28um, then it is short by 0.02um, so the 0.02um is sufficient and there should be no need to extend them further.

I will extend the pins and make what I hope is the last commit.

the length of pin inside the wrapper boundary is 0.3um, which is the
minimum metal3 layer width, and is required by the routing tool.
@RTimothyEdwards
Copy link
Contributor Author

@marwaneltoukhy : I just made one additional commit to move all metal3 pins 0.02um further into the user project area so that the minimum length exposed is equal to the minimum metal width rule. This should be the same as what you did to test that the routing works. Please verify the solution.

@marwaneltoukhy
Copy link
Member

@RTimothyEdwards The DEF file looks good, I took it through openlane and verified that there are no issues.

There's another issue that I just found, there are no pins in the empty wrapper mag for this power pad, I know that there's another power pad for VSSD1 and VCCD1, but shouldn't they all have pins in the wrapper?

image

@RTimothyEdwards
Copy link
Contributor Author

Yes, they should, and let me do one more set of fixes.

pads to the user project wrapper layout, which were missing, as pointed
out by Marwan.  Regenerated the wrapper DEF file from the updated
layout.
@RTimothyEdwards
Copy link
Contributor Author

@marwaneltoukhy : Okay, the missing power pins have been added to the wrapper layout, and I regenerated the DEF (and copied it to the openframe project example repository).

This was linked to issues Oct 8, 2023
@marwaneltoukhy
Copy link
Member

I added the empty project wrapper gds file for precheck's XOR

@marwaneltoukhy marwaneltoukhy self-requested a review October 8, 2023 11:06
@RTimothyEdwards
Copy link
Contributor Author

@marwaneltoukhy , @jeffdi : Per today's discussion at Efabless, I realized that one cell that has been modified for openframe, chip_io_gpio_connects, is shared with both caravel and caravan and must not be changed. I will need to fix this by copying the modified cell to a new name to be used by openframe while restoring the original contents of the cell. I should be able to make that update today or tomorrow.

Backed out an error in which the layout "chip_io_gpio_connects.mag",
which was used on caravel and caravan, was modified for openframe,
making it incompatible with caravel and caravan.  Renamed it to
"chip_io_gpio_connects_vert.mag" which makes it unique to openframe
and also matches the nomenclature of "chip_io_gpio_connects_horiz".
@RTimothyEdwards
Copy link
Contributor Author

The issue I mentioned above has now been fixed. The original chip_io_gpio_connects.mag layout for caravel and caravan has been restored, and the one modified for openframe has been renamed chip_io_gpio_connects_vert.mag so that it will not conflict.

Copy link
Member

@marwaneltoukhy marwaneltoukhy left a comment

Choose a reason for hiding this comment

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

@RTimothyEdwards Just realized that verilog/rtl/__openframe_project_wrapper.v doesn't have the vssio and vddio power pins, these are needed to pass precheck.

wrapper RTL netlists and and openframe project wrapper GL netlist.
@RTimothyEdwards
Copy link
Contributor Author

@marwaneltoukhy : vddio and vssio pins added to RTL and GL netlists.

@jeffdi jeffdi merged commit 3afe423 into main Oct 19, 2023
1 check failed
@jeffdi jeffdi deleted the fix_openframe_wrapper_interface branch October 19, 2023 15:02
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.

Openframe DEF File PR boundary missing files for openframe
3 participants