Anton Blanchard
03/24/2022, 7:30 AMAnton Blanchard
03/24/2022, 11:01 AMTim Edwards
03/24/2022, 1:00 PMTim Edwards
03/24/2022, 1:01 PMMatt Venn
03/24/2022, 4:15 PMMatt Venn
03/24/2022, 4:15 PMMatt Venn
03/24/2022, 4:15 PMAnton Blanchard
03/24/2022, 6:08 PMThe resistance and capacitance values are per length of wire, not per square or per square micron. The units for `-resistance` and `-capacitance` are from the first Liberty file read, resistance_unit/distance_unit (typically kohms/micron) and Liberty capacitance_unit/distance_unit (typically pf/micron or ff/micron). If distance units are not specified in the Liberty file, microns are used.
My understanding is the set_layer_rc
estimates take precedence over the TLEF data, and the OpenRCX tables aren't used at all for timing repair.
As for where these values came from, I'm not sure. It does look like jjcherry has a script that generates the capacitance values from looking at taped out designs (guessing because I see this reference in the data: # correlateRC.py gcd,ibex,aes,jpeg,chameleon,riscv32i,chameleon_hier
)Anton Blanchard
03/24/2022, 6:10 PMdonn
03/24/2022, 6:37 PMMatt Liberty
03/24/2022, 6:40 PMMatt Liberty
03/24/2022, 6:43 PMMatt Liberty
03/24/2022, 6:44 PMMatt Liberty
03/24/2022, 6:44 PMAnton Blanchard
03/24/2022, 6:55 PMMatt Liberty
03/24/2022, 6:56 PMMatt Liberty
03/24/2022, 6:56 PMAnton Blanchard
03/24/2022, 6:57 PMdonn
03/24/2022, 6:58 PMdonn
03/24/2022, 6:58 PMAnton Blanchard
03/24/2022, 6:59 PMTim Edwards
03/24/2022, 7:44 PMvia3
is wrong; it has 0.3766E-3
when it should be equal to the value for via2
, or 3.368786E-3
. via4
value should be 0.376635E-3
(what via3
is now), and the value for via4
is an old value for a redistribution layer contact which does not actually exist in this process.
The resistance values are correct (assuming that the chosen name "LAYERS_RC" is misleading because it looks like the values are given in order C, then R).
The capacitance values, I have no idea where they come from. For local interconnect, for example, the area cap is pretty straightforward at 6.29aF/um for a minimum wire width of 0.17um. For fringe cap, it is not clear to me what conditions that should be specified at (single-sided? Total? Assuming nearby wires at minimum distance? Track distance?). But the liberty file for the standard cell library says that load capacitance is given in pF, so the value in LAYERS_RC of 1.5e-4 is 150aF/micron, which seems quite high to me. Certainly much higher than anything I've seen coming out of Calibre extractions. So where does that number come from?Tim Edwards
03/24/2022, 7:48 PMMatt Liberty
03/24/2022, 7:51 PMTim Edwards
03/24/2022, 7:55 PMMatt Liberty
03/24/2022, 7:58 PMMatt Liberty
03/24/2022, 8:01 PMMatt Liberty
03/24/2022, 8:04 PMTim Edwards
03/24/2022, 8:05 PMTim Edwards
03/24/2022, 8:08 PMopenlane
subdirectory was given to me by the Openlane developers (until my attempts to generate the openRCX calibration tables myself), so it does not necessarily match anything else in the repository unless I've made some effort to cross-check it.Matt Liberty
03/24/2022, 8:11 PMTim Edwards
03/24/2022, 8:12 PM