slang::netlist namespace

Classes

struct AnalysisState
class Assignment
class Case
struct CombEdgePredicate
class CombLoops
class Conditional
class Config
A singleton to hold global configuration options.
template<class NodeType, class EdgeType>
struct CycleDetectionVisitor
Visitor class for identifying cycles during Depth-First Search.
template<class NodeType, class EdgeType, class EdgePredicate = select_all>
class CycleDetector
Class for reporting all cycles in a directed graph.
struct DataFlowAnalysis
A data flow analysis used as part of the netlist graph construction.
template<class NodeType, class EdgeType, class Visitor, class EdgePredicate = select_all>
class DepthFirstSearch
template<class NodeType, class EdgeType>
class DirectedEdge
A class to represent a directed edge in a graph.
template<class NodeType, class EdgeType>
class DirectedGraph
struct DriverInfo
Information about a driver of a particular range of a symbol.
struct DriverMap
template<typename T>
class ExternalManager
struct IntervalMapUtils
Utility class for working with IntervalMaps.
struct LSPUtilities
class Merge
struct NetlistDiagnostics
A collection of diagnostics for reporting on the netlist.
struct NetlistDot
A utility class for rendering a netlist graph in DOT format.
class NetlistEdge
A class representing a dependency between two nodes in the netlist.
class NetlistGraph
Represent the netlist connectivity of an elaborated design.
class NetlistNode
class NetlistPath
A class represening a path traversing nodes in the netlist.
struct NetlistVisitor
Visitor for building the netlist graph from the AST.
template<class NodeType, class EdgeType>
class Node
A class to represent a node in a directed graph.
class PathFinder
struct PendingLvalue
struct PendingRvalue
class Port
class ReportDrivers
Visitor for printing symbol information in a human-readable format.
struct ReportingUtilities
class ReportVariables
Visitor for printing symbol information in a human-readable format.
struct select_all
A predicate for selecting edges in a depth-first search.
class State
class SymbolTracker

Enums

enum class NodeKind { None = 0, Port, Assignment, Conditional, Case, Merge, State }

Typedefs

using DriverList = std::unordered_set<DriverInfo, DriverInfo::Hash>
A list of AST/netlist drivers for a particular range of a symbol.
using DriverListHandle = uint32_t
using DriverBitRange = std::pair<uint32_t, uint32_t>
A range over which a symbol is driven.
using SymbolSlotMap = std::map<const ast::Symbol*, uint32_t>
Map symbols to indexes.
using SlotSymbolMap = std::vector<const ast::Symbol*>
Map indexes to symbols.
using SymbolDrivers = std::vector<DriverMap>
Per-symbol SymbolDriverMaps.

Functions

auto file_name(const char* file) -> const char*
template<typename... T>
void DebugMessage(const std::source_location& location, fmt::format_string<T...> fmt, T && ... args)
Print a debug message with the current file and line number.
template<typename... T>
void InfoMessage(fmt::format_string<T...> fmt, T && ... args)
Print an informational message.

Enum documentation

enum class slang::netlist::NodeKind

Typedef documentation

using slang::netlist::DriverList = std::unordered_set<DriverInfo, DriverInfo::Hash>

A list of AST/netlist drivers for a particular range of a symbol.

using slang::netlist::DriverListHandle = uint32_t

An identifier held by the interval map corresponding to the separately-allocated driver list.

using slang::netlist::DriverBitRange = std::pair<uint32_t, uint32_t>

A range over which a symbol is driven.

using slang::netlist::SymbolSlotMap = std::map<const ast::Symbol*, uint32_t>

Map symbols to indexes.

using slang::netlist::SlotSymbolMap = std::vector<const ast::Symbol*>

Map indexes to symbols.

using slang::netlist::SymbolDrivers = std::vector<DriverMap>

Per-symbol SymbolDriverMaps.

Function documentation

const char* slang::netlist::file_name(const char* file)

template<typename... T>
void slang::netlist::DebugMessage(const std::source_location& location, fmt::format_string<T...> fmt, T && ... args)

Print a debug message with the current file and line number.

template<typename... T>
void slang::netlist::InfoMessage(fmt::format_string<T...> fmt, T && ... args)

Print an informational message.