slang::ast::TimingControl class

The base class for SystemVerilog timing controls (delay, event, etc).

Derived classes

class BlockEventListControl final
Represents a list of block events (used within coverage events).
class CycleDelayControl final
Represents a cycle-based delay control.
class Delay3Control final
Represents multiple delays associated with a single gate primitive.
class DelayControl final
Represents a delay time control.
class EventListControl final
Represents a list of timing controls to wait on.
class ImplicitEventControl final
Represents an implicit event control (i.e. the @* construct).
class InvalidTimingControl final
Represents an invalid timing control.
class OneStepDelayControl final
Represents the built-in 1step delay.
class RepeatedEventControl final
Represents a repeat event control.
class SignalEventControl final
Represents a signal event control.

Public static functions

static TimingControl& bind(const syntax::TimingControlSyntax& syntax, const ASTContext& context)
Binds a timing control from the given syntax node.
static TimingControl& bind(const syntax::PropertyExprSyntax& syntax, const ASTContext& context)
Binds a timing control from the given syntax node.
static TimingControl& bind(const syntax::SequenceExprSyntax& syntax, const ASTContext& context)
Binds a timing control from the given syntax node.

Public functions

bool bad() const
Indicates whether the timing control is invalid.
template<typename T>
T& as()
Casts this timing control to the given concrete derived type.
template<typename T>
const T& as() const
Casts this timing control to the given concrete derived type.
template<typename T>
T* as_if()
Tries to cast this timing control to the given concrete derived type.
template<typename T>
const T* as_if() const
Tries to cast this timing control to the given concrete derived type.
template<typename TVisitor, typename... Args>
decltype(auto) visit(TVisitor& visitor, Args && ... args) const
Visits this timing control's concrete derived type via the provided visitor object.

Public variables

TimingControlKind kind
The kind of timing control; indicates the type of derived class.
const syntax::SyntaxNode* syntax
The syntax used to create the timing control, if any.
SourceRange sourceRange
The source range of this timing control, if it originated from source code.

Function documentation

template<typename T>
T& slang::ast::TimingControl::as()

Casts this timing control to the given concrete derived type.

Asserts that the type is appropriate given this timing control's kind.

template<typename T>
const T& slang::ast::TimingControl::as() const

Casts this timing control to the given concrete derived type.

Asserts that the type is appropriate given this timing control's kind.

template<typename T>
T* slang::ast::TimingControl::as_if()

Tries to cast this timing control to the given concrete derived type.

If the type is not appropriate given this timing control's kind, returns nullptr.

template<typename T>
const T* slang::ast::TimingControl::as_if() const

Tries to cast this timing control to the given concrete derived type.

If the type is not appropriate given this timing control's kind, returns nullptr.