Apologies if it's already been discussed here, but...
# openlane
t
Apologies if it's already been discussed here, but SDF timing arcs of each FF seem to be unconditional (having the same value fo bc, nc, wc conditions), which looks odd to me. Random example: (CELL (CELLTYPE "sky130_fd_sc_hd__dfrtp_1") (INSTANCE 29240) (DELAY (ABSOLUTE (IOPATH CLK Q (0.3900.3900.390) (0.4060.4060.406)) (IOPATH RESET_B Q () (0.0000.0000.000)) ) ) (TIMINGCHECK (REMOVAL (posedge RESET_B) (posedge CLK) (0.3370.3370.337)) (RECOVERY (posedge RESET_B) (posedge CLK) (-0.211 0.211-0.211)) (HOLD (posedge D) (posedge CLK) (-0.058 0.058-0.058)) (HOLD (negedge D) (posedge CLK) (-0.074 0.074-0.074)) (SETUP (posedge D) (posedge CLK) (0.0860.0860.086)) (SETUP (negedge D) (posedge CLK) (0.1440.1440.144)) ) ) Any idea why ?
m
most likely those values come straight from the .lib. Do they differ there?
t
Which lib file should I check ? Has this been reported so far ? I don't want to submit an issue of a problem, which has already been reported.
m
@Tim Edwards might know
t
@Matt Venn: I have no idea how the SDF is generated, so I don't know how those numbers are derived. More likely @mshalan would know the answer.
m
thanks
m
you would look at the liberty containing sky130_fd_sc_hd__dfrtp_1. Are you running with multiple corners or a single corner?
t
@Matt Liberty Thanks for your reply. I'm still having a hard time following your advice. I was searching below https://github.com/google/skywater-pdk-libs-sky130_fd_sc_hd and on my local PDK installation, but couldn't find the explicit sky130_fd_sc_hd__dfrtp_1 file which contains the relevant information and which is the source for the SDF file generation. A file name ending would greatly simplify the search šŸ˜‰ The "multiple corners or single corner" question is confusing to me. This is the default Caravel\Openlane design flow, where the SDF is generated by default and which is then used for multiple corners or single corner STA checks. I didn't modify the flow in this regard. I checked and it looks as if this issue has been around ever since. Cheers !
m
Timing libraries end in .lib. I'd have to dig through how OL is setup to really understand this. If it reads two libraries and they have different values then I would expect to see that. If it reads one or both libraries have the same value then this result is correct
t
This result cannot be correct. Occasionally timing arcs can be the same, especially for lower values. But having always all bc, nc, wc values with the same value is clearly a bug. I think I'll submit an OL isssue tomorrow.
Okay, so we have one SDF per process corner. Now your comment is getting more clear to me, Matt. The sdf file in the sdf/ directory is the nominal one, as min and max get overwritten, right? Then I guess it is okay to have the same value for each bc, nc, wc timing arc. But for all non-FF related timing arcs (non-FF cells, interconnects), the values differ. What do they stand for ? It is stated, that ā€œThe values only differ if there are conditional timing arcs or slew mergingā€. But I’m having trouble understanding it. Any help on this one would be awesome. https://github.com/The-OpenROAD-Project/OpenLane/issues/1419