Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 0 additions & 6 deletions doc/src/api/vtrutil/containers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -99,12 +99,6 @@ vtr_array_view
:project: vtr
:members:

vtr_string_view
---------------
.. doxygenclass:: vtr::string_view
:project: vtr
:members:

vtr_cache
---------
.. doxygenclass:: vtr::Cache
Expand Down
2 changes: 1 addition & 1 deletion libs/libarchfpga/src/grid_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -131,4 +131,4 @@ struct t_grid_loc_def {
enum class e_grid_def_type {
AUTO,
FIXED
};
};
6 changes: 3 additions & 3 deletions libs/libarchfpga/src/interposer_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ inline const std::unordered_map<char, e_interposer_cut_dim> CHAR_INTERPOSER_DIM_
*
*/
struct t_interdie_wire_inf {
std::string sg_name; ///< Name of the scatter-gather pattern to be used for the interdie connection
std::string sg_link; ///< Name of the scatter-gather link to be used for the interdie connection
std::string sg_name; ///< Name of the scatter-gather pattern to be used for the interdie connection
std::string sg_link; ///< Name of the scatter-gather link to be used for the interdie connection
/**
* @brief
* Contains starting and ending point (both inclusive) of scatter-gather instantiations and the increment/distance between the instantiations.
Expand All @@ -43,7 +43,7 @@ struct t_interdie_wire_inf {
* Locations defined by this offset definition define the starting point or the gathering point of the SG pattern. The end or scatter point of the SG pattern is defined by the sg_link.
*/
t_grid_loc_spec offset_definition;
int num; ///< Number of scatter-gather instantiations per switchblock location
int num; ///< Number of scatter-gather instantiations per switchblock location
};

