How to efficiently get IO pins positions and reuse them #1235
-
I am currently working on my master thesis where the subject is to enable 3D system implementation using OpenROAD, to achieve 3D stacked designs using face-to-face IO bonding. I am trying to implement a flow (using the Ibex design as a base), and I already got the bottom die working (detailled routing did not finished, but I think that this is due to the use of the skywater PDK, which is a very old node). I want now to go further and work on the implementation of the top die and to do so I first need to get the IO pins positions of the bottom one. This is were I am kind of stuck and would like your insight. Here is my issue : I read and stored the IO's names and positions using a TCL script, I divided the coordinates by 1000 to convert to micron, but when I tried to use the function I got the following error : " TypeError in method 'microns_to_dbu', argument 1 of type 'double' " So my questions now are :
I admit I converted the coordinates to double before dividing them, but I didn't thought that it would be a problem... Let me know if you need more details |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 16 replies
-
@lustefan97 |
Beta Was this translation helpful? Give feedback.
-
Can you show exactly the TCL you are executing that causes the type error? |
Beta Was this translation helpful? Give feedback.
-
@lustefan97 there is no reason to be parsing the DEF to get the pin locations. You want to be using the DB interface. You can get a list of the BTerm objects with
From there you can extract whatever properties you need. For example if you want the bounding box, you could use a script like this
The BBox points are reported in DBU so you can use You should be able to take all this information and create a script which you can then use with |
Beta Was this translation helpful? Give feedback.
@lustefan97 You're getting caught by Tcl syntax. Braces (
{}
) create literal expressions and don't allow dereferencing variables with$
.When you use
-location {$one $two}
it resolves to a list of the two strings$one $two
which are indeed not convertible to doubles.Change the line to this and it should work: