• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Logic Design
  3. Xcelium 24.03+: how to get a single $setuphold line in annotation...

Stats

  • Replies 0
  • Subscribers 62
  • Views 37
  • Members are here 0

Xcelium 24.03+: how to get a single $setuphold line in annotation summary (without separate $setup/$hold rows)?

TU202610195844
TU202610195844 1 day ago

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)?

  • Sign in to reply
  • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2026 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information