/**
Expand Down
2 changes: 1 addition & 1 deletion libs/libarchfpga/src/read_fpga_interchange_arch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ struct ArchReader {
set_arch_file_name(arch_file);

for (std::string str : ar_.getStrList()) {
auto interned_string = arch_->strings.intern_string(vtr::string_view(str.c_str()));
auto interned_string = arch_->strings.intern_string(str);
arch_->interned_strings.push_back(interned_string);
}
}
Expand Down
2 changes: 1 addition & 1 deletion libs/libarchfpga/src/read_xml_arch_file.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2659,7 +2659,7 @@ static void process_block_type_locs(t_grid_def& grid_def,
}

t_interposer_cut_inf interposer_cut = parse_interposer_cut_tag(loc_spec_tag, loc_data);

if ((interposer_cut.dim == e_interposer_cut_dim::X && interposer_cut.loc >= grid_def.height) || (interposer_cut.dim == e_interposer_cut_dim::Y && interposer_cut.loc >= grid_def.width)) {
archfpga_throw(loc_data.filename_c_str(), loc_data.line(loc_spec_tag), "Interposer cut dimensions are outside of device bounds");
}
Expand Down
2 changes: 1 addition & 1 deletion libs/libarchfpga/src/read_xml_arch_file_interposer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ t_interposer_cut_inf parse_interposer_cut_tag(pugi::xml_node interposer_cut_tag,
interdie_wire.offset_definition.start_expr = pugiutil::get_attribute(interdie_wire_tag, "offset_start", loc_data).as_string();
interdie_wire.offset_definition.end_expr = pugiutil::get_attribute(interdie_wire_tag, "offset_end", loc_data).as_string();
interdie_wire.offset_definition.incr_expr = pugiutil::get_attribute(interdie_wire_tag, "offset_increment", loc_data).as_string();

interdie_wire.num = pugiutil::get_attribute(interdie_wire_tag, "num", loc_data).as_int();

interposer.interdie_wires.push_back(interdie_wire);
Expand Down
4 changes: 2 additions & 2 deletions libs/libarchfpga/src/read_xml_util.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -174,8 +174,8 @@ t_metadata_dict process_meta_data(vtr::string_internment& strings,
std::string key = get_attribute(meta_tag, "name", loc_data).as_string();

std::string value = meta_tag.child_value();
data.add(strings.intern_string(vtr::string_view(key.c_str())),
strings.intern_string(vtr::string_view(value.c_str())));
data.add(strings.intern_string(key),
strings.intern_string(value));
meta_tag = meta_tag.next_sibling(meta_tag.name());
}
}
Expand Down
4 changes: 2 additions & 2 deletions libs/librrgraph/src/base/rr_metadata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ void add_rr_node_metadata(MetadataStorage<int>& rr_node_metadata, int src_node,
value);
}

void add_rr_node_metadata(MetadataStorage<int>& rr_node_metadata, int src_node, vtr::string_view key, vtr::string_view value, const t_arch* arch) {
void add_rr_node_metadata(MetadataStorage<int>& rr_node_metadata, int src_node, std::string_view key, std::string_view value, const t_arch* arch) {
rr_node_metadata.add_metadata(src_node,
arch->strings.intern_string(key),
arch->strings.intern_string(value));
Expand All @@ -33,7 +33,7 @@ const t_metadata_value* rr_edge_metadata(const RRGraphBuilder& rr_graph_builder,
return iter->second.one(key);
}

void add_rr_edge_metadata(MetadataStorage<std::tuple<int, int, short>>& rr_edge_metadata, int src_node, int sink_id, short switch_id, vtr::string_view key, vtr::string_view value, const t_arch* arch) {
void add_rr_edge_metadata(MetadataStorage<std::tuple<int, int, short>>& rr_edge_metadata, int src_node, int sink_id, short switch_id, std::string_view key, std::string_view value, const t_arch* arch) {
auto rr_edge = std::make_tuple(src_node, sink_id, switch_id);
rr_edge_metadata.add_metadata(rr_edge,
arch->strings.intern_string(key),
Expand Down
4 changes: 2 additions & 2 deletions libs/librrgraph/src/base/rr_metadata.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ namespace vpr {

const t_metadata_value* rr_node_metadata(const RRGraphBuilder& rr_graph_builder, int src_node, vtr::interned_string key);
void add_rr_node_metadata(MetadataStorage<int>& rr_node_metadata, int src_node, vtr::interned_string key, vtr::interned_string value);
void add_rr_node_metadata(MetadataStorage<int>& rr_node_metadata, int src_node, vtr::string_view key, vtr::string_view value, const t_arch* arch);
void add_rr_node_metadata(MetadataStorage<int>& rr_node_metadata, int src_node, std::string_view key, std::string_view value, const t_arch* arch);

const t_metadata_value* rr_edge_metadata(const RRGraphBuilder& rr_graph_builder, int src_node, int sink_node, short switch_id, vtr::interned_string key);
void add_rr_edge_metadata(MetadataStorage<std::tuple<int, int, short>>& rr_edge_metadata, int src_node, int sink_node, short switch_id, vtr::interned_string key, vtr::interned_string value);
void add_rr_edge_metadata(MetadataStorage<std::tuple<int, int, short>>& rr_edge_metadata, int src_node, int sink_node, short switch_id, vtr::string_view key, vtr::string_view value, const t_arch* arch);
void add_rr_edge_metadata(MetadataStorage<std::tuple<int, int, short>>& rr_edge_metadata, int src_node, int sink_node, short switch_id, std::string_view key, std::string_view value, const t_arch* arch);

} // namespace vpr
6 changes: 3 additions & 3 deletions libs/librrgraph/src/io/rr_graph_uxsdcxx_serializer.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ class MetadataBind {

void set_name(const char* name) {
if (!ignore_) {
name_ = strings_->intern_string(vtr::string_view(name));
name_ = strings_->intern_string(name);
}
}
void set_value(const char* value) {
if (!ignore_) {
value_ = strings_->intern_string(vtr::string_view(value));
value_ = strings_->intern_string(value);
}
}
void set_node_target(int inode) {
Expand Down Expand Up @@ -321,7 +321,7 @@ class RrGraphSerializer final : public uxsd::RrGraphBase<RrGraphContextTypes> {
, rr_node_metadata_(rr_node_metadata)
, rr_edge_metadata_(rr_edge_metadata)
, strings_(strings)
, empty_(strings_->intern_string(vtr::string_view("")))
, empty_(strings_->intern_string(""))
, report_error_(nullptr)
, is_flat_(is_flat) {
// Initialize internal data
Expand Down
7 changes: 2 additions & 5 deletions libs/libvtrutil/src/vtr_expr_eval.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -315,12 +315,9 @@ static void get_formula_object(const char* ch, int& ichar, const t_formula_data&
}

} else if (!is_breakpoint) {
//A number
// A number
fobj->type = E_FML_NUMBER;
fobj->data.num = mydata.get_var_value(
vtr::string_view(
var_name.data(),
var_name.size()));
fobj->data.num = mydata.get_var_value(var_name);
} else if (is_variable(var_name)) {
fobj->type = E_FML_VARIABLE;
if (same_string(var_name, "temp_count"))
Expand Down
25 changes: 8 additions & 17 deletions libs/libvtrutil/src/vtr_expr_eval.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,23 @@
#include <vector>
#include <stack>
#include <cstring>
#include <string_view>

#include "vtr_util.h"
#include "vtr_error.h"
#include "vtr_string_view.h"
#include "vtr_flat_map.h"
#include "../../../vpr/src/draw/breakpoint_state_globals.h"

/**
* @file
* @brief This file implements an expressopn evaluator
* @brief This file implements an expression evaluator
*
* The expression evaluator is capable of performing many operations on given variables,
* after parsing the expression. The parser goes character by character and identifies
* the type of char or chars. (e.g bracket, comma, number, operator, variable).
* The supported operations include addition, subtraction, multiplication, division,
* finding max, min, gcd, lcm, as well as boolean operators such as &&, ||, ==, >=, <= etc.
* The result is returned as an int value and operation precedance is taken into account.
* The result is returned as an int value and operation precedence is taken into account.
* (e.g given 3-2*4, the result will be -5). This class is also used to parse expressions
* indicating breakpoints. The breakpoint expressions consist of variable names such as
* move_num, temp_num, from_block etc, and boolean operators (e.g move_num == 3).
Expand All @@ -44,29 +44,20 @@ class t_formula_data {
}

///@brief set the value of a specific part of the formula
void set_var_value(vtr::string_view var, int value) { vars_[var] = value; }
void set_var_value(std::string_view var, int value) { vars_[var] = value; }

///@brief set the value of a specific part of the formula (the var can be c-style string)
void set_var_value(const char* var, int value) { vars_[vtr::string_view(var)] = value; }

///@brief get the value of a specific part of the formula
int get_var_value(const std::string& var) const {
return get_var_value(vtr::string_view(var.data(), var.size()));
}

///@brief get the value of a specific part of the formula (the var can be c-style string)
int get_var_value(vtr::string_view var) const {
///@brief get the value of a specific part of the formula.
int get_var_value(std::string_view var) const {
auto iter = vars_.find(var);
if (iter == vars_.end()) {
std::string copy(var.data(), var.size());
throw vtr::VtrError(vtr::string_fmt("No value found for variable '%s' from expression\n", copy.c_str()), __FILE__, __LINE__);
throw vtr::VtrError(vtr::string_fmt("No value found for variable '%s' from expression\n", var.data()), __FILE__, __LINE__);
}

return iter->second;
}

private:
vtr::flat_map<vtr::string_view, int> vars_;
vtr::flat_map<std::string_view, int> vars_;
};

/**** Enums ****/
Expand Down
17 changes: 8 additions & 9 deletions libs/libvtrutil/src/vtr_string_interning.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,11 @@
#include <cstdint>
#include <algorithm>
#include <array>
#include <string_view>

