mirror of
https://github.com/verilator/verilator.git
synced 2026-10-07 02:23:19 +02:00
Use the same serial ordering within MTasks as we use in serial mode (#4994)
The goal here is to use as single ordering heuristic (which can be improved later) within MTasks as we do for serial code ordering. The heuristic itself is factored out into the new OrderMoveGraphSerializer. This also yields slightly nicer ordering than the previously use GraphStream, so we end up with fewer trigger (domain) conditionals in the MTasks, this can be worth a few percent speedup. This has the somewhat nice side-effect of reusing OrderMoveGraphVertex for both serial and parallel mode, so MTaskMoveGraphVertex can be removed. Serial mode yields identical output.
This commit is contained in:
@@ -39,6 +39,8 @@ ExecMTask::ExecMTask(V3Graph* graphp, AstMTaskBody* bodyp) VL_MT_DISABLED //
|
||||
m_id{s_nextId++},
|
||||
m_hashName{V3Hasher::uncachedHash(bodyp).toString()} {
|
||||
UASSERT_OBJ(bodyp->stmtsp(), bodyp, "AstMTaskBody should already be populated for hashing");
|
||||
UASSERT_OBJ(!bodyp->execMTaskp(), bodyp, "AstMTaskBody already linked to an ExecMTask");
|
||||
bodyp->execMTaskp(this);
|
||||
}
|
||||
|
||||
void ExecMTask::dump(std::ostream& str) const {
|
||||
|
||||
Reference in New Issue
Block a user