-
Notifications
You must be signed in to change notification settings - Fork 12
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
caravel_openframe_project physical implementation #13
base: main
Are you sure you want to change the base?
Conversation
picosoc dll integration
tighten antenna margin constraint
that (1) it is a synchronized reset, and (2) it picks up the external reset from housekeeping.
update OpenLane for halo fix for OpenROAD remove pdn ring workaround for sram remove placement padding in an attempt to decrease antenna violations - no considerable difference observed.
add sdc update config for sta, optimizations and others
…ower connections
@mo-hosni : What is in this pull request? It appears as "infinite" files changed, and I cannot view the diffs. |
@mo-hosni : What you are making a pull request for is not an example project. It is a fully completed project ready for submission for manufacture. What I want for a pull request is the minimum number of files needed to generate the entire finished layout, and instructions on how to run openlane to obtain the finished layout. |
Otherwise, the finished layout in your fork appears to be good. But there are a lot of unneeded files lying around, many in places they should not be. Can you tell me what is the minimum set of source files I need to reproduce the final layout? |
@mo-hosni : You have removed power pins from the openframe wrapper definition. You can't do that. How to preserve them? |
Okay, I agree. We can use this PR to review the implementation and I will make another one with the openlane files to be merged.
Yes, this is will be ready for submission after review. Aren't we going to tapeout the example?
The minimum source files for reproduction are the openlane folder files and the 2 manual macros views which are clock_routing is not used in this implementation as a macro (it is flattened) so its openlane folder can be deleted.
The thing is, if we have all 6 power domains in the RTL we will have to place pins for each one and hence there will be lots of manual connections, unused pins, and unused power rings/grids. This is no only an large overhead on the users but also a disadvantage of the layout as it takes from the routing resources, complicates the PDN, and might introduce LVS issues. |
@mo-hosni : You should not create power rings/grids for any power domain that is not used, but you still need to keep the pins so that we can run an XOR at the boundary of the openframe wrapper to ensure that all connections have been made. I was originally advocating for an "interposer" layout which would connect between the routed design with the minimum number of rings/grids needed, and the power pins, with different interposers for common configurations. For example, a very common configuration would be to tie all three 1.8V domains (VCCD, VCCD1, VCCD2) to a single ring/grid in the project, which maximizes the amount of current that can be delivered to the project. |
(By "ensure that all connections have been made", I mean "ensure that all mandatory connections have been made"; and of course the XOR is to ensure that the wrapper layout does not extend beyond the wrapper boundary so that it does not collide with the padframe.) |
@RTimothyEdwards: I agree that the ideal layout should have all power pins. And grids only to the utilized power domains. That's for sure. The issue is in the tools limits. The power pins are not read from the template def. So, in order to have any power pins using OpenLane we have 2 approaches as far as I know.
In approach 1, the pins/labels will be on the rings and that's why I made a manual macro that connects the ring to the padframe. Approach 2 is easier and can produce the layout we want but I don't think we can ask the users to do that. So, if this is necessary
We need to think of a new approach and it will probably be a hacky one. |
@RTimothyEdwards: I guess the hacky solution would be similar to what we have in caravel: |
@mo-hosni : That would be similar to what I suggested as an "interposer"---For a fixed set of power rings of a fixed size, you can create a subcell that connects them to the power supply or supplies. I do not see how that wastes 25% of the user area, however. How do you come to that result? And if you create a DEF file out of the power connections, can't you apply that to the place & route and have the place & route take up all available space except for the power connections? |
The current user_project area is
The power pins are not applied by the template def in PnR. The template def is only used to determine the location of the signal pins, the power ones are inserted by PDNgen which only inserts rings and stripes. |
…2out hold violations
… sdf simulations requirements * moved the generated sdfs as well
@passant5 : I noticed you made a commit where you changed the name of the wrapper. Please don't do this. Is there not a way to use the SDF with a cell of a different name? If not, then how can the analog user project wrapper for caravan work? |
merge from main to RTL_updates
Rtl updates4 gl
… will be pushed to a branch.
I deleted the physical views from this PR so it can be merged directly, I see you already copied from my fork the source files I wrote and pushed them in the commit 87eac64 Cc: @shalan |
@mo-hosni : How do you obtain the .lib files for digital_locked_loop and picosoc? |
@RTimothyEdwards : Change this to
btw, the digital_looked_loop was developed months ago so it was developed using OpenLane version 6bb1e0dd91227c6bc5ff64309d6a5fb897d4809a
|
For |
@mo-hosni : You're right; I didn't bother to look but yes, there was a .lib file generated for the picosoc macro. Thanks! |
Physical implementation of caravel_openframe_project is done in this PR.
3 major things yet to be done:
openlane/*/*.sdc
)