8000 Hierarchical scheduling visualization in V3ExecGraph by b-chmiel · Pull Request #6009 · verilator/verilator · GitHub
[go: up one dir, main page]

Skip to content

Hierarchical scheduling visualization in V3ExecGraph #6009

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

b-chmiel
Copy link
Member

This PR improves V3ExecGraph schedule graph dumping.
Old hierarchical version:
Vt_hier_block_perf_086_schedule dot

New hierarchical version:
Vt_hier_block_perf_086_schedule dot

Hierarchical schedules are separated with black forks, thread allocations from multi-thread hierarchical tasks are shown as green tasks without dependencies.

I'd normalized lengths of tasks for readability. This however may cause task length misinterpretation, for instance mt23 takes longer than mt26/mt27 but it is shown on the left to indicate when it started. @wsnyder I can restrict this kind of graph only for hierarchical verilation if you want.

Dependencies were also simplified, so that they are shown from simulation execution perspective rather than scheduling. This means that tasks with dependencies on the same thread were simplified to only depend on their neighbour and there are no inter-schedule dependencies.

Normal multi-threaded verilation schedules are still a nightmare to watch but I don't think we would like to make those diagrams interactive for dependency tracking, especially considering that pack graph shows them all in a more digestible manner.
Old version:
Vt_hier_block_perf_086_schedule dot

New version:
Vt_hier_block_perf_086_schedule dot

Signed-off-by: Bartłomiej Chmiel <bchmiel@antmicro.com>
@b-chmiel b-chmiel force-pushed the uniform-hierarchical-scheduling-graph branch from 45e9c53 to af6a8f4 Compare May 16, 2025 08:48
Copy link
Member
@wsnyder wsnyder left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, definite massive improvement in readability.

In some of the designs I see there are some very massive mtask lengths intermixed with short ones. I do think it looses some critical information to make them all uniform. Maybe we could "snap" them to a grid of some uniform reasonable size. (That is a long one might snap to exactly length of 4 short ones)?

b-chmiel added 2 commits May 19, 2025 12:43
8000
Signed-off-by: Bartłomiej Chmiel <bchmiel@antmicro.com>
Signed-off-by: Bartłomiej Chmiel <bchmiel@antmicro.com>
@b-chmiel
Copy link
Member Author

I'd added mtask length normalization. For readability and to avoid overcomplicating implementation, tasks are shown in a single-task columns.
Hierarchical:
Vt_hier_block_perf_086_schedule dot
Non-hierarchical:
Vt_hier_block_perf_086_schedule dot

@wsnyder
Copy link
Member
wsnyder commented May 20, 2025

Looks excellent, thanks!

@wsnyder wsnyder merged commit 6d257ef into verilator:master May 20, 2025
36 checks passed
@b-chmiel b-chmiel deleted the uniform-hierarchical-scheduling-graph branch May 20, 2025 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants
0