Skip to content

[WIP] VIB Upgrades for Tileable Routing Resource Graph on OpenFPGA #2637

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 150 commits into from
Jan 13, 2025
Merged
Show file tree
Hide file tree
Changes from 131 commits
Commits
Show all changes
150 commits
Select commit Hold shift + click to select a range
b49f82f
Update device_grid_annotation.cpp
Wang-Yuanqi-source May 26, 2024
7cdb3f7
Update tileable_chan_details_builder.cpp
Wang-Yuanqi-source May 26, 2024
c8d6be8
Update tileable_rr_graph_node_builder.cpp
Wang-Yuanqi-source May 26, 2024
f328220
Update tileable_rr_graph_gsb.h
Wang-Yuanqi-source May 26, 2024
8a83ee9
Update tileable_rr_graph_edge_builder.cpp
Wang-Yuanqi-source May 26, 2024
5e23e1b
Update tileable_rr_graph_gsb.cpp
Wang-Yuanqi-source May 26, 2024
063a13d
Update tileable_rr_graph_gsb.h
Wang-Yuanqi-source May 26, 2024
48df84d
Update tileable_rr_graph_builder.cpp
Wang-Yuanqi-source May 26, 2024
9e11eb8
Update read_xml_arch_file.cpp
Wang-Yuanqi-source May 26, 2024
9c6fc7a
Update physical_types.h
Wang-Yuanqi-source May 26, 2024
b7c24d6
Update tileable_chan_details_builder.cpp
Wang-Yuanqi-source May 26, 2024
e9e7bfe
Update chan_node_details.cpp
Wang-Yuanqi-source May 26, 2024
260572e
Update chan_node_details.h
Wang-Yuanqi-source May 26, 2024
ce1b3b4
Update tileable_rr_graph_edge_builder.h
Wang-Yuanqi-source May 26, 2024
dc6aa86
Update tileable_rr_graph_edge_builder.cpp
Wang-Yuanqi-source May 26, 2024
6a1f9f8
Update tileable_rr_graph_edge_builder.h
Wang-Yuanqi-source May 26, 2024
0d9e9fd
Update tileable_rr_graph_gsb.h
Wang-Yuanqi-source May 26, 2024
042bef4
Update rr_graph_view.h
Wang-Yuanqi-source May 26, 2024
77f802e
Update rr_graph_storage.h
Wang-Yuanqi-source May 26, 2024
ba5cd69
Update rr_graph_storage.cpp
Wang-Yuanqi-source May 26, 2024
7ffd299
Update rr_graph_builder.h
Wang-Yuanqi-source May 26, 2024
155716f
Update read_xml_arch_file.cpp
Wang-Yuanqi-source May 26, 2024
7bd0433
Update physical_types.h
Wang-Yuanqi-source Jun 9, 2024
a0ecbce
Update read_xml_arch_file.cpp
Wang-Yuanqi-source Jun 9, 2024
16ab238
Update SetupGrid.cpp
Wang-Yuanqi-source Jun 9, 2024
35cccdc
Update vpr_context.h
Wang-Yuanqi-source Jun 9, 2024
7af8feb
Update SetupGrid.h
Wang-Yuanqi-source Jun 9, 2024
56a7e68
Update vpr_api.cpp
Wang-Yuanqi-source Jun 9, 2024
98e7992
Update tileable_rr_graph_edge_builder.cpp
Wang-Yuanqi-source Jun 9, 2024
5b32f84
Update tileable_rr_graph_builder.cpp
Wang-Yuanqi-source Jun 9, 2024
87d4b59
Update tileable_rr_graph_edge_builder.h
Wang-Yuanqi-source Jun 9, 2024
c23795c
Update tileable_rr_graph_node_builder.cpp
Wang-Yuanqi-source Jun 9, 2024
873469f
Update tileable_rr_graph_node_builder.h
Wang-Yuanqi-source Jun 9, 2024
307fb0b
Update read_xml_arch_file.cpp
Wang-Yuanqi-source Jun 15, 2024
77dfbe9
Update tileable_rr_graph_builder.cpp
Wang-Yuanqi-source Jun 15, 2024
55c4835
Update check_rr_graph.cpp
Wang-Yuanqi-source Jun 15, 2024
82151d4
Update check_route.cpp
Wang-Yuanqi-source Jun 15, 2024
fffdc02
Update rr_graph_uxsdcxx_serializer.h
Wang-Yuanqi-source Jun 15, 2024
71c60e2
Update rr_graph_uxsdcxx_interface.h
Wang-Yuanqi-source Jun 15, 2024
14eedda
Update rr_graph.cpp
Wang-Yuanqi-source Jun 15, 2024
ac8c197
Update rr_graph2.cpp
Wang-Yuanqi-source Jun 15, 2024
ed15d8a
Update vpr_utils.cpp
Wang-Yuanqi-source Jun 15, 2024
e508528
Update connection_router.cpp
Wang-Yuanqi-source Jun 15, 2024
08268fe
Update overuse_report.cpp
Wang-Yuanqi-source Jun 15, 2024
6abd0b7
Update vpr_utils.h
Wang-Yuanqi-source Jun 15, 2024
f80e4c3
Update router_lookahead_map_utils.cpp
Wang-Yuanqi-source Jun 15, 2024
92fd5af
Update router_lookahead_map.cpp
Wang-Yuanqi-source Jun 15, 2024
faf2ef3
Update rr_graph_uxsdcxx.h
Wang-Yuanqi-source Jun 15, 2024
601718a
Update rr_spatial_lookup.cpp
Wang-Yuanqi-source Jun 15, 2024
0541865
Update check_rr_graph.h
Wang-Yuanqi-source Jun 15, 2024
a2777e6
Update tileable_rr_graph_edge_builder.cpp
Wang-Yuanqi-source Jun 15, 2024
58dce81
Update tileable_rr_graph_gsb.cpp
Wang-Yuanqi-source Jun 15, 2024
5bb56c7
Update tileable_rr_graph_gsb.h
Wang-Yuanqi-source Jun 15, 2024
0929cd0
Update rr_node_types.h
Wang-Yuanqi-source Jun 15, 2024
6121423
Update rr_graph_builder.h
Wang-Yuanqi-source Jun 15, 2024
1d0be82
Update rr_graph_storage.cpp
Wang-Yuanqi-source Jun 15, 2024
e904c86
Update rr_graph_storage.h
Wang-Yuanqi-source Jun 15, 2024
25b096d
Update rr_graph_cost.h
Wang-Yuanqi-source Jun 15, 2024
03556c6
Merge branch 'openfpga' into patch-1
Wang-Yuanqi-source Jul 2, 2024
75e8676
Update alloc_and_load_rr_indexed_data.cpp
Wang-Yuanqi-source Jul 13, 2024
0f81e94
Update read_route.cpp
Wang-Yuanqi-source Jul 13, 2024
9e0ae28
Update describe_rr_node.cpp
Wang-Yuanqi-source Jul 13, 2024
b65a8e2
Update check_route.cpp
Wang-Yuanqi-source Jul 13, 2024
abaec29
Update rr_graph_area.cpp
Wang-Yuanqi-source Jul 13, 2024
e6b7e7d
Update tileable_rr_graph_edge_builder.cpp
Wang-Yuanqi-source Jul 13, 2024
30dae5a
Update tileable_chan_details_builder.cpp
Wang-Yuanqi-source Jul 13, 2024
cc8816a
Update read_xml_arch_file.cpp
Wang-Yuanqi-source Jul 14, 2024
70e4f5a
Update vpr_utils.h
Wang-Yuanqi-source Jul 14, 2024
cabf2ea
Update vpr_utils.cpp
Wang-Yuanqi-source Jul 14, 2024
0ead1a8
Update router_lookahead_map_utils.cpp
Wang-Yuanqi-source Jul 14, 2024
07627be
Update tileable_rr_graph_builder.cpp
Wang-Yuanqi-source Jul 14, 2024
efb99fc
Update vpr_utils.cpp
Wang-Yuanqi-source Jul 14, 2024
510f4e2
Update SetupGrid.h
Wang-Yuanqi-source Jul 14, 2024
993aca5
Update SetupGrid.h
Wang-Yuanqi-source Jul 14, 2024
68e4d65
Merge branch 'openfpga' into patch-1
Wang-Yuanqi-source Jul 30, 2024
1afa2f5
Create vib_inf.cpp
Wang-Yuanqi-source Oct 22, 2024
f3deaa6
Create vib_inf.h
Wang-Yuanqi-source Oct 22, 2024
ccb5b56
Update rr_graph_storage.h
Wang-Yuanqi-source Oct 22, 2024
3769b62
Update physical_types.h
Wang-Yuanqi-source Oct 22, 2024
9e521a0
Update read_xml_arch_file.cpp
Wang-Yuanqi-source Oct 22, 2024
cb22a8a
Update check_rr_graph.cpp
Wang-Yuanqi-source Oct 22, 2024
487ed26
Update check_rr_graph.h
Wang-Yuanqi-source Oct 22, 2024
6382aaf
Update rr_graph_uxsdcxx_serializer.h
Wang-Yuanqi-source Oct 22, 2024
bb2d5cf
Update SetupGrid.cpp
Wang-Yuanqi-source Oct 22, 2024
b3bb7c8
Update SetupGrid.h
Wang-Yuanqi-source Oct 22, 2024
5b27ab8
Update vpr_api.cpp
Wang-Yuanqi-source Oct 22, 2024
345a27c
Update vpr_context.h
Wang-Yuanqi-source Oct 22, 2024
eeb448a
Update connection_router.cpp
Wang-Yuanqi-source Oct 22, 2024
0d7cacd
Update overuse_report.cpp
Wang-Yuanqi-source Oct 22, 2024
6f773cd
Update router_lookahead_map_utils.cpp
Wang-Yuanqi-source Oct 22, 2024
f7427aa
Update router_lookahead_map.cpp
Wang-Yuanqi-source Oct 22, 2024
d91bd9f
Update rr_graph.cpp
Wang-Yuanqi-source Oct 22, 2024
ce412a4
Update tileable_rr_graph_builder.cpp
Wang-Yuanqi-source Oct 22, 2024
d0f19a0
Update tileable_rr_graph_edge_builder.cpp
Wang-Yuanqi-source Oct 22, 2024
f117218
Update tileable_rr_graph_edge_builder.h
Wang-Yuanqi-source Oct 22, 2024
0e0c9af
Update tileable_rr_graph_gsb.cpp
Wang-Yuanqi-source Oct 22, 2024
9b8a3f2
Update tileable_rr_graph_gsb.h
Wang-Yuanqi-source Oct 22, 2024
ca9e9f1
Update tileable_rr_graph_node_builder.cpp
Wang-Yuanqi-source Oct 22, 2024
3f5633b
Update tileable_rr_graph_node_builder.h
Wang-Yuanqi-source Oct 22, 2024
317e2fe
Update vpr_utils.cpp
Wang-Yuanqi-source Oct 22, 2024
4b91e02
Update vpr_utils.h
Wang-Yuanqi-source Oct 22, 2024
0f34455
Update tileable_chan_details_builder.cpp
Wang-Yuanqi-source Oct 22, 2024
3937e3c
Merge branch 'openfpga' into patch-1
Wang-Yuanqi-source Oct 24, 2024
3a3f24e
Update tileable_rr_graph_gsb.cpp
Wang-Yuanqi-source Nov 4, 2024
a757254
Update rr_spatial_lookup.cpp
Wang-Yuanqi-source Nov 4, 2024
b447186
Update rr_gsb.cpp
Wang-Yuanqi-source Nov 4, 2024
35b4200
Update tileable_rr_graph_gsb.h
Wang-Yuanqi-source Nov 4, 2024
d5d2372
Update tileable_rr_graph_node_builder.cpp
Wang-Yuanqi-source Nov 4, 2024
8afea46
Update tileable_rr_graph_node_builder.h
Wang-Yuanqi-source Nov 4, 2024
1d45f3b
Update check_rr_graph.cpp
Wang-Yuanqi-source Nov 4, 2024
e8c88fa
Update check_rr_graph.h
Wang-Yuanqi-source Nov 4, 2024
7c6d85c
Update vib_inf.h
Wang-Yuanqi-source Nov 4, 2024
6075e31
Update physical_types.h
Wang-Yuanqi-source Nov 4, 2024
3941eef
Update vib_inf.cpp
Wang-Yuanqi-source Nov 4, 2024
6be2c9a
Update read_xml_arch_file.cpp
Wang-Yuanqi-source Nov 4, 2024
391d044
Update SetupVPR.cpp
Wang-Yuanqi-source Nov 4, 2024
6f681c2
Update SetupGrid.cpp
Wang-Yuanqi-source Nov 4, 2024
463bdd0
Update SetupGrid.h
Wang-Yuanqi-source Nov 4, 2024
6359b5c
Create SetupVibGrid.cpp
Wang-Yuanqi-source Nov 4, 2024
c0a2736
Create SetupVibGrid.h
Wang-Yuanqi-source Nov 4, 2024
52edaf9
Update vpr_api.cpp
Wang-Yuanqi-source Nov 4, 2024
60bc5a0
Update vpr_context.h
Wang-Yuanqi-source Nov 4, 2024
b9d587e
Update rr_graph.xsd
Wang-Yuanqi-source Nov 4, 2024
5ad2329
Update tileable_rr_graph_edge_builder.cpp
Wang-Yuanqi-source Nov 4, 2024
cbcdf0e
Update tileable_rr_graph_edge_builder.h
Wang-Yuanqi-source Nov 4, 2024
84faf43
Update rr_graph.cpp
Wang-Yuanqi-source Nov 4, 2024
4e046ef
Update rr_graph_uxsdcxx_serializer.h
Wang-Yuanqi-source Nov 4, 2024
60bee8f
Update overuse_report.cpp
Wang-Yuanqi-source Nov 4, 2024
0b4cfc2
Update router_lookahead_map.cpp
Wang-Yuanqi-source Nov 4, 2024
a182a76
Update router_lookahead_map_utils.cpp
Wang-Yuanqi-source Nov 4, 2024
6343061
Update rr_gsb.h
Wang-Yuanqi-source Nov 4, 2024
3bb9068
Update tileable_rr_graph_node_builder.cpp
Wang-Yuanqi-source Nov 25, 2024
be709d2
Update SetupVibGrid.cpp
Wang-Yuanqi-source Nov 25, 2024
d7d93c9
Update tileable_rr_graph_node_builder.h
Wang-Yuanqi-source Nov 25, 2024
91960e2
Update tileable_rr_graph_builder.cpp
Wang-Yuanqi-source Nov 25, 2024
729ae80
Update tileable_rr_graph_edge_builder.cpp
Wang-Yuanqi-source Nov 25, 2024
7a0dfbc
Update tileable_rr_graph_gsb.cpp
Wang-Yuanqi-source Nov 25, 2024
2e50bfb
Update rr_gsb.h
Wang-Yuanqi-source Nov 25, 2024
9dac8c4
Update tileable_rr_graph_gsb.h
Wang-Yuanqi-source Nov 25, 2024
a4479e5
Update tileable_rr_graph_edge_builder.h
Wang-Yuanqi-source Nov 25, 2024
9ae8a99
Update vib_inf.h
Wang-Yuanqi-source Nov 25, 2024
230fe0f
Update vib_inf.cpp
Wang-Yuanqi-source Nov 25, 2024
1678907
Update tileable_rr_graph_gsb.cpp
Wang-Yuanqi-source Nov 25, 2024
cfe7c2a
Update index.rst
Wang-Yuanqi-source Nov 29, 2024
35a82e7
Create VIB.rst
Wang-Yuanqi-source Nov 29, 2024
e2fff38
Add files via upload
Wang-Yuanqi-source Nov 29, 2024
8dae0c3
Create vib_test_arch.xml
Wang-Yuanqi-source Nov 29, 2024
481efce
Create music.blif
Wang-Yuanqi-source Nov 29, 2024
9240ab6
Add files via upload
Wang-Yuanqi-source Nov 29, 2024
b96878a
Merge branch 'openfpga' into patch-1
Wang-Yuanqi-source Dec 17, 2024
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
26 changes: 24 additions & 2 deletions libs/libarchfpga/src/physical_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@
#include "logic_types.h"
#include "clock_types.h"

