Net w drives 1000 BUF_X2/A pin. We set zero load for this net, ignoring pin caps. It makes sense,
it is some kind of ideal network, we are going to buffer the net later.
Path reports:
Cap Delay Time Description
----------------------------------------------------------------
0.00 0.00 ^ input external delay
1.78 0.00 0.00 ^ in (in)
in (net)
0.00 0.00 ^ buf/A (BUF_X2)
94.89 0.13 0.13 ^ buf/Z (BUF_X2)
w (net)
0.00 0.13 ^ buf000/A (BUF_X2)
0.00 0.03 0.15 ^ buf000/Z (BUF_X2)
out[0] (net)
0.00 0.15 ^ out[0] (out)
0.15 data arrival time
----------------------------------------------------------------
(Path is unconstrained)
Cap Delay Time Description
----------------------------------------------------------------
0.00 0.00 v input external delay
1.59 0.00 0.00 v in (in)
in (net)
0.00 0.00 v buf/A (BUF_X2)
-94.89 -0.08 -0.08 v buf/Z (BUF_X2)
w (net)
0.00 -0.08 v buf000/A (BUF_X2)
0.00 0.02 -0.07 v buf000/Z (BUF_X2)
out[0] (net)
0.00 -0.07 v out[0] (out)
-0.07 data arrival time
----------------------------------------------------------------
(Path is unconstrained)
The rise cap of BUF_X2/A pin is 1.779209 pf, the fall cap is 1.589398 pf. So the total rise pin cap
is 1779.209 pf, and the total fall pin cap is 1589.398 pf.
The problem is in function Sdc::setNetWireCap. This function (with subtract_pin_cap == true and cap == 0.0)
sets the value wire_cap - (total_rise_pin_cap + total_fall_pin_cap) / 2 = -1.68430417e-12
(that is -1684.3035 pf) to net_wire_capmaps. The reported caps are -1684.3035 + 1779.209 = 94.9055 for rise,
and -1684.3035 + 1589.398 = -94.9055 for fall. It approximately corresponds to what we see, and both values
are far from 0.
It looks the separate rise/fall values should be stored in net_wire_capmaps.
Net w drives 1000 BUF_X2/A pin. We set zero load for this net, ignoring pin caps. It makes sense, it is some kind of ideal network, we are going to buffer the net later.
Path reports:
The rise cap of BUF_X2/A pin is 1.779209 pf, the fall cap is 1.589398 pf. So the total rise pin cap is 1779.209 pf, and the total fall pin cap is 1589.398 pf.
The problem is in function Sdc::setNetWireCap. This function (with subtract_pin_cap == true and cap == 0.0) sets the value wire_cap - (total_rise_pin_cap + total_fall_pin_cap) / 2 = -1.68430417e-12 (that is -1684.3035 pf) to net_wire_capmaps. The reported caps are -1684.3035 + 1779.209 = 94.9055 for rise, and -1684.3035 + 1589.398 = -94.9055 for fall. It approximately corresponds to what we see, and both values are far from 0.
It looks the separate rise/fall values should be stored in net_wire_capmaps.