SDF stands for Standard Delay Format.
What is the purpose of an SDF file?
The SDF file specifies the delay of all the cells and interconnects in the design in the Standard Delay Format. Specifically, it includes the delay values for all the timing arcs of a given cell in the design.
The SDF file is generated from/after Logical Synthesis
The SDF matches a netlist → Different netlists will generate different SDFs. Note from that, in the example below, the SDF files references a specific instance of a library cell.
(DELAYFILE
(SDFVERSION "OVI 3.0")
(DESIGN "test_design")
(DATE "Day Mon Date Time Time_Zone Year")
(VENDOR "Cadence, Inc.")
(PROGRAM "Genus Synthesis Solution")
(VERSION "7.1")
(DIVIDER .)
(VOLTAGE ::1.08)
(PROCESS "::1.0")
(TEMPERATURE ::125.0)
(TIMESCALE 1ps)
(CELL
(CELLTYPE "ADDFX1HS")
(INSTANCE g44)
(DELAY
(ABSOLUTE
(PORT A (::0.0))
(PORT B (::0.0))
(PORT CI (::0.0))
(IOPATH (posedge B) S (::306) (::291))
(IOPATH (negedge B) S (::306) (::291))
(COND B == 1'b0 && CI == 1'b0 (IOPATH (posedge A) S (::139) ()))
(COND B == 1'b0 && CI == 1'b0 (IOPATH (negedge A) S () (::224)))
(IOPATH (posedge CI) S (::312) (::322))
(IOPATH (negedge CI) S (::296) (::306))
(COND A == 1'b0 && CI == 1'b1 (IOPATH (posedge B) S () (::291)))
(COND A == 1'b0 && CI == 1'b1 (IOPATH (negedge B) S (::297) ()))
(COND A == 1'b1 && CI == 1'b0 (IOPATH (posedge B) S () (::268)))
(COND A == 1'b1 && CI == 1'b0 (IOPATH (negedge B) S (::306) ()))
(COND B == 1'b1 && CI == 1'b1 (IOPATH (posedge A) S (::138) ()))
(COND B == 1'b1 && CI == 1'b1 (IOPATH (negedge A) S () (::231)))
)
)
)
)
Python
Example of an SDF file
The file below specify the path to the SDF file and its scope.
SDF_FILE = "path-to-sdf-file-here",
SCOPE = tb_top.DUT,
LOG_FILE = "sdf.tb_top.log",
SCALE_FACTORS = "1.0:1.0:1.0",
SCALE_TYPE = "FROM_MAXIMUM",
MTM_CONTROL = "MAXIMUM";
Python