Skip to content

Added Optional Attribute to RRGraph #2378

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 27 commits into from
Sep 12, 2023
Merged
Show file tree
Hide file tree
Changes from 19 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
a856f03
added extra ptc_twist vector for rrgraph nodes
saaramahmoudi Aug 28, 2023
26b7338
revert a test change
saaramahmoudi Aug 28, 2023
5c5530d
read back rr graph with twist factor added in rr_node
saaramahmoudi Aug 28, 2023
7560061
make the twist variable optional in rr graph
saaramahmoudi Aug 28, 2023
e0117a6
fixed a bug
saaramahmoudi Aug 29, 2023
75bf299
Revert "revert a test change"
saaramahmoudi Aug 29, 2023
2759730
added extra ptc_twist vector for rrgraph nodes
saaramahmoudi Aug 28, 2023
9242453
revert a test change
saaramahmoudi Aug 28, 2023
05b8e9c
read back rr graph with twist factor added in rr_node
saaramahmoudi Aug 28, 2023
80c7709
make the twist variable optional in rr graph
saaramahmoudi Aug 28, 2023
d84ba30
fixed a bug
saaramahmoudi Aug 29, 2023
65df4af
Revert "revert a test change"
saaramahmoudi Aug 29, 2023
af2df00
auto-generated new rrgraph gen folder with twist
saaramahmoudi Aug 29, 2023
5f83ea4
fixed serializer to match generated files
saaramahmoudi Aug 29, 2023
63d8585
removed all conflicts
saaramahmoudi Aug 29, 2023
35353e0
removed conflicts - part 2
saaramahmoudi Aug 29, 2023
4102820
removed conflicts - part 3
saaramahmoudi Aug 29, 2023
bc5057b
read twist number and pass the correct ptc num to add_node
saaramahmoudi Aug 29, 2023
5691cbc
Merge branch 'master' into tileable_rr_graph_write
saaramahmoudi Aug 31, 2023
3920086
Merge branch 'master' into tileable_rr_graph_write
saaramahmoudi Aug 31, 2023
b143422
updated comment node_twist_ comment
saaramahmoudi Sep 1, 2023
b479b21
only allocated twist number for UNDIR TILEABLE
saaramahmoudi Sep 1, 2023
d8b234b
make format
saaramahmoudi Sep 1, 2023
ef304b6
Doxygen comment for rr_graph_storage.h
saaramahmoudi Sep 1, 2023
ed36ab2
check for allocation of ptc_twist
saaramahmoudi Sep 1, 2023
e853ae3
Merge branch 'master' into tileable_rr_graph_write
saaramahmoudi Sep 1, 2023
3e16a0f
resolved conflicts with master branch
saaramahmoudi Sep 11, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions libs/librrgraph/src/base/rr_graph_builder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,12 @@ void RRGraphBuilder::add_node_to_all_locs(RRNodeId node) {
t_rr_type node_type = node_storage_.node_type(node);
short node_ptc_num = node_storage_.node_ptc_num(node);
short node_layer = node_storage_.node_layer(node);
short node_twist = node_storage_.node_ptc_twist(node);
int node_offset = 0;
for (int ix = node_storage_.node_xlow(node); ix <= node_storage_.node_xhigh(node); ix++) {
for (int iy = node_storage_.node_ylow(node); iy <= node_storage_.node_yhigh(node); iy++) {
node_ptc_num += node_twist * node_offset;
node_offset++;
switch (node_type) {
case SOURCE:
case SINK:
Expand Down
4 changes: 4 additions & 0 deletions libs/librrgraph/src/base/rr_graph_builder.h
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,10 @@ class RRGraphBuilder {
node_storage_.set_node_layer(id, layer);
}

inline void set_node_ptc_twist(RRNodeId id, int twist){
node_storage_.set_node_ptc_twist(id, twist);
}

/** @brief set_node_pin_num() is designed for logic blocks, which are IPIN and OPIN nodes */
inline void set_node_pin_num(RRNodeId id, int new_pin_num) {
node_storage_.set_node_pin_num(id, new_pin_num);
Expand Down
5 changes: 5 additions & 0 deletions libs/librrgraph/src/base/rr_graph_storage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -622,6 +622,10 @@ void t_rr_graph_storage::set_node_layer(RRNodeId id, short layer) {
node_layer_[id] = layer;
}

void t_rr_graph_storage::set_node_ptc_twist(RRNodeId id, short twist){
node_ptc_twist_[id] = twist;
}

void t_rr_graph_storage::set_node_ptc_num(RRNodeId id, int new_ptc_num) {
node_ptc_[id].ptc_.pin_num = new_ptc_num; //TODO: eventually remove
}
Expand Down Expand Up @@ -785,6 +789,7 @@ t_rr_graph_view t_rr_graph_storage::view() const {
vtr::make_const_array_view_id(node_first_edge_),
vtr::make_const_array_view_id(node_fan_in_),
vtr::make_const_array_view_id(node_layer_),
vtr::make_const_array_view_id(node_ptc_twist_),
vtr::make_const_array_view_id(edge_src_node_),
vtr::make_const_array_view_id(edge_dest_node_),
vtr::make_const_array_view_id(edge_switch_));
Expand Down
28 changes: 28 additions & 0 deletions libs/librrgraph/src/base/rr_graph_storage.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,14 @@ class t_rr_graph_storage {
return node_layer_[id];
}

/* Find the twist number that RR node uses to change ptc number across the same track.
* By default this number is zero, meaning that ptc number across the same track should be the same.
* This number is only meaningful for CHANX/CHANY nodes, the other nodes.
* */
short node_ptc_twist(RRNodeId id) const{
return node_ptc_twist_[id];
}

// This prefetechs hot RR node data required for optimization.
//
// Note: This is optional, but may lower time spent on memory stalls in
Expand Down Expand Up @@ -403,6 +411,7 @@ class t_rr_graph_storage {
node_ptc_.reserve(node_storage_.capacity());
node_ptc_.resize(node_storage_.size());
node_layer_.resize(node_storage_.size());
node_ptc_twist_.resize(node_storage_.size());
}

// Reserve storage for RR nodes.
Expand All @@ -412,6 +421,7 @@ class t_rr_graph_storage {
node_storage_.reserve(size);
node_ptc_.reserve(size);
node_layer_.reserve(size);
node_ptc_twist_.reserve(size);
}

// Resize node storage to accomidate size RR nodes.
Expand All @@ -421,6 +431,7 @@ class t_rr_graph_storage {
node_storage_.resize(size);
node_ptc_.resize(size);
node_layer_.resize(size);
node_ptc_twist_.resize(size);
}

// Number of RR nodes that can be accessed.
Expand All @@ -442,6 +453,7 @@ class t_rr_graph_storage {
node_first_edge_.clear();
node_fan_in_.clear();
node_layer_.clear();
node_ptc_twist_.clear();
edge_src_node_.clear();
edge_dest_node_.clear();
edge_switch_.clear();
Expand Down Expand Up @@ -473,6 +485,7 @@ class t_rr_graph_storage {
node_first_edge_.shrink_to_fit();
node_fan_in_.shrink_to_fit();
node_layer_.shrink_to_fit();
node_ptc_twist_.shrink_to_fit();
edge_src_node_.shrink_to_fit();
edge_dest_node_.shrink_to_fit();
edge_switch_.shrink_to_fit();
Expand All @@ -486,6 +499,7 @@ class t_rr_graph_storage {
node_storage_.emplace_back();
node_ptc_.emplace_back();
node_layer_.emplace_back();
node_ptc_twist_.emplace_back();
}

// Given `order`, a vector mapping each RRNodeId to a new one (old -> new),
Expand All @@ -505,6 +519,7 @@ class t_rr_graph_storage {
void set_node_type(RRNodeId id, t_rr_type new_type);
void set_node_coordinates(RRNodeId id, short x1, short y1, short x2, short y2);
void set_node_layer(RRNodeId id, short layer);
void set_node_ptc_twist(RRNodeId id, short twist);
void set_node_cost_index(RRNodeId, RRIndexedDataId new_cost_index);
void set_node_rc_index(RRNodeId, NodeRCIndex new_rc_index);
void set_node_capacity(RRNodeId, short new_capacity);
Expand Down Expand Up @@ -709,6 +724,11 @@ class t_rr_graph_storage {
// in a separate vector.
vtr::vector<RRNodeId, short> node_layer_;

//Twist number is defined for CHANX/CHANY nodes, it is useful when different parts of same wire (with length > 1) have different ptc numbers.
//For instance, a track with length 4 would have four different ptc numbers [0,2,4,6], the ptc number would be 0 and twist number would be 2.
//This twist number is cold data since it is generally not used during the inner loop of either the placer or router.
vtr::vector<RRNodeId, short> node_ptc_twist_;

// Edge storage.
vtr::vector<RREdgeId, RRNodeId> edge_src_node_;
vtr::vector<RREdgeId, RRNodeId> edge_dest_node_;
Expand Down Expand Up @@ -775,6 +795,7 @@ class t_rr_graph_view {
const vtr::array_view_id<RRNodeId, const RREdgeId> node_first_edge,
const vtr::array_view_id<RRNodeId, const t_edge_size> node_fan_in,
const vtr::array_view_id<RRNodeId, const short> node_layer,
const vtr::array_view_id<RRNodeId, const short> node_ptc_twist,
const vtr::array_view_id<RREdgeId, const RRNodeId> edge_src_node,
const vtr::array_view_id<RREdgeId, const RRNodeId> edge_dest_node,
const vtr::array_view_id<RREdgeId, const short> edge_switch)
Expand All @@ -783,6 +804,7 @@ class t_rr_graph_view {
, node_first_edge_(node_first_edge)
, node_fan_in_(node_fan_in)
, node_layer_(node_layer)
, node_ptc_twist_(node_ptc_twist)
, edge_src_node_(edge_src_node)
, edge_dest_node_(edge_dest_node)
, edge_switch_(edge_switch) {}
Expand Down Expand Up @@ -844,6 +866,11 @@ class t_rr_graph_view {
return node_layer_[id];
}

/* Retrieve twist number (if available) that RRNodeId used for its ptc number */
short node_ptc_twist(RRNodeId id) const{
return node_ptc_twist_[id];
}

// This prefetechs hot RR node data required for optimization.
//
// Note: This is optional, but may lower time spent on memory stalls in
Expand Down Expand Up @@ -885,6 +912,7 @@ class t_rr_graph_view {
vtr::array_view_id<RRNodeId, const RREdgeId> node_first_edge_;
vtr::array_view_id<RRNodeId, const t_edge_size> node_fan_in_;
vtr::array_view_id<RRNodeId, const short> node_layer_;
vtr::array_view_id<RRNodeId, const short> node_ptc_twist_;
vtr::array_view_id<RREdgeId, const RRNodeId> edge_src_node_;
vtr::array_view_id<RREdgeId, const RRNodeId> edge_dest_node_;
vtr::array_view_id<RREdgeId, const short> edge_switch_;
Expand Down
5 changes: 5 additions & 0 deletions libs/librrgraph/src/base/rr_graph_view.h
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,11 @@ class RRGraphView {
inline short node_layer(RRNodeId node) const {
return node_storage_.node_layer(node);
}

/** @brief Get the ptc number twist of a routing resource node. This function is inlined for runtime optimization. */
inline short node_ptc_twist(RRNodeId node) const{
return node_storage_.node_ptc_twist(node);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Check if not allocated; return 0 if not.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also comment that it will return 0 for non-tilable architectures.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't this check that the storage is allocated and error out if it isn't? (Seems important since we don't always allocate it).

}

/** @brief Get the first out coming edge of resource node. This function is inlined for runtime optimization. */
inline RREdgeId node_first_edge(RRNodeId node) const {
Expand Down
26 changes: 21 additions & 5 deletions libs/librrgraph/src/io/gen/rr_graph_uxsdcxx.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
*
* Cmdline: uxsdcxx/uxsdcxx.py /home/sara/Desktop/RLPLACE_LOCAL/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
* Input file: /home/sara/Desktop/RLPLACE_LOCAL/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
* md5sum of input file: cf10a1fa99fdfc7a455393a2a3cd1426
* md5sum of input file: 9fa1b4c9c4b23d4c6d321612d2f76bad
*/

#include <functional>
Expand Down Expand Up @@ -275,8 +275,8 @@ constexpr const char *atok_lookup_t_grid_loc[] = {"block_type_id", "height_offse
enum class gtok_t_grid_locs {GRID_LOC};
constexpr const char *gtok_lookup_t_grid_locs[] = {"grid_loc"};

enum class atok_t_node_loc {LAYER, PTC, SIDE, XHIGH, XLOW, YHIGH, YLOW};
constexpr const char *atok_lookup_t_node_loc[] = {"layer", "ptc", "side", "xhigh", "xlow", "yhigh", "ylow"};
enum class atok_t_node_loc {LAYER, PTC, SIDE, TWIST, XHIGH, XLOW, YHIGH, YLOW};
constexpr const char *atok_lookup_t_node_loc[] = {"layer", "ptc", "side", "twist", "xhigh", "xlow", "yhigh", "ylow"};


enum class atok_t_node_timing {C, R};
Expand Down Expand Up @@ -1138,6 +1138,14 @@ inline atok_t_node_loc lex_attr_t_node_loc(const char *in, const std::function<v
default: break;
}
break;
case onechar('t', 0, 32) | onechar('w', 8, 32) | onechar('i', 16, 32) | onechar('s', 24, 32):
switch(in[4]){
case onechar('t', 0, 8):
return atok_t_node_loc::TWIST;
break;
default: break;
}
break;
case onechar('x', 0, 32) | onechar('h', 8, 32) | onechar('i', 16, 32) | onechar('g', 24, 32):
switch(in[4]){
case onechar('h', 0, 8):
Expand Down Expand Up @@ -2339,7 +2347,7 @@ inline void load_grid_loc_required_attributes(const pugi::xml_node &root, int *
}

inline void load_node_loc_required_attributes(const pugi::xml_node &root, int * layer, int * ptc, int * xhigh, int * xlow, int * yhigh, int * ylow, const std::function<void(const char *)> * report_error){
std::bitset<7> astate = 0;
std::bitset<8> astate = 0;
for(pugi::xml_attribute attr = root.first_attribute(); attr; attr = attr.next_attribute()){
atok_t_node_loc in = lex_attr_t_node_loc(attr.name(), report_error);
if(astate[(int)in] == 0) astate[(int)in] = 1;
Expand All @@ -2354,6 +2362,9 @@ inline void load_node_loc_required_attributes(const pugi::xml_node &root, int *
case atok_t_node_loc::SIDE:
/* Attribute side set after element init */
break;
case atok_t_node_loc::TWIST:
/* Attribute twist set after element init */
break;
case atok_t_node_loc::XHIGH:
*xhigh = load_int(attr.value(), report_error);
break;
Expand All @@ -2369,7 +2380,7 @@ inline void load_node_loc_required_attributes(const pugi::xml_node &root, int *
default: break; /* Not possible. */
}
}
std::bitset<7> test_astate = astate | std::bitset<7>(0b0000100);
std::bitset<8> test_astate = astate | std::bitset<8>(0b00001100);
if(!test_astate.all()) attr_error(test_astate, atok_lookup_t_node_loc, report_error);
}

Expand Down Expand Up @@ -3259,6 +3270,9 @@ inline void load_node_loc(const pugi::xml_node &root, T &out, Context &context,
case atok_t_node_loc::SIDE:
out.set_node_loc_side(lex_enum_loc_side(attr.value(), true, report_error), context);
break;
case atok_t_node_loc::TWIST:
out.set_node_loc_twist(load_int(attr.value(), report_error), context);
break;
case atok_t_node_loc::XHIGH:
/* Attribute xhigh is already set */
break;
Expand Down Expand Up @@ -3991,6 +4005,8 @@ inline void write_node(T &in, std::ostream &os, Context &context){
os << " ptc=\"" << in.get_node_loc_ptc(child_context) << "\"";
if((bool)in.get_node_loc_side(child_context))
os << " side=\"" << lookup_loc_side[(int)in.get_node_loc_side(child_context)] << "\"";
if((bool)in.get_node_loc_twist(child_context))
os << " twist=\"" << in.get_node_loc_twist(child_context) << "\"";
os << " xhigh=\"" << in.get_node_loc_xhigh(child_context) << "\"";
os << " xlow=\"" << in.get_node_loc_xlow(child_context) << "\"";
os << " yhigh=\"" << in.get_node_loc_yhigh(child_context) << "\"";
Expand Down
5 changes: 4 additions & 1 deletion libs/librrgraph/src/io/gen/rr_graph_uxsdcxx_capnp.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
*
* Cmdline: uxsdcxx/uxsdcap.py /home/sara/Desktop/RLPLACE_LOCAL/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
* Input file: /home/sara/Desktop/RLPLACE_LOCAL/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
* md5sum of input file: cf10a1fa99fdfc7a455393a2a3cd1426
* md5sum of input file: 9fa1b4c9c4b23d4c6d321612d2f76bad
*/

#include <functional>
Expand Down Expand Up @@ -705,6 +705,7 @@ inline void load_node_loc_capnp_type(const ucap::NodeLoc::Reader &root, T &out,
(void)stack;

out.set_node_loc_side(conv_enum_loc_side(root.getSide(), report_error), context);
out.set_node_loc_twist(root.getTwist(), context);
}

template<class T, typename Context>
Expand Down Expand Up @@ -1158,6 +1159,8 @@ inline void write_node_capnp_type(T &in, ucap::Node::Builder &root, Context &con
node_loc.setPtc(in.get_node_loc_ptc(child_context));
if((bool)in.get_node_loc_side(child_context))
node_loc.setSide(conv_to_enum_loc_side(in.get_node_loc_side(child_context)));
if((bool)in.get_node_loc_twist(child_context))
node_loc.setTwist(in.get_node_loc_twist(child_context));
node_loc.setXhigh(in.get_node_loc_xhigh(child_context));
node_loc.setXlow(in.get_node_loc_xlow(child_context));
node_loc.setYhigh(in.get_node_loc_yhigh(child_context));
Expand Down
7 changes: 5 additions & 2 deletions libs/librrgraph/src/io/gen/rr_graph_uxsdcxx_interface.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@
* This file is generated by uxsdcxx 0.1.0.
* https://github.com/duck2/uxsdcxx
* Modify only if your build process doesn't involve regenerating this file.
*
* Cmdline: uxsdcxx/uxsdcxx.py /home/sara/Desktop/RLPLACE_LOCAL/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
* Input file: /home/sara/Desktop/RLPLACE_LOCAL/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
* md5sum of input file: cf10a1fa99fdfc7a455393a2a3cd1426
* md5sum of input file: 9fa1b4c9c4b23d4c6d321612d2f76bad
*/

#include <functional>
Expand Down Expand Up @@ -361,18 +360,22 @@ class RrGraphBase {
/** Generated for complex type "node_loc":
* <xs:complexType name="node_loc">
* <xs:attribute name="layer" type="xs:int" use="required" />
* <xs:attribute name="twist" type="xs:int" />
* <xs:attribute name="xlow" type="xs:int" use="required" />
* <xs:attribute name="ylow" type="xs:int" use="required" />
* <xs:attribute name="xhigh" type="xs:int" use="required" />
* <xs:attribute name="yhigh" type="xs:int" use="required" />
* <xs:attribute name="side" type="loc_side" />
* <xs:attribute name="ptc" type="xs:int" use="required" />
* <xs:attribute name="twist" type="xs:int" />
* </xs:complexType>
*/
virtual inline int get_node_loc_layer(typename ContextTypes::NodeLocReadContext &ctx) = 0;
virtual inline int get_node_loc_ptc(typename ContextTypes::NodeLocReadContext &ctx) = 0;
virtual inline enum_loc_side get_node_loc_side(typename ContextTypes::NodeLocReadContext &ctx) = 0;
virtual inline void set_node_loc_side(enum_loc_side side, typename ContextTypes::NodeLocWriteContext &ctx) = 0;
virtual inline int get_node_loc_twist(typename ContextTypes::NodeLocReadContext &ctx) = 0;
virtual inline void set_node_loc_twist(int twist, typename ContextTypes::NodeLocWriteContext &ctx) = 0;
virtual inline int get_node_loc_xhigh(typename ContextTypes::NodeLocReadContext &ctx) = 0;
virtual inline int get_node_loc_xlow(typename ContextTypes::NodeLocReadContext &ctx) = 0;
virtual inline int get_node_loc_yhigh(typename ContextTypes::NodeLocReadContext &ctx) = 0;
Expand Down
1 change: 1 addition & 0 deletions libs/librrgraph/src/io/rr_graph.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,7 @@
<xs:attribute name="yhigh" type="xs:int" use="required"/>
<xs:attribute name="side" type="loc_side"/>
<xs:attribute name="ptc" type="xs:int" use="required"/>
<xs:attribute name="twist" type="xs:int"/>
</xs:complexType>

<xs:complexType name="node_timing">
Expand Down
10 changes: 10 additions & 0 deletions libs/librrgraph/src/io/rr_graph_uxsdcxx_serializer.h
Original file line number Diff line number Diff line change
Expand Up @@ -706,6 +706,9 @@ class RrGraphSerializer final : public uxsd::RrGraphBase<RrGraphContextTypes> {
inline int get_node_loc_layer(const t_rr_node& node) final {
return rr_graph_->node_layer(node.id());
}
inline int get_node_loc_twist(const t_rr_node& node) final{
return rr_graph_->node_ptc_twist(node.id());
}
inline int get_node_loc_xhigh(const t_rr_node& node) final {
return rr_graph_->node_xhigh(node.id());
}
Expand Down Expand Up @@ -740,6 +743,13 @@ class RrGraphSerializer final : public uxsd::RrGraphBase<RrGraphContextTypes> {
}
}
}

inline void set_node_loc_twist(int twist, int& inode) final {
auto node = (*rr_nodes_)[inode];
RRNodeId node_id = node.id();
rr_graph_builder_->set_node_ptc_twist(node_id,twist);
}

inline uxsd::enum_loc_side get_node_loc_side(const t_rr_node& node) final {
const auto& rr_graph = (*rr_graph_);
if (rr_graph.node_type(node.id()) == IPIN || rr_graph.node_type(node.id()) == OPIN) {
Expand Down
14 changes: 8 additions & 6 deletions libs/libvtrcapnproto/gen/rr_graph_uxsdcxx.capnp
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
#
# Cmdline: uxsdcxx/uxsdcap.py /home/sara/Desktop/RLPLACE_LOCAL/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
# Input file: /home/sara/Desktop/RLPLACE_LOCAL/vtr-verilog-to-routing/libs/librrgraph/src/io/rr_graph.xsd
# md5sum of input file: cf10a1fa99fdfc7a455393a2a3cd1426
# md5sum of input file: 9fa1b4c9c4b23d4c6d321612d2f76bad

@0x91e066ff37fad849;

@0xe180df9b6ce517f5;
using Cxx = import "/capnp/c++.capnp";
$Cxx.namespace("ucap");

Expand Down Expand Up @@ -165,10 +166,11 @@ struct NodeLoc {
layer @0 :Int32;
ptc @1 :Int32;
side @2 :LocSide;
xhigh @3 :Int32;
xlow @4 :Int32;
yhigh @5 :Int32;
ylow @6 :Int32;
twist @3 :Int32;
xhigh @4 :Int32;
xlow @5 :Int32;
yhigh @6 :Int32;
ylow @7 :Int32;
}

struct NodeTiming {
Expand Down
2 changes: 2 additions & 0 deletions vpr/src/route/router_lookahead_map.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1413,12 +1413,14 @@ static void compute_tile_lookahead(std::unordered_map<int, util::t_ipin_primitiv
const t_det_routing_arch& det_routing_arch,
const int delayless_switch) {
RRGraphBuilder rr_graph_builder;
int ptc_twist = 0;
int layer = 0;
int x = 1;
int y = 1;
build_tile_rr_graph(rr_graph_builder,
det_routing_arch,
physical_tile,
ptc_twist,
layer,
x,
y,
Expand Down
Loading