Skip to content

Commit 9578baa

Browse files
committed
Update echo writers/loaders to support per-capture-node constraints
1 parent 16ed6a7 commit 9578baa

File tree

7 files changed

+24
-18
lines changed

7 files changed

+24
-18
lines changed

libtatum/tatum/echo_writer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ void write_timing_constraints(std::ostream& os, const TimingConstraints& tc) {
165165
if (key.capture_node) {
166166
os << " capture_node: " << size_t(key.capture_node);
167167
} else {
168-
os << " capture_node: *";
168+
os << " capture_node: -1";
169169
}
170170
os << " constraint: " << constraint;
171171
os << "\n";
@@ -182,7 +182,7 @@ void write_timing_constraints(std::ostream& os, const TimingConstraints& tc) {
182182
if (key.capture_node) {
183183
os << " capture_node: " << size_t(key.capture_node);
184184
} else {
185-
os << " capture_node: *";
185+
os << " capture_node: -1";
186186
}
187187
os << " constraint: " << constraint;
188188
os << "\n";

libtatumparse/tatumparse.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ class Callback {
8989
virtual void add_min_input_constraint(int node_id, int domain_id, float constraint) = 0;
9090
virtual void add_max_output_constraint(int node_id, int domain_id, float constraint) = 0;
9191
virtual void add_min_output_constraint(int node_id, int domain_id, float constraint) = 0;
92-
virtual void add_setup_constraint(int src_domain_id, int sink_domain_id, float constraint) = 0;
93-
virtual void add_hold_constraint(int src_domain_id, int sink_domain_id, float constraint) = 0;
92+
virtual void add_setup_constraint(int src_domain_id, int sink_domain_id, int capture_domain, float constraint) = 0;
93+
virtual void add_hold_constraint(int src_domain_id, int sink_domain_id, int capture_domain, float constraint) = 0;
9494
virtual void add_setup_uncertainty(int src_domain_id, int sink_domain_id, float uncertainty) = 0;
9595
virtual void add_hold_uncertainty(int src_domain_id, int sink_domain_id, float uncertainty) = 0;
9696
virtual void add_early_source_latency(int domain_id, float latency) = 0;

libtatumparse/tatumparse/tatumparse.l

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ uncertainty: { return tatumparse::Parser::make_UNCERTAINTY();
9999
latency: { return tatumparse::Parser::make_LATENCY(); }
100100
launch_domain: { return tatumparse::Parser::make_LAUNCH_DOMAIN(); }
101101
capture_domain: { return tatumparse::Parser::make_CAPTURE_DOMAIN(); }
102+
capture_node: { return tatumparse::Parser::make_CAPTURE_NODE(); }
102103

103104
delay_model: { return tatumparse::Parser::make_DELAY_MODEL(); }
104105
min_delay: { return tatumparse::Parser::make_MIN_DELAY(); }

libtatumparse/tatumparse/tatumparse.y

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ using namespace tatumparse;
139139
%token LATENCY "latency:"
140140
%token LAUNCH_DOMAIN "launch_domain:"
141141
%token CAPTURE_DOMAIN "capture_domain:"
142+
%token CAPTURE_NODE "capture_node:"
142143

143144
%token DELAY_MODEL "delay_model:"
144145
%token MIN_DELAY "min_delay:"
@@ -184,6 +185,7 @@ using namespace tatumparse;
184185
%type <int> DomainId
185186
%type <int> LaunchDomainId
186187
%type <int> CaptureDomainId
188+
%type <int> CaptureNodeId
187189
%type <float> Constraint
188190
%type <float> Uncertainty
189191
%type <float> Latency
@@ -224,8 +226,10 @@ Constraints: TIMING_CONSTRAINTS EOL { callback.start_constraints(); }
224226
| Constraints TYPE MIN_INPUT_CONSTRAINT NodeId DomainId Constraint EOL { callback.add_min_input_constraint($4, $5, $6); }
225227
| Constraints TYPE MAX_OUTPUT_CONSTRAINT NodeId DomainId Constraint EOL { callback.add_max_output_constraint($4, $5, $6); }
226228
| Constraints TYPE MIN_OUTPUT_CONSTRAINT NodeId DomainId Constraint EOL { callback.add_min_output_constraint($4, $5, $6); }
227-
| Constraints TYPE SETUP_CONSTRAINT LaunchDomainId CaptureDomainId Constraint EOL { callback.add_setup_constraint($4, $5, $6); }
228-
| Constraints TYPE HOLD_CONSTRAINT LaunchDomainId CaptureDomainId Constraint EOL { callback.add_hold_constraint($4, $5, $6); }
229+
| Constraints TYPE SETUP_CONSTRAINT LaunchDomainId CaptureDomainId Constraint EOL { callback.add_setup_constraint($4, $5, -1, $6); }
230+
| Constraints TYPE HOLD_CONSTRAINT LaunchDomainId CaptureDomainId Constraint EOL { callback.add_hold_constraint($4, $5, -1, $6); }
231+
| Constraints TYPE SETUP_CONSTRAINT LaunchDomainId CaptureDomainId CaptureNodeId Constraint EOL { callback.add_setup_constraint($4, $5, $6, $7); }
232+
| Constraints TYPE HOLD_CONSTRAINT LaunchDomainId CaptureDomainId CaptureNodeId Constraint EOL { callback.add_hold_constraint($4, $5, $6, $7); }
229233
| Constraints TYPE SETUP_UNCERTAINTY LaunchDomainId CaptureDomainId Uncertainty EOL { callback.add_setup_uncertainty($4, $5, $6); }
230234
| Constraints TYPE HOLD_UNCERTAINTY LaunchDomainId CaptureDomainId Uncertainty EOL { callback.add_hold_uncertainty($4, $5, $6); }
231235
| Constraints TYPE EARLY_SOURCE_LATENCY DomainId Latency EOL { callback.add_early_source_latency($4, $5); }
@@ -262,6 +266,7 @@ HoldTime: HOLD_TIME Number { $$ = $2; }
262266
DomainId: DOMAIN INT { $$ = $2; }
263267
LaunchDomainId: LAUNCH_DOMAIN INT { $$ = $2; }
264268
CaptureDomainId: CAPTURE_DOMAIN INT { $$ = $2; }
269+
CaptureNodeId: CAPTURE_NODE INT { $$ = $2; }
265270
Constraint: CONSTRAINT Number { $$ = $2; }
266271
Uncertainty: UNCERTAINTY Number { $$ = $2; }
267272
Latency: LATENCY Number { $$ = $2; }

tatum_test/echo_loader.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@ void EchoLoader::add_min_output_constraint(int node_id, int domain_id, float con
5454
tc_->set_output_constraint(tatum::NodeId(node_id), tatum::DomainId(domain_id), tatum::DelayType::MIN, tatum::Time(constraint));
5555
}
5656

57-
void EchoLoader::add_setup_constraint(int src_domain_id, int sink_domain_id, float constraint) {
58-
tc_->set_setup_constraint(tatum::DomainId(src_domain_id), tatum::DomainId(sink_domain_id), tatum::Time(constraint));
57+
void EchoLoader::add_setup_constraint(int src_domain_id, int sink_domain_id, int capture_node, float constraint) {
58+
tc_->set_setup_constraint(tatum::DomainId(src_domain_id), tatum::DomainId(sink_domain_id), tatum::NodeId(capture_node), tatum::Time(constraint));
5959
}
6060

61-
void EchoLoader::add_hold_constraint(int src_domain_id, int sink_domain_id, float constraint) {
62-
tc_->set_hold_constraint(tatum::DomainId(src_domain_id), tatum::DomainId(sink_domain_id), tatum::Time(constraint));
61+
void EchoLoader::add_hold_constraint(int src_domain_id, int sink_domain_id, int capture_node,float constraint) {
62+
tc_->set_hold_constraint(tatum::DomainId(src_domain_id), tatum::DomainId(sink_domain_id), tatum::NodeId(capture_node), tatum::Time(constraint));
6363
}
6464

6565
void EchoLoader::add_setup_uncertainty(int src_domain_id, int sink_domain_id, float uncertainty) {

tatum_test/echo_loader.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ class EchoLoader : public tatumparse::Callback {
3535
void add_min_input_constraint(int node_id, int domain_id, float constraint) override;
3636
void add_min_output_constraint(int node_id, int domain_id, float constraint) override;
3737
void add_max_output_constraint(int node_id, int domain_id, float constraint) override;
38-
void add_setup_constraint(int src_domain_id, int sink_domain_id, float constraint) override;
39-
void add_hold_constraint(int src_domain_id, int sink_domain_id, float constraint) override;
38+
void add_setup_constraint(int src_domain_id, int sink_domain_id, int capture_node, float constraint) override;
39+
void add_hold_constraint(int src_domain_id, int sink_domain_id, int capture_node, float constraint) override;
4040
void add_setup_uncertainty(int src_domain_id, int sink_domain_id, float uncertainty) override;
4141
void add_hold_uncertainty(int src_domain_id, int sink_domain_id, float uncertainty) override;
4242
void add_early_source_latency(int domain_id, float latency) override;

tatumparse_test/main.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,11 @@ class PrintCallback : public tp::Callback {
7979
void add_min_output_constraint(int node_id, int domain_id, float constraint) override {
8080
fprintf(stdout, " type: MIN_OUTPUT_CONSTRAINT node: %d domain: %d constraint: %g\n", node_id, domain_id, constraint);
8181
}
82-
void add_setup_constraint(int src_domain_id, int sink_domain_id, float constraint) override {
83-
fprintf(stdout, " type: SETUP_CONSTRAINT src_domain: %d sink_domain: %d constraint: %g\n", src_domain_id, sink_domain_id, constraint);
82+
void add_setup_constraint(int src_domain_id, int sink_domain_id, int capture_node, float constraint) override {
83+
fprintf(stdout, " type: SETUP_CONSTRAINT src_domain: %d sink_domain: %d capture_node: %d constraint: %g\n", src_domain_id, sink_domain_id, capture_node, constraint);
8484
}
85-
void add_hold_constraint(int src_domain_id, int sink_domain_id, float constraint) override {
86-
fprintf(stdout, " type: HOLD_CONSTRAINT src_domain: %d sink_domain: %d constraint: %g\n", src_domain_id, sink_domain_id, constraint);
85+
void add_hold_constraint(int src_domain_id, int sink_domain_id, int capture_node, float constraint) override {
86+
fprintf(stdout, " type: HOLD_CONSTRAINT src_domain: %d sink_domain: %d capture_node: %d constraint: %g\n", src_domain_id, sink_domain_id, capture_node, constraint);
8787
}
8888
void add_setup_uncertainty(int src_domain_id, int sink_domain_id, float uncertainty) override {
8989
fprintf(stdout, " type: SETUP_UNCERTAINTY src_domain: %d sink_domain: %d uncertainty: %g\n", src_domain_id, sink_domain_id, uncertainty);
@@ -181,8 +181,8 @@ class NopCallback : public tp::Callback {
181181
void add_min_input_constraint(int /*node_id*/, int /*domain_id*/, float /*constraint*/) override {}
182182
void add_max_output_constraint(int /*node_id*/, int /*domain_id*/, float /*constraint*/) override {}
183183
void add_min_output_constraint(int /*node_id*/, int /*domain_id*/, float /*constraint*/) override {}
184-
void add_setup_constraint(int /*src_domain_id*/, int /*sink_domain_id*/, float /*constraint*/) override {}
185-
void add_hold_constraint(int /*src_domain_id*/, int /*sink_domain_id*/, float /*constraint*/) override {}
184+
void add_setup_constraint(int /*src_domain_id*/, int /*sink_domain_id*/, int /*capture_node*/, float /*constraint*/) override {}
185+
void add_hold_constraint(int /*src_domain_id*/, int /*sink_domain_id*/, int /*capture_node*/, float /*constraint*/) override {}
186186
void add_setup_uncertainty(int /*src_domain_id*/, int /*sink_domain_id*/, float /*uncertainty*/) override {}
187187
void add_hold_uncertainty(int /*src_domain_id*/, int /*sink_domain_id*/, float /*uncertainty*/) override {}
188188
void add_early_source_latency(int /*domain_id*/, float /*latency*/) override {}

0 commit comments

Comments
 (0)