Skip to main content

STA report slack visualizer

Project description

STAview

A STA (Static Timing Analysis) report file viewer.

This script takes in a STA file and renders it in an interactive graphical format within an ASCII terminal. The data is rendered as a "slack histogram", where timing paths are binned according to timing margin relative to the clock constraint. The histogram is zoomable.

Each bin of the histogram is selectable to reveal a list of paths in the bin; each path can be selected to pull up further detail about the path by pressing "enter" on the selected path (navigation between windows is accomplished via the "tab" and "shift-tab" keys).

Finally, the paths to be analyzed may be filtered by either typing a string into the "filter" box, or a Python regex in the format of r"regex", where regex is any valid Python regex string. A - in front of the filter expression causes the filter to exclude paths instead of designating which ones to include.

The STA file is specified with the --report argument. If --output is specified, the STA file is saved as a redacted JSON which removes library-specific details from the timing report. If the file format specified to the tool ends in .json, it is assumed to be a previously saved JSON and is directly loaded into the tool. JSON loading is significantly faster than STA parsing, and thus can save time when navigating extremely large timing reports.

A timing report suitable for analysis can be generated from design compiler using the following command:

report_timing -delay_type max -max_paths 10000000 -nworst 1 -path_type full_clock -sort_by group > timing.rpt

Below is a static example of the tool output.

max=264 selected=29(0.0400ns)                                                                                                          ──┐
             .                                                                                                                           │
             .                                                                                                                           │
             .                                                                                                                           │
       .   . .                                                                                                                           │
       .   .... .  ..                                                                                                                    │
     . .  ...........                                                                                                                    │
     ................                                                                                                                    │
     ................                                                                                                                    │
    .................      .                                                                                                             │
   .................. ..   .                                                                                                             │
   .................. .. ...                                                                                                             │
   .................. .. ... .                                                                                                           │
   .................. .. ..... .                        .                                                                                │
   ........................... .               ..       .                                                                                │
  ...............................             ...  .  . .. .                                                                             │
 ................................          .  .... .. . .. .                                                                             │
 .................................         .  ............ .                                                                             │
 ..................................  .     .. ............... ..                                                                         │
 .................................. ..     .. ............... ...                                                                        │
 .................................. ..  . .......................  .                                                                     │
 .................................. ............................. ..                                                                     │
 ................................................................ ...                                                                    │
 .....................................................................                                                                   │
 .....................................................................                                                                   │
 .....................................................................                                                                   │
 ..................................................................... .               .                                                 │
 ........................................................................              .                                                 │
 .........................................................................            ..                                                 │
 ......................................................................... .  .     .... .                                               │
 ..............................................................................  .. ........                                             │
 ............................................................................... .. ......... ..                   ..                    │
 ...............................................................................#...............  ... .        . ....                    │
 ...............................................................................#................ .........  ........   .                │
