12#include "slang/ast/SemanticFacts.h"
19#include <unordered_map>
55 void build(ast::Compilation &compilation,
56 analysis::AnalysisManager &analysisManager,
70 -> std::vector<NetlistNode *>;
80 -> std::vector<NetlistNode *>;
85 -> std::vector<NetlistNode *>;
90 -> std::vector<NetlistNode *>;
104 -> std::vector<SensitivitySource>;
116 -> std::vector<NetlistNode *>;
125 [[nodiscard]]
auto findNodes(std::string_view pattern)
const
126 -> std::vector<NetlistNode *>;
130 -> std::vector<NetlistNode *>;
139 std::views::filter([kind](std::unique_ptr<NetlistNode>
const &p) {
140 return p->kind == kind;
147 return sourceNode.addEdge(targetNode);
160 blackBoxPaths.push_back(std::move(path));
165 return blackBoxPaths;
179 std::vector<std::string> blackBoxPaths;
180 mutable bool indexBuilt =
false;
181 mutable std::unordered_map<std::string, std::vector<NetlistNode *>> nodeIndex;
182 void buildIndex()
const;
NodeListType nodes
Definition DirectedGraph.hpp:481
Definition TextLocation.hpp:20
Definition NetlistEdge.hpp:18
Represent the netlist connectivity of an elaborated design.
Definition NetlistGraph.hpp:44
void setBuildProfile(BuildProfile const &profile)
Set the profiling data (called internally by NetlistBuilder).
Definition NetlistGraph.hpp:156
auto lookup(std::string_view name, DriverBitRange bounds) const -> std::vector< NetlistNode * >
auto getDrivers(std::string_view name, DriverBitRange bounds) const -> std::vector< NetlistNode * >
auto getSensitivity(NetlistNode &node) const -> std::vector< SensitivitySource >
auto findNodesRegex(std::string_view pattern) const -> std::vector< NetlistNode * >
Find named nodes whose hierarchical path matches the regex pattern.
auto getCombFanOut(NetlistNode &node) const -> std::vector< NetlistNode * >
void addBlackBoxPath(std::string path)
Record the hierarchical path of a black-boxed instance.
Definition NetlistGraph.hpp:159
auto getBlackBoxPaths() const -> std::span< std::string const >
Return the hierarchical paths of the black-boxed instances.
Definition NetlistGraph.hpp:164
FileTable fileTable
Definition NetlistGraph.hpp:46
auto addEdge(NetlistNode &sourceNode, NetlistNode &targetNode) -> NetlistEdge &
Add an edge between two nodes.
Definition NetlistGraph.hpp:145
SymbolTable symbolTable
Definition NetlistGraph.hpp:47
auto getBuildProfile() const -> BuildProfile const &
Return the profiling data from the last build() call.
Definition NetlistGraph.hpp:151
auto getCombFanIn(NetlistNode &node) const -> std::vector< NetlistNode * >
auto lookup(std::string_view name) const -> NetlistNode *
auto getBlackBoxCoverage(NetlistNode const &node) const -> BlackBoxCoverage
auto getConstantDrivers(NetlistNode &node) const -> std::vector< NetlistNode * >
auto findNodes(std::string_view pattern) const -> std::vector< NetlistNode * >
auto filterNodes(NodeKind kind) const
Definition NetlistGraph.hpp:137
void build(ast::Compilation &compilation, analysis::AnalysisManager &analysisManager, BuilderOptions options={})
Definition NetlistNode.hpp:33
Definition SymbolReference.hpp:34
Definition NetlistGraph.hpp:26
Definition NetlistGraph.hpp:23
Definition Utilities.hpp:16
BlackBoxCoverage
Classification of a node against a graph's black boxes.
Definition NetlistGraph.hpp:34
@ Contained
Strictly inside a black box.
Definition NetlistGraph.hpp:40
@ Outside
Not covered by any black box.
Definition NetlistGraph.hpp:36
@ Boundary
A port of a black-boxed instance.
Definition NetlistGraph.hpp:38
NodeKind
Definition NetlistNode.hpp:19
Definition Utilities.hpp:16
Profiling data collected during netlist graph construction.
Definition BuildProfile.hpp:8
Caller-supplied options that tune how the netlist graph is built.
Definition BuilderOptions.hpp:10
A range over which a symbol is driven.
Definition DriverBitRange.hpp:14
A clock/reset signal driving a State node, paired with its edge kind.
Definition NetlistGraph.hpp:93
NetlistNode * source
Definition NetlistGraph.hpp:94
auto operator==(SensitivitySource const &) const -> bool=default
ast::EdgeKind edgeKind
Definition NetlistGraph.hpp:95