#include "vtr_strong_id.h"
#include "vtr_string_view.h"
#include "vtr_vector.h"
#include "vtr_hash.h"

namespace vtr {

Expand Down Expand Up @@ -132,15 +133,15 @@ class interned_string_iterator {
std::fill(parts_.begin(), parts_.end(), StringId());
part_idx_ = size_t(-1);
str_idx_ = size_t(-1);
view_ = vtr::string_view();
view_ = std::string_view();
}

const string_internment* internment_;
size_t num_parts_;
std::array<StringId, kMaxParts> parts_;
size_t part_idx_;
size_t str_idx_;
vtr::string_view view_;
std::string_view view_;
};

///@brief == operator
Expand Down Expand Up @@ -346,7 +347,7 @@ class string_internment {
* If interned_string is ever called with two strings of the same value,
* the interned_string will be equal.
*/
interned_string intern_string(vtr::string_view view) {
interned_string intern_string(std::string_view view) {
size_t num_parts = 1;
for (const auto& c : view) {
if (c == kSplitChar) {
Expand Down Expand Up @@ -381,12 +382,10 @@ class string_internment {

/**
* @brief Retrieve a string part based on id.
*
* This method should not generally be called directly.
*/
vtr::string_view get_string(StringId id) const {
auto& str = strings_[id];
return vtr::string_view(str.data(), str.size());
std::string_view get_string(StringId id) const {
return strings_[id];
}

///@brief Number of unique string parts stored.
Expand All @@ -395,7 +394,7 @@ class string_internment {
}

private:
StringId intern_one_string(vtr::string_view view) {
StringId intern_one_string(std::string_view view) {
temporary_.assign(view.begin(), view.end());
StringId next_id(strings_.size());
auto result = string_to_id_.insert(std::make_pair(temporary_, next_id));
Expand Down
Loading