report analyzer

Analye the control_set_detail.rpt generated by the impl_utils.tcl function analyze_control_sets_and_slice

python filter_control_sets.py control_set_details.rpt --min_sets 10 --max_ratio 25 --sort merit --desc python filter_control_sets.py ../../reports/control_sets/control_set_details.rpt --min_sets 10 --max_ratio 25 --sort ratio

Vivado tcl example to generate the initial report (when no filtered yet)

report_control_sets -verbose -sort_by {clk set} -hierarchical -hierarchical_depth 1 -cells [get_cells *smi_sniffer*] -file sniffer_gather_cs.rpt report_control_sets -verbose -sort_by {clk set} -hierarchical -hierarchical_depth 1 -cells [get_cells *sniffer_gather*] -file sniffer_gather_cs.rpt

Replication is bad for reducing control sets. https://docs.amd.com/r/en-US/ug949-vivado-design-methodology/Follow-Control-Set-Guidelines

Analyze the utilization report:

This script allows to pass a module name and to receive back the corresponding utilization

python utilization_filter.py ../../reports/utilization/hierarchical_utilization.rpt spisniffer