Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mock-array: add sta-report-checks and openroad-report-checks targets #2654

Conversation

oharboe
Copy link
Collaborator

@oharboe oharboe commented Jan 3, 2025

Illustrates more detailed timing reports by using Verilog files instead of .lib files.

So far, I can only make the more detailed timing reports work with OpenSTA standalone as OpenROAD must have technology files loaded.

make DESIGN_CONFIG=designs/asap7/mock-array/config.mk sta-report-checks openroad-report-checks

With more detailed timing information in OpenSTA, we see that we have some additional slack, except for reg2out:

Path Group OpenSTA OpenROAD
in2reg 357.86 346.68
reg2out 19.38 54.49
reg2reg 21.43 5.05

Output:

/home/oyvind/OpenROAD-flow-scripts/tools/install/OpenROAD/bin/sta -no_init -exit designs/asap7/mock-array/sta-report-checks.tcl
OpenSTA 2.6.0 aa598a2f14 Copyright (c) 2024, Parallax Software, Inc.
License GPLv3: GNU GPL version 3 <http://gnu.org/licenses/gpl.html>

This is free software, and you are free to change and redistribute it
under certain conditions; type `show_copying' for details. 
This program comes with ABSOLUTELY NO WARRANTY; for details type `show_warranty'.
Warning: /home/oyvind/OpenROAD-flow-scripts/flow/platforms/asap7/lib/NLDM/asap7sc7p5t_SIMPLE_RVT_FF_nldm_211120.lib.gz line 13178, timing group from output port.
Warning: /home/oyvind/OpenROAD-flow-scripts/flow/platforms/asap7/lib/NLDM/asap7sc7p5t_SIMPLE_RVT_FF_nldm_211120.lib.gz line 13211, timing group from output port.
Warning: /home/oyvind/OpenROAD-flow-scripts/flow/platforms/asap7/lib/NLDM/asap7sc7p5t_SIMPLE_RVT_FF_nldm_211120.lib.gz line 13244, timing group from output port.
Warning: /home/oyvind/OpenROAD-flow-scripts/flow/platforms/asap7/lib/NLDM/asap7sc7p5t_SIMPLE_RVT_FF_nldm_211120.lib.gz line 13277, timing group from output port.
Warning: /home/oyvind/OpenROAD-flow-scripts/flow/platforms/asap7/lib/NLDM/asap7sc7p5t_SIMPLE_RVT_FF_nldm_211120.lib.gz line 13310, timing group from output port.
Warning: /home/oyvind/OpenROAD-flow-scripts/flow/platforms/asap7/lib/NLDM/asap7sc7p5t_SIMPLE_RVT_FF_nldm_211120.lib.gz line 13343, timing group from output port.
Warning: /home/oyvind/OpenROAD-flow-scripts/flow/platforms/asap7/lib/NLDM/asap7sc7p5t_SIMPLE_RVT_FF_nldm_211120.lib.gz line 13376, timing group from output port.
Warning: /home/oyvind/OpenROAD-flow-scripts/flow/platforms/asap7/lib/NLDM/asap7sc7p5t_SIMPLE_RVT_FF_nldm_211120.lib.gz line 14772, timing group from output port.
Warning: /home/oyvind/OpenROAD-flow-scripts/flow/platforms/asap7/lib/NLDM/asap7sc7p5t_SIMPLE_RVT_FF_nldm_211120.lib.gz line 14805, timing group from output port.
Warning: /home/oyvind/OpenROAD-flow-scripts/flow/platforms/asap7/lib/NLDM/asap7sc7p5t_SIMPLE_RVT_FF_nldm_211120.lib.gz line 14838, timing group from output port.
report_checks 
Startpoint: io_ins_right_2[46] (input port)
Endpoint: ces_2_0/REG_2[46]$_DFF_P_
          (rising edge-triggered flip-flop clocked by clock)
Path Group: in2reg
Path Type: max

  Delay    Time   Description
---------------------------------------------------------
   0.00    0.00 ^ input external delay
   0.00    0.00 ^ io_ins_right_2[46] (in)
  11.10   11.10 ^ input1193/Y (BUFx2_ASAP7_75t_R)
  17.73   28.83 ^ ces_2_0/input169/Y (BUFx2_ASAP7_75t_R)
   2.05   30.88 ^ ces_2_0/REG_2[46]$_DFF_P_/D (DFFHQNx2_ASAP7_75t_R)
          30.88   data arrival time

  80.00   80.00   max_delay
 318.65  398.65   clock network delay (propagated)
   0.00  398.65   clock reconvergence pessimism
  -9.91  388.74   library setup time
         388.74   data required time
