7761 - Why is the output of "des_set_operating_condition" is always -1C in TCL+?

7761 - Why is the output of "des_set_operating_condition" is always -1C in TCL+?

Below is a step-by-step explanation on why the default operating temperature in TCL+ defaults to -1C and observe its effect on timing analysis:

1. When you open the PAR-generated UDB file using des_read_udb and run des_report_operating_condition, the reported temperature is typically shown as -1C

% des_report_operating_condition
Operation: Industrial
Temperature: -1C
Speed grade: 9_High-Performance_1.0V

Notes
This -1C is only a placeholder indicating that the tool is using the default temperature defined in the PDC file or Device Constraint Editor, not an actual -1°C setting. The timing analysis tool will still use the temperature setting that you have set on your PDC file or in the Device Constraint Editor unless you change the temperature via "des_set_operating_condition" command.

2. When a user executes:
% des_set_operating_condition -temp 100

Notes
The console may indicate that the temperature is already set, and des_report_operating_condition will still show -1C afterwards.
This is because the tool continues to use the default value (e.g., 100C) defined elsewhere.

3. When a new temperature is explicitly set (e.g., -40C), the placeholder -1C is replaced:

% des_set_operating_condition -temp -40
Changing speed to 9_High-Performance_1.0V;   changing temperature to -40

% des_report_operating_condition
Temperature: -40C

4. Once the default is overridden, any new temperature setting will be reflected directly:

% des_set_operating_condition -temp 100
Changing speed to 9_High-Performance_1.0V;   changing temperature to 100

% des_report_operating_condition
Temperature: 100C

If you do timing analysis after setting the operating condition, you should be able to see the timing results difference
The timing tool will also mention that the operating condition you set is only used for the Timing Analysis result in the TCL console

Here's an example:

1. Report the operating condition:

% des_report_operating_condition
Operation: Industrial
Temperature: -1C
Speed grade: 9_High-Performance_1.0V

Quote
Note: the default temperature I set is 50C

2. Do timing analysis with -1C output from #1:

% sta_report_timing
Worst derating  enable is    0
Synchronizing changes
Initializing timer
Starting design annotation....
INFO: user temperature only will be used in analysis
INFO: user temperature only will be used in analysis

Starting full timing analysis...

++++ Path 1 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Path Begin       : led_pad[5].bb_inst_IOL/DOUT  (SIOLOGIC_CORE_IOL_R24A)
Path End         : led[5]  (certuspro_nx_kit)
Source Clock     : clk_12mhz (R)
Destination Clock: clk_12mhz (R)
Logic Level      : 2
Delay Ratio      : 1.8% (route), 98.2% (logic)
Clock Skew       : -3.921 ns
Setup Constraint : 83.333 ns
Common Path Skew : 0.000 ns
Path Slack       : 0.975 ns  (Passed)

3. Now, change the temperature to -40C:

% des_set_operating_condition -temp -40
Changing speed to 9_High-Performance_1.0V;   changing temperature to -40

4. Run timing analysis again, and you can see the difference in results:

% sta_report_timing

++++ Path 1 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Path Begin       : led_pad[5].bb_inst_IOL/DOUT  (SIOLOGIC_CORE_IOL_R24A)
Path End         : led[5]  (certuspro_nx_kit)
Source Clock     : clk_12mhz (R)
Destination Clock: clk_12mhz (R)
Logic Level      : 2
Delay Ratio      : 2.0% (route), 98.0% (logic)
Clock Skew       : -4.021 ns
Setup Constraint : 83.333 ns
Common Path Skew : 0.000 ns
Path Slack       : 0.798 ns  (Passed)

5. Change the temperature back to the default 50C and you can see that the result is similar to Step #2 which is "-1C"

% des_set_operating_condition -temp 50
Changing speed to 9_High-Performance_1.0V;   changing temperature to 50
0
% sta_report_timing

++++ Path 1 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Path Begin       : led_pad[5].bb_inst_IOL/DOUT  (SIOLOGIC_CORE_IOL_R24A)
Path End         : led[5]  (certuspro_nx_kit)
Source Clock     : clk_12mhz (R)
Destination Clock: clk_12mhz (R)
Logic Level      : 2
Delay Ratio      : 1.8% (route), 98.2% (logic)
Clock Skew       : -3.921 ns
Setup Constraint : 83.333 ns
Common Path Skew : 0.000 ns
Path Slack       : 0.975 ns  (Passed)


Info
Example Comparison:
  1. Default (50C via PDC, but shown as -1C):
    1. Path Slack: 0.975 ns
  2. After setting to -40C:
    1. Path Slack: 0.798 ns
  3. Reverting to 50C:
    1. Path Slack: 0.975 ns

This confirms that the tool correctly applies the user-defined temperature during timing analysis, even if -1C is displayed in the operating condition report.