blob: a39e71117e8171d9b5d829980fcb2bd9777962b1 [file] [log] [blame] [edit]
#include "rr_metadata.h"
#include "globals.h"
namespace vpr {
const t_metadata_value* rr_node_metadata(int src_node, std::string key) {
auto& device_ctx = g_vpr_ctx.device();
if (device_ctx.rr_node_metadata.size() == 0 || device_ctx.rr_node_metadata.count(src_node) == 0) {
return nullptr;
}
auto& data = device_ctx.rr_node_metadata.at(src_node);
return data.one(key);
}
void add_rr_node_metadata(int src_node, std::string key, std::string value) {
auto& device_ctx = g_vpr_ctx.mutable_device();
if (device_ctx.rr_node_metadata.count(src_node) == 0) {
device_ctx.rr_node_metadata.emplace(src_node, t_metadata_dict());
}
auto& data = device_ctx.rr_node_metadata.at(src_node);
data.add(key, value);
}
const t_metadata_value* rr_edge_metadata(int src_node, int sink_id, short switch_id, std::string key) {
const auto& device_ctx = g_vpr_ctx.device();
auto rr_edge = std::make_tuple(src_node, sink_id, switch_id);
auto iter = device_ctx.rr_edge_metadata.find(rr_edge);
if (iter == device_ctx.rr_edge_metadata.end()) {
return nullptr;
}
return iter->second.one(key);
}
void add_rr_edge_metadata(int src_node, int sink_id, short switch_id, std::string key, std::string value) {
auto& device_ctx = g_vpr_ctx.mutable_device();
auto rr_edge = std::make_tuple(src_node, sink_id, switch_id);
if (device_ctx.rr_edge_metadata.count(rr_edge) == 0) {
device_ctx.rr_edge_metadata.emplace(rr_edge, t_metadata_dict());
}
auto& data = device_ctx.rr_edge_metadata.at(rr_edge);
data.add(key, value);
}
} // namespace vpr