|
CIRCT 23.0.0git
|
Classes | |
| struct | AmbiguousHierCapture |
| A function whose hierarchical reference resolves to one symbol reachable through more than one instance. More... | |
| struct | ClassLowering |
| struct | Context |
| A helper class to facilitate the conversion from a Slang AST to MLIR operations. More... | |
| struct | FlattenedIfacePort |
| Lowering information for a single signal flattened from an interface port. More... | |
| struct | FunctionLowering |
| Function lowering information. More... | |
| struct | HierPathInfo |
| Hierarchical path information. More... | |
| struct | InterfaceLowering |
| Lowering information for an expanded interface instance. More... | |
| struct | LocationKey |
| ImportVerilog Elaboration Phases for Hierarchical Names. More... | |
| struct | LoopFrame |
| Information about a loops continuation and exit blocks relevant while lowering the loop's body statements. More... | |
| struct | ModuleLowering |
| Module lowering information. More... | |
| struct | PortLowering |
| Port lowering information. More... | |
| struct | VirtualInterfaceLowering |
Cached lowering information for representing SystemVerilog virtual interface handles as Moore types (a struct of references to interface members). More... | |
| struct | VirtualInterfaceMemberAccess |
| A mapping entry for resolving Slang virtual interface member accesses. More... | |
Typedefs | |
| using | CaptureMap = DenseMap< const slang::ast::SubroutineSymbol *, SmallSetVector< const slang::ast::ValueSymbol *, 4 > > |
| The result of capture analysis: for each function, the set of non-local, non-global variable symbols that the function captures directly or transitively through calls. | |
Functions | |
| bool | isCompileTimeConstant (slang::ast::SymbolKind kind) |
| Return true if symbols of this kind are elaboration-time constants. | |
| const slang::ast::InstanceSymbol * | getRootInstance (const slang::ast::HierarchicalReference &ref) |
| Return the first instance on a hierarchical reference path, i.e. | |
| CaptureMap | analyzeFunctionCaptures (const slang::ast::RootSymbol &root, SmallVectorImpl< AmbiguousHierCapture > &ambiguous) |
Analyze the AST rooted at root to determine which variables each function captures: symbols referenced inside the function's body (directly or through called functions) that are neither local nor global, including hierarchical references to other instances. | |
| const slang::ast::InstanceBodySymbol * | getCanonicalBody (const slang::ast::InstanceSymbol &inst) |
Get the slang canonical body for the given instance, if there is one. | |
| using circt::ImportVerilog::CaptureMap = typedef DenseMap<const slang::ast::SubroutineSymbol *, SmallSetVector<const slang::ast::ValueSymbol *, 4> > |
The result of capture analysis: for each function, the set of non-local, non-global variable symbols that the function captures directly or transitively through calls.
Definition at line 53 of file CaptureAnalysis.h.
| CaptureMap circt::ImportVerilog::analyzeFunctionCaptures | ( | const slang::ast::RootSymbol & | root, |
| SmallVectorImpl< AmbiguousHierCapture > & | ambiguous | ||
| ) |
Analyze the AST rooted at root to determine which variables each function captures: symbols referenced inside the function's body (directly or through called functions) that are neither local nor global, including hierarchical references to other instances.
Captures that cannot be resolved to a single instance are reported in ambiguous.
Referenced by circt::ImportVerilog::Context::convertCompilation().
|
inline |
Get the slang canonical body for the given instance, if there is one.
If there isn't one, fall back to the normal body.
Definition at line 39 of file ImportVerilogInternals.h.
Referenced by circt::ImportVerilog::Context::convertCompilation().
| const slang::ast::InstanceSymbol * circt::ImportVerilog::getRootInstance | ( | const slang::ast::HierarchicalReference & | ref | ) |
Return the first instance on a hierarchical reference path, i.e.
the instance the reference enters the hierarchy through.
| bool circt::ImportVerilog::isCompileTimeConstant | ( | slang::ast::SymbolKind | kind | ) |
Return true if symbols of this kind are elaboration-time constants.
They are materialized inline instead of being captured or ported.