---------------------------------------------------------
         388.74   data required time
         -30.88   data arrival time
---------------------------------------------------------
         357.86   slack (MET)


Startpoint: ces_3_0/io_outs_left_REG[0]$_DFF_P_/QN (internal pin)
Endpoint: io_outs_left_3[0] (output port)
Path Group: reg2out
Path Type: max

  Delay    Time   Description
---------------------------------------------------------
   0.00    0.00 v ces_3_0/io_outs_left_REG[0]$_DFF_P_/QN (DFFHQNx2_ASAP7_75t_R)
  12.34   12.34 ^ ces_3_0/_1090_/Y (INVx2_ASAP7_75t_R)
  19.40   31.74 ^ ces_3_0/_1288_/Y (BUFx2_ASAP7_75t_R)
  16.41   48.15 ^ ces_3_0/output330/Y (BUFx2_ASAP7_75t_R)
  12.39   60.53 ^ output2817/Y (BUFx2_ASAP7_75t_R)
   0.08   60.62 ^ io_outs_left_3[0] (out)
          60.62   data arrival time

  80.00   80.00   max_delay
   0.00   80.00   output external delay
          80.00   data required time
---------------------------------------------------------
          80.00   data required time
         -60.62   data arrival time
---------------------------------------------------------
          19.38   slack (MET)


Startpoint: ces_4_1/io_outs_left_REG[0]$_DFF_P_
            (rising edge-triggered flip-flop clocked by clock)
Endpoint: ces_4_5/REG_8$_DFF_P_
          (rising edge-triggered flip-flop clocked by clock)
Path Group: reg2reg
Path Type: max

  Delay    Time   Description
---------------------------------------------------------
   0.00    0.00   clock clock (rise edge)
 371.74  371.74   clock network delay (propagated)
   0.00  371.74 ^ ces_4_1/io_outs_left_REG[0]$_DFF_P_/CLK (DFFHQNx2_ASAP7_75t_R)
  42.83  414.57 v ces_4_1/io_outs_left_REG[0]$_DFF_P_/QN (DFFHQNx2_ASAP7_75t_R)
  12.34  426.92 ^ ces_4_1/_1090_/Y (INVx2_ASAP7_75t_R)
  18.51  445.43 ^ ces_4_1/output265/Y (BUFx2_ASAP7_75t_R)
  15.66  461.09 ^ ces_4_2/_1287_/Y (BUFx2_ASAP7_75t_R)
  16.39  477.48 ^ ces_4_2/output264/Y (BUFx2_ASAP7_75t_R)
  15.57  493.04 ^ ces_4_3/_1286_/Y (BUFx2_ASAP7_75t_R)
  15.98  509.02 ^ ces_4_3/output263/Y (BUFx2_ASAP7_75t_R)
  15.32  524.34 ^ ces_4_4/_1285_/Y (BUFx2_ASAP7_75t_R)
  15.45  539.79 ^ ces_4_4/output262/Y (BUFx2_ASAP7_75t_R)
  15.84  555.63 ^ ces_4_5/input257/Y (BUFx2_ASAP7_75t_R)
   1.50  557.14 ^ ces_4_5/REG_8$_DFF_P_/D (DFFHQNx2_ASAP7_75t_R)
         557.14   data arrival time

 250.00  250.00   clock clock (rise edge)
 329.82  579.82   clock network delay (propagated)
   6.45  586.27   clock reconvergence pessimism
         586.27 ^ ces_4_5/REG_8$_DFF_P_/CLK (DFFHQNx2_ASAP7_75t_R)
  -7.71  578.57   library setup time
         578.57   data required time
---------------------------------------------------------
         578.57   data required time
        -557.14   data arrival time
---------------------------------------------------------
          21.43   slack (MET)


