Skip to content

Commit 5796525

Browse files
allightcopybara-github
authored andcommitted
Add range-query-engine derived interval information to the ir_viz csvs/protos.
These are useful for giving another perspective on what our analysis believes are valid values for nodes. PiperOrigin-RevId: 720319354
1 parent ba13486 commit 5796525

File tree

4 files changed

+13
-1
lines changed

4 files changed

+13
-1
lines changed

xls/visualization/ir_viz/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,9 @@ cc_library(
121121
"//xls/ir:op",
122122
"//xls/passes:bdd_function",
123123
"//xls/passes:bdd_query_engine",
124+
"//xls/passes:proc_state_range_query_engine",
124125
"//xls/passes:query_engine",
126+
"//xls/passes:range_query_engine",
125127
"//xls/passes:ternary_query_engine",
126128
"//xls/passes:union_query_engine",
127129
"//xls/scheduling:pipeline_schedule",

xls/visualization/ir_viz/ir_to_csvs_main.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ constexpr riegeli::CsvHeaderConstant kNodeHeader = {"name",
9696
"initial_value",
9797
"area_um",
9898
"file",
99-
"line"};
99+
"line",
100+
"range"};
100101
riegeli::CsvRecord NodeRecord(const viz::Node& node) {
101102
return riegeli::CsvRecord(
102103
*kNodeHeader,
@@ -139,6 +140,7 @@ riegeli::CsvRecord NodeRecord(const viz::Node& node) {
139140
? node.loc()[0].file()
140141
: "",
141142
node.loc_size() == 1 ? ToFieldValue(node.loc()[0].line()) : "",
143+
node.attributes().has_ranges() ? node.attributes().ranges() : "",
142144
});
143145
}
144146

xls/visualization/ir_viz/ir_to_proto.cc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@
4747
#include "xls/ir/proc.h"
4848
#include "xls/passes/bdd_function.h"
4949
#include "xls/passes/bdd_query_engine.h"
50+
#include "xls/passes/proc_state_range_query_engine.h"
5051
#include "xls/passes/query_engine.h"
52+
#include "xls/passes/range_query_engine.h"
5153
#include "xls/passes/ternary_query_engine.h"
5254
#include "xls/passes/union_query_engine.h"
5355
#include "xls/scheduling/pipeline_schedule.h"
@@ -130,6 +132,7 @@ absl::StatusOr<viz::NodeAttributes> NodeAttributes(
130132
}
131133
if (query_engine.IsTracked(node)) {
132134
attributes.set_known_bits(query_engine.ToString(node));
135+
attributes.set_ranges(query_engine.GetIntervals(node).ToString());
133136
}
134137
if (std::optional<int64_t> state_index = MaybeGetStateReadIndex(node);
135138
state_index.has_value()) {
@@ -192,6 +195,8 @@ absl::StatusOr<viz::FunctionBase> FunctionBaseToVisualizationProto(
192195
engines.emplace_back(
193196
std::make_unique<BddQueryEngine>(BddFunction::kDefaultPathLimit));
194197
engines.emplace_back(std::make_unique<TernaryQueryEngine>());
198+
engines.emplace_back(std::make_unique<RangeQueryEngine>());
199+
engines.emplace_back(std::make_unique<ProcStateRangeQueryEngine>());
195200
UnionQueryEngine query_engine(std::move(engines));
196201
XLS_RETURN_IF_ERROR(query_engine.Populate(function).status());
197202

xls/visualization/ir_viz/visualization.proto

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ message NodeAttributes {
7373
optional double state_param_index = 9;
7474
optional string initial_value = 10;
7575
optional double area_um = 11;
76+
77+
// If present the interval-set of the node.
78+
optional string ranges = 32;
7679
}
7780

7881
message SourceLocation {

0 commit comments

Comments
 (0)