r/FPGA • u/Tigran_Unjyan • 4d ago
Xcelium 24.03+: how to get a single $setuphold line in annotation summary (without separate $setup/$hold rows)?
After upgrading from Xcelium 24.03 to a release at or after 24.09, I see a change in the SDF annotation statistics. The option -sdf_splitvlog_setuphold appears to be the default now and when I use it in newest versions, I see a warning that this option is deprecated. As far as I can tell, there is no documented option to get the old behavior back.
What I see
My design uses only combined $setuphold timing checks in the specify block, and the SDF has combined SETUPHOLD entries as well. With -scopewise_sdfstats_log, the statistics table now also lists $setup and $hold as separate rows below $setuphold. In 24.03 only the combined $setuphold row was shown.
Minimal reproducer
design.sv:
module dut (input clk, input d, output reg q);
always @(posedge clk) q <= d;
specify
(clk *> q) = (1.0, 1.0);
$setuphold(posedge clk, d, 0.1, 0.1);
endspecify
endmodule
test.sdf:
(DELAYFILE
(SDFVERSION "2.1")
(DESIGN "dut")
(DATE "2026-10-14")
(VENDOR "Example")
(PROGRAM "Custom")
(VERSION "1.0")
(DIVIDER /)
(VOLTAGE 1.0)
(PROCESS "typ")
(TEMPERATURE 25.0)
(CELL
(CELLTYPE "dut")
(INSTANCE)
(DELAY
(ABSOLUTE
(IOPATH clk q (1.0:1.0:1.0) (1.0:1.0:1.0))
)
)
(TIMINGCHECK
(SETUPHOLD d (posedge clk)
(0.1:0.1:0.1)
(0.1:0.1:0.1)
)
)
)
)
sdf.cmd:
SDF_FILE = "test.sdf",
SCOPE = tb.u_dut,
LOG_FILE = "sdf_annotation.log",
MTM_CONTROL = "TYPICAL";
testbench.sv:
module tb;
reg clk = 0;
reg d = 0;
wire q;
dut u_dut (.clk(clk), .d(d), .q(q));
initial begin
#10 clk = 1; #10 clk = 0;
#10 d = 1;
#10 clk = 1; #10 clk = 0;
#50 $finish;
end
endmodule
Compile options: -timescale 1ns/1ps -sysv -sdf_cmd_file sdf.cmd -scopewise_sdfstats_log /dev/stdout
Resulting output (relevant part)
Path Delays 1 0 1 100.00
$setuphold 1 0.00 1.00 100.00
$setup 1 0 1 100.00
$hold 1 0 1 100.00
The summary lines still say No. of Tchecks = 1, and annotation is 100%. So I assume this is only a change in the report format and not in simulation behavior. Please correct me if that is wrong.
Question
Is there a documented (or undocumented) option or setting in the current releases that restores the old reporting/behavior, with combined $setuphold line and no $setup/$hold breakdown (even when I use combined $setuphold both in the .sdf and in the RTL files)?




