OpenROAD icon indicating copy to clipboard operation
OpenROAD copied to clipboard

Allow interactive updates to group_path

Open oharboe opened this issue 2 months ago • 5 comments

Description

To see only paths running through the "foo" module:

  1. Run group_path -name foo -through *foo*
  2. Click "Update" in Endpoint Slack histogram
  3. Select from dropdown

No paths are shown in Endpoint Slack histogram(blank), even if report_checks -through *foo* returns paths

The use-case is to avoid re-running the flow after adding the path_group to the .sdc just to add a path group. This sort of exploration is exactly what I'd like to do in seconds instead of hours to figure out where to look.

Suggested Solution

Allow adding path groups interatively so as to use path groups in dropdown from Endpoint Slack histogram

Additional Context

No response

oharboe avatar Oct 24 '25 05:10 oharboe

I ran ng45/gcd with

export SYNTH_HIERARCHICAL = 1
export SYNTH_MINIMUM_KEEP_SIZE = 1

I ran group_path -name foo -through *ctrl*, clicked Update and see paths

Image

Please give a reproducible problem.

maliberty avatar Oct 24 '25 09:10 maliberty

To reproduce:

$ bazelisk run test/orfs/mock-array:Element_4x4_base_synth /tmp/x open_synth
[deleted]
read_db -hier ./test/orfs/mock-array/results/asap7/Element/4x4_base/1_synth.odb
[WARNING ORD-0012] Hierarchical flow (-hier) is currently in development and may cause multiple issues. Do not use in production environments.
[deleted]
GUI_TIMING=1 reading timing, takes a little while for large designs...
% report_checks 
[deleted]

Startpoint: io_outs_down_mult/mod.a_registered[1]$_DFF_P_
            (rising edge-triggered flip-flop clocked by clock)
Endpoint: io_outs_down_mult/mod.pp_row3_1$_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)
   0.00    0.00   clock network delay (ideal)
   0.00    0.00 ^ io_outs_down_mult/mod.a_registered[1]$_DFF_P_/CLK (DFFHQNx1_ASAP7_75t_R)
  36.34   36.34 v io_outs_down_mult/mod.a_registered[1]$_DFF_P_/QN (DFFHQNx1_ASAP7_75t_R)
  18.36   54.71 ^ io_outs_down_mult/_30_/Y (INVx3_ASAP7_75t_R)
   7.26   61.97 v io_outs_down_mult/mod.U$598/Y (INVx1_ASAP7_75t_R)
  29.64   91.61 v io_outs_down_mult/mod.U$601/Y (AO33x2_ASAP7_75t_R)
  21.65  113.26 v io_outs_down_mult/mod.U$605/Y (AO22x1_ASAP7_75t_R)
  20.68  133.95 v io_outs_down_mult/mod.U$606/Y (XOR2x1_ASAP7_75t_R)
   0.00  133.95 v io_outs_down_mult/mod.pp_row3_1$_DFF_P_/D (DFFHQNx1_ASAP7_75t_R)
         133.95   data arrival time

 250.00  250.00   clock clock (rise edge)
   0.00  250.00   clock network delay (ideal)
   0.00  250.00   clock reconvergence pessimism
         250.00 ^ io_outs_down_mult/mod.pp_row3_1$_DFF_P_/CLK (DFFHQNx1_ASAP7_75t_R)
 -11.08  238.92   library setup time
         238.92   data required time
---------------------------------------------------------
         238.92   data required time
        -133.95   data arrival time
---------------------------------------------------------
         104.98   slack (MET)


% group_path -name blah -from  {io_outs_down_mult/mod.a_registered[1]$_DFF_P_} -to {io_outs_down_mult/mod.pp_row3_1$_DFF_P_}
% report_checks -from  {io_outs_down_mult/mod.a_registered[1]$_DFF_P_} -to {io_outs_down_mult/mod.pp_row3_1$_DFF_P_}
Startpoint: io_outs_down_mult/mod.a_registered[1]$_DFF_P_
            (rising edge-triggered flip-flop clocked by clock)
Endpoint: io_outs_down_mult/mod.pp_row3_1$_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)
   0.00    0.00   clock network delay (ideal)
   0.00    0.00 ^ io_outs_down_mult/mod.a_registered[1]$_DFF_P_/CLK (DFFHQNx1_ASAP7_75t_R)
  36.34   36.34 v io_outs_down_mult/mod.a_registered[1]$_DFF_P_/QN (DFFHQNx1_ASAP7_75t_R)
  18.36   54.71 ^ io_outs_down_mult/_30_/Y (INVx3_ASAP7_75t_R)
   7.26   61.97 v io_outs_down_mult/mod.U$598/Y (INVx1_ASAP7_75t_R)
  29.64   91.61 v io_outs_down_mult/mod.U$601/Y (AO33x2_ASAP7_75t_R)
  21.65  113.26 v io_outs_down_mult/mod.U$605/Y (AO22x1_ASAP7_75t_R)
  20.68  133.95 v io_outs_down_mult/mod.U$606/Y (XOR2x1_ASAP7_75t_R)
   0.00  133.95 v io_outs_down_mult/mod.pp_row3_1$_DFF_P_/D (DFFHQNx1_ASAP7_75t_R)
         133.95   data arrival time

 250.00  250.00   clock clock (rise edge)
   0.00  250.00   clock network delay (ideal)
   0.00  250.00   clock reconvergence pessimism
         250.00 ^ io_outs_down_mult/mod.pp_row3_1$_DFF_P_/CLK (DFFHQNx1_ASAP7_75t_R)
 -11.08  238.92   library setup time
         238.92   data required time
---------------------------------------------------------
         238.92   data required time
        -133.95   data arrival time
---------------------------------------------------------
         104.98   slack (MET)


% report_checks -group_path blah
[ERROR STA-0574] -group_path_count 'blah' is not a positive integer.
STA-0574

oharboe avatar Oct 24 '25 10:10 oharboe

I think you want -path_group not -group_path which matches to -group_path_count

maliberty avatar Oct 25 '25 01:10 maliberty

Still

openroad> report_checks -path_group blah
No paths found.

I don't see anything OR specific. Can you make an sta case and file it upstream?

maliberty avatar Oct 25 '25 01:10 maliberty

I think you want -path_group not -group_path which matches to -group_path_count

Ah, the convenience of not spelling out options out bit me...

oharboe avatar Oct 25 '25 07:10 oharboe