slang-netlist  0.9.0
Loading...
Searching...
No Matches
slang::netlist::VisitAll Struct Reference

#include <VisitAll.hpp>

Inheritance diagram for slang::netlist::VisitAll:

Public Member Functions

void handle (const ast::ValueSymbol &symbol)
void handle (const ast::InstanceSymbol &symbol)
void handle (const ast::VariableDeclStatement &stmt)

Public Attributes

uint64_t count = 0

Detailed Description

Visitor to visit the entire AST prior to freezing. This is required since AST construction is lazy, so visiting a previously univisted node can cause modifications, which is not threadsafe. This allows the subsequent netlist construction pass to be multithreaded, in the same way Slang's analysis pass is.

Member Function Documentation

◆ handle() [1/3]

void slang::netlist::VisitAll::handle ( const ast::InstanceSymbol & symbol)
inline

Skip uninstantiated instances to avoid forcing lazy elaboration of modules that are not part of the design hierarchy (e.g. when –top selects a specific root module).

◆ handle() [2/3]

void slang::netlist::VisitAll::handle ( const ast::ValueSymbol & symbol)
inline

◆ handle() [3/3]

void slang::netlist::VisitAll::handle ( const ast::VariableDeclStatement & stmt)
inline

VariableDeclStatement has no visitExprs/visitStmts, so the default ASTVisitor traversal never reaches the initializer expression. AbstractFlowAnalysis::visitStmt calls getInitializer() which triggers lazy DeclaredType resolution — force that here so the parallel DFA pass doesn't race on it.

Member Data Documentation

◆ count

uint64_t slang::netlist::VisitAll::count = 0

The documentation for this struct was generated from the following file: