slang::ast::AssertionInstanceDetails struct

Information required to instantiate a sequence, property, or checker instance.

Public variables

const Symbol* symbol
The assertion member being instantiated.
const ASTContext* prevContext
The previous AST context used to start the instantiation.
SourceLocation instanceLoc
The location where the instance is being instantiated.
flat_hash_map<const Symbol*, std::tuple<const syntax::PropertyExprSyntax*, ASTContext>> argumentMap
A map of formal argument symbols to their actual replacements.
flat_hash_map<std::string_view, const Symbol*> localVars
A map of local variables declared in the assertion item.
SourceLocation argExpansionLoc
If an argument to a sequence or property is being expanded, this member contains the source location where the argument was referenced.
const AssertionInstanceDetails* argDetails
If an argument is being expanded, this is the context in which the argument was originally being created (as opposed to where it is being expanded now).
bool isRecursive
Indicates whether this particular instance has already been seen previously in the stack of assertion instances being expanded.

Variable documentation

const ASTContext* slang::ast::AssertionInstanceDetails::prevContext

The previous AST context used to start the instantiation.

This effectively forms a linked list when expanding a nested stack of sequence and property instances.

flat_hash_map<std::string_view, const Symbol*> slang::ast::AssertionInstanceDetails::localVars

A map of local variables declared in the assertion item.

These don't exist in any scope because their types can depend on the expanded arguments.

bool slang::ast::AssertionInstanceDetails::isRecursive

Indicates whether this particular instance has already been seen previously in the stack of assertion instances being expanded.

Only applicable to properties, since this is illegal for sequences.