@@ -198,6 +198,32 @@ NodeId TimingGraph::add_node(const NodeType type) {
198198 return node_id;
199199}
200200
201+ NodeId TimingGraph::add_node (const NodeType type, int trigg_edge) {
202+ // Invalidate the levelization
203+ is_levelized_ = false ;
204+
205+ // Reserve an ID
206+ NodeId node_id = NodeId (node_ids_.size ());
207+ node_ids_.push_back (node_id);
208+
209+ // Type
210+ node_types_.push_back (type);
211+
212+ // Triggering Edge
213+ trigg_edges_.push_back (trigg_edge);
214+
215+ // Edges
216+ node_out_edges_.push_back (std::vector<EdgeId>());
217+ node_in_edges_.push_back (std::vector<EdgeId>());
218+
219+ // Verify sizes
220+ TATUM_ASSERT (node_types_.size () == node_out_edges_.size ());
221+ TATUM_ASSERT (node_types_.size () == node_in_edges_.size ());
222+
223+ // Return the ID of the added node
224+ return node_id;
225+ }
226+
201227EdgeId TimingGraph::add_edge (const EdgeType type, const NodeId src_node, const NodeId sink_node) {
202228 // We require that the source/sink node must already be in the graph,
203229 // so we can update them with thier edge references
@@ -556,6 +582,7 @@ void TimingGraph::remap_nodes(const tatum::util::linear_map<NodeId,NodeId>& node
556582 node_types_ = clean_and_reorder_values (node_types_, node_id_map);
557583 node_in_edges_ = clean_and_reorder_values (node_in_edges_, node_id_map);
558584 node_out_edges_ = clean_and_reorder_values (node_out_edges_, node_id_map);
585+ trigg_edges_ = clean_and_reorder_values (trigg_edges_, node_id_map);
559586
560587 // Update references
561588 edge_src_nodes_ = update_all_refs (edge_src_nodes_, node_id_map);
@@ -597,7 +624,8 @@ bool TimingGraph::validate_sizes() const {
597624 if ( node_ids_.size () != node_types_.size ()
598625 || node_ids_.size () != node_in_edges_.size ()
599626 || node_ids_.size () != node_out_edges_.size ()
600- || node_ids_.size () != node_levels_.size ()) {
627+ || node_ids_.size () != node_levels_.size ()
628+ || node_ids_.size () != trigg_edges_.size ()) {
601629 throw tatum::Error (" Inconsistent node attribute sizes" );
602630 }
603631
0 commit comments