Xilinx / RapidWright

Build Customized FPGA Implementations for Vivado
http://www.rapidwright.io
Other
274 stars 105 forks source link

[DeviceResourcesWriter] Output resource timings for US+ #1001

Open eddieh-xlnx opened 2 weeks ago

eddieh-xlnx commented 2 weeks ago

Max delay timings for the following UltraScale+ resources, as described initially by Maidee et al. -- An Open-source Lightweight Timing Model for RapidWright and subsequently implemented in RapidWright:

  1. PIPs (referencing a delay in seconds at Device.pipTimings.internalDelay.slow.slow.max.max, capturing the "base" k0+k1*L(TG) component of paper's Equation 1)
  2. Nodes (referencing the additional delay in seconds made up of Device.nodeTimings.capacitance Device.nodeTimings.resistance, capturing the "discontinuity" k2*d(TG)* component of paper's Equation 1; see footnote A)
  3. SitePIP delays (SitePIP.delay.slow.slow.max.max in seconds)
  4. Cell delays (CellBelMapping.pinsDelay.cornerModel.slow.slow.max.max in seconds)

Footnote A -- due to there not being a delay field in NodeTiming, the discontinuity delay of specific nodes (i.e. those that cross BRAM/URAM/DSP/IO/etc. columns) is captured using the product of the NodeTiming.capacitance and NodeTiming.resistance fields (T=RC) for a value in second. In this implementation, C is fixed to 1e-12 meaning that R represents the delay in picoseconds.

Since bidirectional PIPs (e.g. INT_X0Y0/INT.INT_NODE_IMUX_5_INT_OUT0<<->>BYPASS_E8) can only reference one delay value, only the forward delay (INT_NODE_*->>BYPASS_E8) is captured.