................................................................................#.............................................  .        │
-0.001          0.007           0.016           0.024           0.032           0.040           0.048           0.056           0.064    │
│                                                                                                                                        │
│   u_dmem/gen_par_scr_0__u_prim_prince/data_state_middle_q_reg* -> u_otbn_core/u_otbn_alu_bignum/mod_intg_q_reg* (0.04)                 │
│   u_otbn_core/u_otbn_instruction_fetch/u_rf_predec_bignum_flop/gen_ffrs_61__gen_negrs_u_ffr -> u_otbn_core/u_otbn_rf_bignum/gen_rf_b   │
│   u_otbn_core/u_otbn_instruction_fetch/u_insn_fetch_resp_data_intg_flop/q_o_reg* -> u_otbn_core/u_otbn_rf_bignum/gen_rf_bignum_ff_u_   │
│   u_otbn_core/u_otbn_instruction_fetch/u_rf_predec_bignum_flop/gen_ffrs_61__gen_negrs_u_ffr -> u_otbn_core/u_otbn_rf_bignum/gen_rf_b   │
│   u_otbn_core/u_otbn_instruction_fetch/u_insn_fetch_resp_data_intg_flop/q_o_reg* -> u_otbn_core/u_otbn_rf_bignum/gen_rf_bignum_ff_u_   │
│   u_otbn_core/u_otbn_instruction_fetch/u_insn_fetch_resp_data_intg_flop/q_o_reg* -> u_otbn_core/u_otbn_rf_bignum/gen_rf_bignum_ff_u_   │
│   u_otbn_core/u_otbn_instruction_fetch/u_insn_fetch_resp_data_intg_flop/q_o_reg* -> u_otbn_core/u_otbn_rf_bignum/gen_rf_bignum_ff_u_   │
│   u_otbn_core/u_otbn_instruction_fetch/u_rf_predec_bignum_flop/gen_ffrs_67__gen_negrs_u_ffr -> u_otbn_core/u_otbn_rf_bignum/gen_rf_b   │
│   u_otbn_core/u_otbn_instruction_fetch/u_insn_fetch_resp_data_intg_flop/q_o_reg* -> u_otbn_core/u_otbn_rf_bignum/gen_rf_bignum_ff_u_   │
│   u_otbn_core/u_otbn_instruction_fetch/u_rf_predec_bignum_flop/gen_ffrs_93__gen_negrs_u_ffr -> u_otbn_core/u_otbn_rf_bignum/gen_rf_b   │
│   u_otbn_core/u_otbn_instruction_fetch/u_rf_predec_bignum_flop/gen_ffrs_52__gen_negrs_u_ffr -> u_otbn_core/u_otbn_rf_bignum/gen_rf_b   │
│   u_otbn_core/u_otbn_instruction_fetch/u_rf_predec_bignum_flop/gen_ffrs_43__gen_negrs_u_ffr -> u_otbn_core/u_otbn_rf_bignum/gen_rf_b   │
│   u_otbn_core/u_otbn_instruction_fetch/u_insn_fetch_resp_data_intg_flop/q_o_reg* -> u_otbn_core/u_otbn_rf_bignum/gen_rf_bignum_ff_u_   │
│   u_otbn_core/u_otbn_controller/u_otbn_loop_controller/g_loop_counters_0__u_loop_count/gen_cnts_0__u_cnt_flop/q_o_reg* -> u_otbn_cor   │
│   u_otbn_core/u_otbn_instruction_fetch/u_insn_fetch_resp_data_intg_flop/q_o_reg* -> u_otbn_core/u_otbn_rf_bignum/gen_rf_bignum_ff_u_   │
│   u_otbn_core/u_otbn_controller/u_otbn_loop_controller/g_loop_counters_2__u_loop_count/gen_cnts_0__u_cnt_flop/q_o_reg* -> u_otbn_cor   │
│   u_otbn_core/u_otbn_instruction_fetch/u_rf_predec_bignum_flop/gen_ffrs_93__gen_negrs_u_ffr -> u_otbn_core/u_otbn_rf_bignum/gen_rf_b   │
│   u_otbn_core/u_otbn_instruction_fetch/u_insn_fetch_resp_data_intg_flop/q_o_reg* -> u_otbn_core/u_otbn_rf_bignum/gen_rf_bignum_ff_u_   │
│   u_otbn_core/u_otbn_instruction_fetch/u_rf_predec_bignum_flop/gen_ffrs_52__gen_negrs_u_ffr -> u_otbn_core/u_otbn_rf_bignum/gen_rf_b   │
│   u_otbn_core/u_otbn_instruction_fetch/u_insn_fetch_resp_data_intg_flop/q_o_reg* -> u_otbn_core/u_otbn_rf_bignum/gen_rf_bignum_ff_u_   │
│   u_otbn_core/u_otbn_instruction_fetch/u_insn_fetch_resp_data_intg_flop/q_o_reg* -> u_otbn_core/u_otbn_rf_bignum/gen_rf_bignum_ff_u_   │
│   u_otbn_core/u_otbn_instruction_fetch/u_insn_fetch_resp_data_intg_flop/q_o_reg* -> u_otbn_core/u_otbn_rf_bignum/gen_rf_bignum_ff_u_   │
│   u_otbn_core/u_otbn_instruction_fetch/u_rf_predec_bignum_flop/gen_ffrs_93__gen_negrs_u_ffr -> u_otbn_core/u_otbn_rf_bignum/gen_rf_b   │
│   u_otbn_core/u_otbn_instruction_fetch/u_rf_predec_bignum_flop/gen_ffrs_52__gen_negrs_u_ffr -> u_otbn_core/u_otbn_rf_bignum/gen_rf_b   │
│   u_otbn_core/u_otbn_instruction_fetch/u_rf_predec_bignum_flop/gen_ffrs_76__gen_negrs_u_ffr -> u_otbn_core/u_otbn_rf_bignum/gen_rf_b   │
│   u_dmem/u_prim_ram_1p_adv/rvalid_sram_q_reg* -> u_otbn_core/u_otbn_controller/u_otbn_loop_controller/g_loop_counters_7__u_loop_coun   │
│   u_otbn_core/u_otbn_instruction_fetch/u_rf_predec_bignum_flop/gen_ffrs_52__gen_negrs_u_ffr -> u_otbn_core/u_otbn_rf_bignum/gen_rf_b   │
│   u_otbn_core/u_otbn_instruction_fetch/u_rf_predec_bignum_flop/gen_ffrs_93__gen_negrs_u_ffr -> u_otbn_core/u_otbn_rf_bignum/gen_rf_b   │
│   u_otbn_core/u_otbn_instruction_fetch/u_rf_predec_bignum_flop/gen_ffrs_43__gen_negrs_u_ffr -> u_otbn_core/u_otbn_rf_bignum/gen_rf_b   │
│                                                                                                                                        │
│                                                                                                                                        │
│                                                                                                                                        │
│                                                                                                                                        │
│                                                                                                                                        │
│                                                                                                                                        │
│Filter:                                                                                                                                 │
│                                                                                                                                        │
│                                                                                                                                        │
│                                                                                                                                        │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Below is an animated GIF of the tool in action.

Animated GIF of staview in action

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

staview-0.1.0.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

staview-0.1.0-py3-none-any.whl (15.2 kB view details)

Uploaded Python 3

File details

Details for the file staview-0.1.0.tar.gz.

File metadata

  • Download URL: staview-0.1.0.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.10

File hashes

Hashes for staview-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b2c4292424aa538b648890c74cc4fb5120b463fe5e8c2c6fed7b0c1f907c4f58
MD5 fc02c88ccec530f9a0544d9b9b2a9c30
BLAKE2b-256 4c0172d641c9481f4a209cbc3580571774bbd4e43461061c981fedd427d5dbf2

See more details on using hashes here.

File details

Details for the file staview-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: staview-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 15.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.10

File hashes

Hashes for staview-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d08c4c53ba0b3c20ca489ef3f6f3f7356ce8bc9b9e47c76df5bfd2dd3e128d10
MD5 b669f0fd01884c1d8dbc858ef5c8dd94
BLAKE2b-256 c9c465ce13288f9681d78cb7beb700cb1991049bab1a7dbd6c94f351bac69279

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page