@@ -298,6 +298,10 @@ class RRGraphBuilder {
298
298
* @note This will not add an edge to storage. You need to call build_edges() after all the edges are cached. */
299
299
void create_edge_in_cache (RRNodeId src, RRNodeId dest, RRSwitchId edge_switch, bool remapped);
300
300
301
+ /* * @brief Add a new edge to the cache of edges to be built
302
+ * @note This will not add an edge to storage! You need to call build_edges() after all the edges are cached! */
303
+ void create_edge (RRNodeId src, RRNodeId dest, RRSwitchId edge_switch, bool remapped);
304
+
301
305
/* * @brief Allocate and build actual edges in storage.
302
306
* Once called, the cached edges will be uniquified and added to routing resource nodes,
303
307
* while the cache will be empty once build-up is accomplished
@@ -392,6 +396,13 @@ class RRGraphBuilder {
392
396
return node_storage_.count_rr_switches (arch_switch_inf, arch_switch_fanins);
393
397
}
394
398
399
+ /* * @brief Unlock storage; required to modify an routing resource graph after edge is read */
400
+ inline void unlock_storage () {
401
+ node_storage_.edges_read_ = false ;
402
+ node_storage_.partitioned_ = false ;
403
+ node_storage_.clear_node_first_edge ();
404
+ }
405
+
395
406
/* * @brief Reserve the lists of nodes, edges, switches etc. to be memory efficient.
396
407
* This function is mainly used to reserve memory space inside RRGraph,
397
408
* when adding a large number of nodes/edge/switches/segments,
0 commit comments