#include "vib_inf.h"

//Forward declarations
struct t_clock_arch;
struct t_clock_network;
Expand Down Expand Up @@ -1629,7 +1631,16 @@ enum e_Fc_type {
* For backward compatibility, this attribute is optional. If not *
* specified, the resource type for the segment is considered to *
* be GENERAL. *
* meta: Table storing extra arbitrary metadata attributes. */
* meta: Table storing extra arbitrary metadata attributes. *
*
*
* New added parameters for bend wires: *
* isbend: This segment is bend or not *
* bend: The bend type of the segment, "-"-0, "U"-1, "D"-2 *
* For example: bend pattern <- - U ->; corresponding bend: [0,0,1,0] *
* part_len: Divide the segment into several parts based on bend position. *
* For example: length-5 bend segment: <- - U ->; *
* Corresponding part_len: [3,2] */
struct t_segment_inf {
std::string name;
int frequency;
Expand All @@ -1648,6 +1659,9 @@ struct t_segment_inf {
enum e_parallel_axis parallel_axis;
std::vector<bool> cb;
std::vector<bool> sb;
bool isbend;
std::vector<int> bend;
std::vector<int> part_len;
int seg_index;
enum SegResType res_type = SegResType::GENERAL;
//float Cmetal_per_m; /* Wire capacitance (per meter) */
Expand Down Expand Up @@ -2045,7 +2059,9 @@ struct t_noc_inf {
std::string noc_router_tile_name;
};

/* Detailed routing architecture */


/* Detailed routing architecture */
struct t_arch {
/** Stores unique strings used as key and values in <metadata> tags,
* i.e. implements a flyweight pattern to save memory.*/
Expand Down Expand Up @@ -2127,10 +2143,16 @@ struct t_arch {
//If the layout is not specified in the command line options, this variable will be set to "auto"
std::string device_layout;

std::vector<t_vib_grid_def> vib_grid_layouts;

t_clock_arch_spec clock_arch; // Clock related data types

// if we have an embedded NoC in the architecture, then we store it here
t_noc_inf* noc = nullptr;

// added for vib
//bool is_vib_arch = false;
std::vector<VibInf> vib_infs;
};

#endif
1,128 changes: 1,128 additions & 0 deletions libs/libarchfpga/src/read_xml_arch_file.cpp

Large diffs are not rendered by default.

127 changes: 127 additions & 0 deletions libs/libarchfpga/src/vib_inf.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
#include "vib_inf.h"
// #include "vtr_math.h"
// #include "vtr_util.h"
// #include "vtr_log.h"

// #include "arch_util.h"

VibInf::VibInf() {
name_.clear();
pbtype_name_.clear();
seg_group_num_ = 0;
switch_idx_ = -1;
seg_groups_.clear();
first_stages_.clear();
second_stages_.clear();
}

void VibInf::set_name(const std::string name) {
VTR_ASSERT(!name.empty());
name_ = name;
}

void VibInf::set_pbtype_name(const std::string pbtype_name) {
VTR_ASSERT(!pbtype_name.empty());
pbtype_name_ = pbtype_name;
}

void VibInf::set_seg_group_num(const int seg_group_num) {
VTR_ASSERT(seg_group_num >= 0);
seg_group_num_ = seg_group_num;
}

void VibInf::set_switch_idx(const int switch_idx) {
VTR_ASSERT(switch_idx != -1);
switch_idx_ = switch_idx;
}

void VibInf::set_switch_name(const std::string switch_name) {
VTR_ASSERT(!switch_name.empty());
switch_name_ = switch_name;
}

void VibInf::set_seg_groups(const std::vector<t_seg_group> seg_groups) {
VTR_ASSERT(!seg_groups.empty());
seg_groups_.clear();
for(auto seg_group : seg_groups) {
seg_groups_.push_back(seg_group);
}
}

void VibInf::push_seg_group(const t_seg_group seg_group) {
VTR_ASSERT(!seg_group.name.empty());
seg_groups_.push_back(seg_group);
}

void VibInf::set_first_stages(const std::vector<t_first_stage_mux_inf> first_stages) {
VTR_ASSERT(!first_stages.empty());
first_stages_.clear();
for(auto first_stage : first_stages) {
first_stages_.push_back(first_stage);
}
}

void VibInf::push_first_stage(const t_first_stage_mux_inf first_stage) {
VTR_ASSERT(!first_stage.mux_name.empty());
first_stages_.push_back(first_stage);
}

void VibInf::set_second_stages(const std::vector<t_second_stage_mux_inf> second_stages) {
VTR_ASSERT(!second_stages.empty());
second_stages_.clear();
for(auto second_stage : second_stages) {
second_stages_.push_back(second_stage);
}
}

void VibInf::push_second_stage(const t_second_stage_mux_inf second_stage) {
VTR_ASSERT(!second_stage.mux_name.empty());
second_stages_.push_back(second_stage);
}

std::string VibInf::get_name() const{
VTR_ASSERT(!name_.empty());
return name_;
}

std::string VibInf::get_pbtype_name() const{
VTR_ASSERT(!pbtype_name_.empty());
return pbtype_name_;
}

int VibInf::get_seg_group_num() const{
VTR_ASSERT(seg_group_num_ >= 0);
return seg_group_num_;
}

int VibInf::get_switch_idx() const{
VTR_ASSERT(switch_idx_ != -1);
return switch_idx_;
}

std::string VibInf::get_switch_name() const{
VTR_ASSERT(!switch_name_.empty());
return switch_name_;
}

std::vector<t_seg_group> VibInf::get_seg_groups() const{
VTR_ASSERT(!seg_groups_.empty());
return seg_groups_;
}

std::vector<t_first_stage_mux_inf> VibInf::get_first_stages() const{
VTR_ASSERT(!first_stages_.empty());
return first_stages_;
}

std::vector<t_second_stage_mux_inf> VibInf::get_second_stages() const{
VTR_ASSERT(!second_stages_.empty());
return second_stages_;
}


VibDeviceGrid::VibDeviceGrid(std::string grid_name, vtr::NdMatrix<const VibInf*, 3> vib_grid)
: name_(std::move(grid_name))
, vib_grid_(std::move(vib_grid)) {

}
Loading
Loading