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

Wierd connection with sroute command after setting the ndr rule. #3067

Open
Wen-Tian-Pineapple opened this issue Mar 23, 2023 · 5 comments
Open

Comments

@Wen-Tian-Pineapple
Copy link
Contributor

Wen-Tian-Pineapple commented Mar 23, 2023

Description

This problem is related to #[191] (idea-fasoc/OpenFASOC#191), #[193] (idea-fasoc/OpenFASOC#193), #[3050] (#3050). When using sroute and the ndr rule below to connect the ring oscillator with the power ring. We see some weird routing wires. Extra figure are showing below to describe the issue.

ndr rule:
create_ndr -name NDR_5W_5S
-spacing { *4 }
-width { *4 }
set ndr [$block findNonDefaultRule NDR_5W_5S]
$ndr setHardSpacing 1

In the figure below, you can see there is couple weird routing behaviors. During the connection from a cell to the power ring, there is a sudden change of wire width even though at the same layer. Also at some of the via cut, there is extra wire added which is way more than enough.

image(2)

Suggested Solution

Maybe the detailed router can be changed to adapt to the sroute and the ndr rule. This problem might be cause by the incorrect setting of parameters in ndr rule functions.

Additional Context

No response

@maliberty
Copy link
Member

Please provide a test case (preferably on a public PDK)

@Wen-Tian-Pineapple
Copy link
Contributor Author

global_route.txt

In OpenRoad Flow script, I changed global_route.tcl to the same as the file above (can't attach tcl file so I attached the txt) and run the design of "./designs/nangate45/gcd/config.mk" (to run the make file faster, you can set the wire width/spacing smaller)

The weird connection is in the figure below(on net 36):
image
image

@maliberty
Copy link
Member

From the picture it looks like the wire is connecting to that standard cell pin. The standard cell pins are very dense and using a wide wire would block access to the other pins. So we automatically apply tapering to the wire when you approach them.

I'm guessing for your sroute purposes you don't want tapering but I'm not certain.

@michahn01
Copy link

michahn01 commented Apr 17, 2023

From the picture it looks like the wire is connecting to that standard cell pin. The standard cell pins are very dense and using a wide wire would block access to the other pins. So we automatically apply tapering to the wire when you approach them.

I'm guessing for your sroute purposes you don't want tapering but I'm not certain.

I'm looking at this issue right now, and I'm wondering how I might disable tapering for sroute (and sroute only). Is there a function somewhere in a file in OpenROAD's src directory that controls this behavior? I apologize in advance if this question doesn't make sense. @maliberty

@maliberty
Copy link
Member

Currently there is just a global AUTO_TAPER_NDR_NETS. You could turning it off to see if you get what you want. If so we could make it more net specific.

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

No branches or pull requests

3 participants