How do I find a list of properties for a particula...
# openroad
m
How do I find a list of properties for a particular object that can be accessed with get_property? For example, if I have a pin, what properties are there for a pin? Location?
It seems there is very little official description of the TCL API to the database. I'm wondering if I'm not looking in the right place... Any pointers?
j
Hi Matthew, not sure about other commands but this doc should have a bunch of properties documented https://github.com/The-OpenROAD-Project/OpenSTA/blob/master/doc/OpenSTA.pdf
m
@Jack Luar thanks. That seems to mostly just have the STA commands and no properties of the objects.
@Matt Liberty Do you have any suggestions to find this besides digging through the source and looking a the TCL registrations?
Some other tools have a command "list_properties" or similar, but OpenROAD doesn't seem to.
m
get_property is a timing command. If you want general database access you should look at https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/src/odb/include/odb/db.h which is the c++ api that is SWIG'ed into TCL
m
ahhhh
m
The properties available by get_property are described in the STA manual
m
Conceptually, separating the STA data and DB is hard to figure out.
And this is only available in odbtcl, not openroad?
m
Anything timing is sta, anything physical is db. Sta will also show the netlist connectivity but it takes it from db so you can access it either way. If you want to follow the netlist to the physical data it is better to start from db and if you want to go towards timing you should start from its apis
No its is in OR
ord::get_db in TCL
or ord::get_db_block / ord::get_db_tech
That gets you the root you can start calling methods on
m
Cool, thank you.
m
np
What are you up to? 😉
m
Trying to do some analysis of routing and clocks, but mostly want to interface the data in another stand-alone tool.
For example, get clock sink locations
m
You should be able to do that from the db API
m
yeah. I know how to do it in other (commercial) tools, but not OpenROAD (yet)
@Matt Liberty Is there a way to get the STA info from the DB? I see "staVertexId staSetVertexId" in the db items.
(on the ITerms)
m
Certainly in c++ but I'm not sure if we have a corresponding tcl api. Let me check. The fallback would be to get the name and look it up that way
I see sta::sta_to_db_inst though it is commented as "for testing"
also sta_to_db_net
I don't see a reverse set though
m
It's interesting that functions can by called on the objects or passed as parameters to the objects. Is there any difference to be aware of?
[$iterm getBBox]
vs
[odb::dbITerm_getBBox $iterm]
@Matt Liberty Are pin capacitances part of the db model or the sta model? I'm assuming the sta model. I see an "SDC lib_pin" but I am assuming this is just a set_load capacitance. Is there a way to query a .lib model capacitance?
m
sta
certainly from c++ - not sure about tcl
I think you can use get_lib_pins to get the pin and then get_property to get the capacitance