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
SourceLocation instanceLoc
The location where the instance is being instantiated.
map_with_incomplete_type<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
SourceLocation argExpansionLoc
const AssertionInstanceDetails* argDetails
bool isRecursive

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.

SourceLocation slang::ast::AssertionInstanceDetails::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* slang::ast::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 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.