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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2c4292424aa538b648890c74cc4fb5120b463fe5e8c2c6fed7b0c1f907c4f58
|
|
| MD5 |
fc02c88ccec530f9a0544d9b9b2a9c30
|
|
| BLAKE2b-256 |
4c0172d641c9481f4a209cbc3580571774bbd4e43461061c981fedd427d5dbf2
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d08c4c53ba0b3c20ca489ef3f6f3f7356ce8bc9b9e47c76df5bfd2dd3e128d10
|
|
| MD5 |
b669f0fd01884c1d8dbc858ef5c8dd94
|
|
| BLAKE2b-256 |
c9c465ce13288f9681d78cb7beb700cb1991049bab1a7dbd6c94f351bac69279
|