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.2.tar.gz (21.4 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.2-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: staview-0.1.2.tar.gz
  • Upload date:
  • Size: 21.4 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.2.tar.gz
Algorithm Hash digest
SHA256 2d25d19171f0b60d96e0e2b4176a8d25b172fc00b8a3890fccfe47352094aa00
MD5 f53225e7d46025a8c29ce89dc5b7b100
BLAKE2b-256 f4fbaada9018a4706e99ea18418403569807339c8d386a1ae0b394c4961479d5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: staview-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 19.6 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c292811b2916ecb06ea699da4ec16f8e233f1d1e9c7ab012708ee2d6e70760d0
MD5 5e41eb3e453abf18b85ba89d07579d63
BLAKE2b-256 02c46a59c2bd2666580a9efc7e016388a45b6e0bce6c5d1b0b47b0c33f4b8b1d

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