Hi, can anyone provide information on how to find setup and hold times for standard cells in the PDK files, specifically for d flip flops?
m
Mitch Bailey
04/23/2024, 10:52 PM
@Dawood Rauf Are the files in this directory what you’re looking for?
Copy code
$PDK_ROOT/$PDK/libs.ref/sky130_fd_sc_hd/lib/
m
Michael Strothjohann
04/25/2024, 1:49 PM
@Dawood Rauf In standard cells setup and hold time (and other quantities) depend on the transition times. Example: sky130_fd_sc_hd_tt_025C_1v80.lib : "sky130_fd_sc_hd__dfbbn_1" ... timing() ... look for hold_rising/hold_falling and setup_rising/setup_falling ...you will find lookuptables. If this is new for you, read https://web.eecs.utk.edu/~dbouldin/protected/utah-ch07.pdf (especially page 224 for an "scalar", a bit simpified example)
d
Dawood Rauf
04/26/2024, 9:47 PM
Thank you for your response @Mitch Bailey and @Michael Strothjohann. I have found the files that I was looking for in the sky130_fd_sc_hd/lib. The flip flop that I was working on is dfxtp_1, but I couldn't find scalar in the cell. I have attached the text file for the sky130_fd_sc_hd__dfxtp_1 and found only hold_rising and setup_rising.
@Dawood Rauf That's why I wrote "simplified". As written, hold and setup time depend on the transition times. (in your case from the transition time of Q and clk). Example: One of the lookup tables I wrote about can be found on lines 129-131. This describes the constraints for setup_rising/fall_constraint. Example: If Q and clk have edges of 500ps each, you read 199.7539 ps. Corresponding tables are also available for hold_rising (lines 137-156)