slang::analysis namespace

Post-elaboration analysis framework.

Classes

template<typename TDerived, typename TState>
class AbstractFlowAnalysis
An abstract class for flow analysis passes over SystemVerilog code.
class AnalysisContext
Holds various bits of state needed to perform analysis.
class AnalysisManager
The analysis manager coordinates running various analyses on AST symbols.
struct AnalysisOptions
Contains various options that can control analysis behavior.
class AnalyzedAssertion
Represents an analyzed assertion (or procedural checker).
class AnalyzedDesign
Represents the result of analyzing a full design.
class AnalyzedProcedure
Represents an analyzed procedure.
class AnalyzedScope
Represents an analyzed AST scope.
class CaseDecisionDag
A helper class for building a decision DAG (directed acyclic graph) for case statement exhaustiveness analysis.
class ClockInference
Various helper methods for inferring clocks in assertions and checkers.
class DataFlowAnalysis
Performs data flow analysis on a single procedure, tracking the assigned ranges of nets and variables at each point in the procedure.
struct DataFlowState
Represents the state of a data flow analysis at a single point in a procedure.
class DriverTracker
A helper class that tracks drivers for all symbols in a thread-safe manner.
class FlowAnalysisBase
A base class for flow analysis passes that contains non-specialized helper functions.
class PendingAnalysis
Represents a pending analysis for a particular AST symbol, such as a module or interface instance, a class type, etc.
class ValueDriver
Represents an expression that drives a value by assigning to some range of its type.

Enums

enum class AnalysisFlags { None = 0, CheckUnused = 1 << 0, FullCaseUniquePriority = 1 << 1, FullCaseFourState = 1 << 2, AllowMultiDrivenLocals = 1 << 3, AllowDupInitialDrivers = 1 << 4 }
Defines flags that control analysis behavior.
enum class DriverSource: uint8_t { Initial, Final, Always, AlwaysComb, AlwaysLatch, AlwaysFF, Subroutine, Other }
Specifies possible containing symbol kinds for value drivers.
enum class DriverFlags: uint8_t { None = 0, InputPort = 1 << 1, OutputPort = 1 << 2, ClockVar = 1 << 3, Initializer = 1 << 4 }
A set of flags that control how assignments are checked.

Enum documentation

enum class slang::analysis::AnalysisFlags

Defines flags that control analysis behavior.

Enumerators
None

No flags specified.

CheckUnused

Analysis should check for and report on unused symbols.

FullCaseUniquePriority

'unique' and 'priority' keywords are used to assume full case coverage.

FullCaseFourState

Require X and Z bits be covered for full case coverage.

If not set, only 0 and 1 bits are required.

AllowMultiDrivenLocals

Allow multi-driven subroutine local variables.

AllowDupInitialDrivers

Signals driven by an always_comb are normally not allowed to be driven by any other process.

This flag allows initial blocks to also drive such signals.

enum class slang::analysis::DriverSource: uint8_t

Specifies possible containing symbol kinds for value drivers.

enum class slang::analysis::DriverFlags: uint8_t

A set of flags that control how assignments are checked.

Enumerators
None

No special assignment behavior specified.

InputPort

The assignment is for an input port of a module / interface / program (the assignment to the internal symbol from the port itself).

OutputPort

The assignment is for an output port of a module / interface / program (the assignment from the port connection).

ClockVar

The assignment is from a clocking block signal.

Initializer

The driver is for a net or variable initializer.