Timing unit inconsistencies
The documentation for the units in the https://github.com/SymbiFlow/prjxray/blob/cb5f2a30633bf0d3ac91a9b5802790ac1da86736/docs/dev_database/common/tile_type.rst#pips-section doesn't seem to be correct.
Not only does it mention us (nanoseconds) which must be a typo, it doesn't seem to be consistent with what's actually in the database.
Looking at a random PIP:
"INT_L.NL1END0->>NE2BEG0": {
"can_invert": "0",
"dst_to_src": {
"delay": [
"0.033",
"0.041",
"0.111",
"0.134"
],
"in_cap": "8.473",
"res": "1185.1186875"
},
"dst_wire": "NE2BEG0",
"is_directional": "1",
"is_pass_transistor": 0,
"is_pseudo": "0",
"src_to_dst": {
"delay": [
"0.033",
"0.041",
"0.111",
"0.134"
],
"in_cap": "8.473",
"res": "1185.1186875"
},
"src_wire": "NL1END0"
},
firstly the delays are apparently in nanoseconds, so the us is definitely a typo, but in_cap in µF and res in mΩ don't work either.
8.473µF * 1185mΩ = 10.04µS
which is a delay about 5 or 6 orders of magnitude too high.
The absolute values of the capacitance and resistance values don't matter, so long as their product gives a reasonable delay scaling. My awareness of likely ASIC numbers is limited, but something like switching to pF for capacitance and keeping mΩ gives a plausible delay product while staying fairly close to physical reality, I think.