5#include "slang/ast/symbols/PortSymbols.h"
6#include "slang/ast/symbols/VariableSymbols.h"
7#include "slang/ast/types/NetType.h"
23 static auto portNetTypeName(ast::PortSymbol
const &symbol) -> std::string {
24 if (
auto const *net = symbol.internalSymbol
25 ? symbol.internalSymbol->as_if<ast::NetSymbol>()
27 return std::string(net->netType.name);
36 return {
"Direction",
"Name",
"Width",
"Net Type",
"Location"};
48 writer.writeProperty(
"name");
49 writer.writeValue(port.
name);
50 writer.writeProperty(
"direction");
51 writer.writeValue(std::string_view(toString(port.
direction)));
52 writer.writeProperty(
"width");
53 writer.writeValue(port.
width);
54 writer.writeProperty(
"netType");
55 writer.writeValue(port.
netType);
56 writer.writeProperty(
"location");
61 void handle(
const ast::PortSymbol &symbol) {
62 auto path = symbol.getHierarchicalPath();
67 .name = std::move(path),
68 .direction = symbol.direction,
69 .width = symbol.getType().getBitWidth(),
70 .netType = portNetTypeName(symbol),
71 .location = symbol.location,
Visitor for printing port information.
Definition ReportPorts.hpp:20
ReportVisitorBase(ast::Compilation &compilation)
Definition ReportVisitorBase.hpp:60
void handle(const ast::PortSymbol &symbol)
Definition ReportPorts.hpp:61
void emitJsonItem(JsonWriter &writer, PortInfo const &port) const
Definition ReportPorts.hpp:46
void appendItemRows(netlist::Utilities::Table &table, PortInfo const &port) const
Definition ReportPorts.hpp:39
auto tableHeader() const -> netlist::Utilities::Row
Definition ReportPorts.hpp:35
ReportVisitorBase(ast::Compilation &compilation)
Definition ReportVisitorBase.hpp:60
auto locationStr(SourceLocation loc) const -> std::string
Definition ReportVisitorBase.hpp:40
auto nameMatches(std::string_view name) const -> bool
Definition ReportVisitorBase.hpp:46
std::vector< PortInfo > items
Definition ReportVisitorBase.hpp:36
Definition Utilities.hpp:16
Definition ReportDrivers.hpp:12
std::vector< Row > Table
Definition Utilities.hpp:33
std::vector< std::string > Row
Definition Utilities.hpp:32
Definition ReportPorts.hpp:11
std::string name
Definition ReportPorts.hpp:12
SourceLocation location
Definition ReportPorts.hpp:16
uint64_t width
Definition ReportPorts.hpp:14
std::string netType
Definition ReportPorts.hpp:15
ast::ArgumentDirection direction
Definition ReportPorts.hpp:13