add some debug info for dispatch queue and regression

Signed-off-by: dsengupta0628 <dsengupta@precisioninno.com>
This commit is contained in:
dsengupta0628 2026-04-22 04:19:34 +00:00
parent 2daf7a9bb7
commit d53029aba1
4 changed files with 42 additions and 0 deletions

View File

@ -338,6 +338,12 @@ Sta::setThreadCount1(int thread_count)
dispatch_queue_ = new DispatchQueue(thread_count);
}
uint64_t
Sta::dispatchCallCount() const
{
return dispatch_queue_ ? dispatch_queue_->dispatchCallCount() : 0;
}
void
Sta::updateComponentsState()
{

View File

@ -19,6 +19,7 @@ sta_module_tests("search"
genclk_latch_deep
genclk_property_report
json_unconstrained
kahns_bfs_dispatch
latch
latch_timing
levelize_loop_disabled

View File

@ -0,0 +1,4 @@
Warning 198: ../../examples/gcd_sky130hd.v line 527, module sky130_fd_sc_hd__tapvpwrvgnd_1 not found. Creating black box for TAP_11.
off_dispatches=203
on_dispatches=1060
on_to_off_ratio=5.22x

View File

@ -0,0 +1,31 @@
# Performance regression: DispatchQueue dispatch() counts under Kahn's
# BFS OFF vs ON. The count is a wall-clock-independent proxy for
# parallel-dispatch overhead, so a shift in the golden signals a real
# change in the BFS/dispatch strategy.
read_liberty ../../test/sky130hd/sky130hd_tt.lib
read_verilog ../../examples/gcd_sky130hd.v
link_design gcd
sta::set_thread_count 2
source ../../examples/gcd_sky130hd.sdc
# OFF phase: level-based BFS.
set sta_use_kahns_bfs 0
set before [sta::dispatch_call_count]
report_checks -path_delay min_max -group_count 10 > /dev/null
set off_dispatches [expr {[sta::dispatch_call_count] - $before}]
# ON phase: Kahn's BFS. Invalidate arrivals so the iterators
# re-propagate through visitParallel instead of returning cached
# results.
sta::arrivals_invalid
set sta_use_kahns_bfs 1
set before [sta::dispatch_call_count]
report_checks -path_delay min_max -group_count 10 > /dev/null
set on_dispatches [expr {[sta::dispatch_call_count] - $before}]
puts "off_dispatches=$off_dispatches"
puts "on_dispatches=$on_dispatches"
puts [format "on_to_off_ratio=%.2fx" \
[expr {$on_dispatches / double($off_dispatches)}]]