(/home/oyvind/OpenROAD-flow-scripts/tools/install/OpenROAD/bin/openroad -exit -no_init -threads 16  -no_splash  designs/asap7/mock-array//openroad-report-checks.tcl 2>&1 | tee /home/oyvind/OpenROAD-flow-scripts/flow/logs/asap7/mock-array/base/run.log)
GUI_TIMING=1 reading timing, takes a little while for large designs...
read_spef ./results/asap7/mock-array/base/6_final.spef
Populating timing paths...OK
report_checks 
Startpoint: io_ins_right_2[46] (input port)
Endpoint: ces_2_0 (rising edge-triggered flip-flop clocked by clock)
Path Group: in2reg
Path Type: max

  Delay    Time   Description
---------------------------------------------------------
   0.00    0.00 ^ input external delay
   0.00    0.00 ^ io_ins_right_2[46] (in)
  11.11   11.11 ^ input1193/Y (BUFx2_ASAP7_75t_R)
   0.16   11.27 ^ ces_2_0/io_ins_right[46] (Element)
          11.27   data arrival time

  80.00   80.00   max_delay
 236.26  316.26   clock network delay (propagated)
   0.00  316.26   clock reconvergence pessimism
  41.69  357.95   library setup time
         357.95   data required time
---------------------------------------------------------
         357.95   data required time
         -11.27   data arrival time
---------------------------------------------------------
         346.68   slack (MET)


Startpoint: REG_49$_DFF_P_/QN (internal pin)
Endpoint: io_lsbs_49 (output port)
Path Group: reg2out
Path Type: max

  Delay    Time   Description
---------------------------------------------------------
   0.00    0.00 v REG_49$_DFF_P_/QN (DFFHQNx2_ASAP7_75t_R)
  11.18   11.18 ^ _110_/Y (INVx3_ASAP7_75t_R)
  14.31   25.49 ^ output2093/Y (BUFx2_ASAP7_75t_R)
   0.02   25.51 ^ io_lsbs_49 (out)
          25.51   data arrival time

  80.00   80.00   max_delay
   0.00   80.00   output external delay
          80.00   data required time
---------------------------------------------------------
          80.00   data required time
         -25.51   data arrival time
---------------------------------------------------------
          54.49   slack (MET)


Startpoint: ces_4_1 (rising edge-triggered flip-flop clocked by clock)
Endpoint: ces_4_5 (rising edge-triggered flip-flop clocked by clock)
Path Group: reg2reg
Path Type: max

  Delay    Time   Description
---------------------------------------------------------
   0.00    0.00   clock clock (rise edge)
 269.85  269.85   clock network delay (propagated)
   0.00  269.85 ^ ces_4_1/clock (Element)
 161.56  431.41 ^ ces_4_1/io_lsbOuts_7 (Element)
  39.17  470.58 ^ ces_4_2/io_lsbOuts_6 (Element)
  38.15  508.74 ^ ces_4_3/io_lsbOuts_5 (Element)
  32.94  541.68 ^ ces_4_4/io_lsbOuts_4 (Element)
   0.00  541.68 ^ ces_4_5/io_lsbIns_4 (Element)
         541.68   data arrival time

 250.00  250.00   clock clock (rise edge)
 242.44  492.44   clock network delay (propagated)
   6.45  498.89   clock reconvergence pessimism
         498.89 ^ ces_4_5/clock (Element)
  47.84  546.73   library setup time
         546.73   data required time
---------------------------------------------------------
         546.73   data required time
        -541.68   data arrival time
---------------------------------------------------------
           5.05   slack (MET)

@oharboe oharboe requested a review from maliberty January 3, 2025 20:45
@maliberty
Copy link
Member

So far, I can only make the more detailed timing reports work with OpenSTA standalone as OpenROAD must have technology files loaded.

Why not just load it? It isn't expensive.

@oharboe
Copy link
Collaborator Author

oharboe commented Jan 4, 2025

So far, I can only make the more detailed timing reports work with OpenSTA standalone as OpenROAD must have technology files loaded.

Why not just load it? It isn't expensive.

OpenROAD failed to load the .spef files. I have updated the PR.

make DESIGN_CONFIG=designs/asap7/mock-array/config.mk  sta-report-checks  orfs-report-checks

Slack varies...

Path Group OpenROAD OpenSTA ORFS
in2reg 222.73 357.90 347.08
reg2out 38.4 19.28 54.41
reg2reg 96.39 19.43 3.53

@oharboe
Copy link
Collaborator Author

oharboe commented Jan 6, 2025

Not currently on my radar, I think I'd want to rearticulate this PR as a generic capability for all ORFS designs.

@oharboe oharboe closed this Jan 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants