Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
c3ea108
clean some comments
soheilshahrouz Oct 10, 2025
cd680d7
clean get_track_to_pins a bit
soheilshahrouz Oct 10, 2025
8294d2d
remove direct pin to other layer's track connectivity
soheilshahrouz Oct 10, 2025
6857133
remove arch_inter_die_switch
soheilshahrouz Oct 10, 2025
271ed58
Merge remote-tracking branch 'origin/master' into temp_opin_chanz
soheilshahrouz Oct 28, 2025
bd51bd9
remove pin layer offset and ipin_cblock_switch_index_between_dice
soheilshahrouz Oct 28, 2025
2c37b80
remove layer_offset from rr_graph.cpp
soheilshahrouz Oct 28, 2025
5e5b118
Merge remote-tracking branch 'origin/master' into temp_opin_chanz
soheilshahrouz Oct 29, 2025
c5d509c
doxygen comment for process_fc()
soheilshahrouz Oct 29, 2025
a9b490a
Merge branch 'temp_arch_xml_naming_convention' into temp_opin_chanz
soheilshahrouz Oct 30, 2025
1f13be8
doxygen comment for label_wire_muxes()
soheilshahrouz Oct 30, 2025
4104e23
Fc for OPIN-CHANZ can be 1
soheilshahrouz Oct 30, 2025
027ab8b
update the 3d_full_opin arch file
soheilshahrouz Nov 1, 2025
9210a3d
add OPIN--CHANZ edges
soheilshahrouz Nov 1, 2025
f747061
move get_parallel_seg_index() to get_parallel_sets.cpp
soheilshahrouz Nov 1, 2025
230fead
move add_edges_opin_chanz to rr_graph_3d
soheilshahrouz Nov 1, 2025
0097c56
remove pins_connected() function and rename rr_graph_3d files to rr_g…
soheilshahrouz Nov 1, 2025
d2af592
move add_and_connect_non_3d_sg_links() to rr_graph_sg
soheilshahrouz Nov 1, 2025
21dfd5d
noexcept for strongid methods
soheilshahrouz Nov 2, 2025
6803792
use the correct layer for CHANZ nodes when initalizing src_opin_delays
soheilshahrouz Nov 2, 2025
1ede4c4
allow OPIN to be connected to CHANZ in check_adjacent()
soheilshahrouz Nov 2, 2025
ea14ba1
make format
soheilshahrouz Nov 2, 2025
78afdc2
add find_pin_nodes_at_side() to RRSpatialLookup
soheilshahrouz Nov 3, 2025
0dcb2fa
add add_edges_opin_chanz_per_side()
soheilshahrouz Nov 3, 2025
72e130c
update inter_layer_connections_limited_to_opin() to check OPIN-CHANZ
soheilshahrouz Nov 4, 2025
3610503
some cleanups in rr_graph files
soheilshahrouz Nov 4, 2025
a577480
add rr_graph_opin_chan_edges files
soheilshahrouz Nov 5, 2025
109896e
doxygen comment for add_opin_chan_edges()
soheilshahrouz Nov 5, 2025
d7b67ea
make format
soheilshahrouz Nov 5, 2025
9a12593
doxygen comments for some function in rr_graph_opin_chan_edges
soheilshahrouz Nov 5, 2025
fd6d5c5
add rr_graph_chan_chan_edges
soheilshahrouz Nov 5, 2025
63cbe06
add rr_chanz_segment_width to DeviceContext
soheilshahrouz Nov 5, 2025
5d477c1
calculate acc_tile_num_inter_die_conn_ using pre-computed chanz width
soheilshahrouz Nov 5, 2025
27cbc2a
Merge remote-tracking branch 'origin/master' into temp_opin_chanz
soheilshahrouz Nov 6, 2025
eadc8fe
update expected_delay_cost before VTR_ASSERT
soheilshahrouz Nov 6, 2025
2657db0
add sg and z segment to 3d_k4_n4_90nm
soheilshahrouz Nov 7, 2025
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
14 changes: 1 addition & 13 deletions libs/libarchfpga/src/echo_arch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,6 @@
#include "vtr_memory.h"
#include "vtr_assert.h"

/// @brief indices to lookup IPIN connection block switch name
constexpr int ipin_cblock_switch_index_within_die = 0;
constexpr int ipin_cblock_switch_index_between_dice = 1;

void PrintArchInfo(FILE* Echo, const t_arch* arch);
static void print_model(FILE* echo, const t_model& model);
static void PrintPb_types_rec(FILE* Echo, const t_pb_type* pb_type, int level, const LogicalModels& models);
Expand Down Expand Up @@ -198,15 +194,7 @@ void PrintArchInfo(FILE* Echo, const t_arch* arch) {
break;
}

fprintf(Echo, "\tInput Connect Block Switch Name Within a Same Die: %s\n", arch->ipin_cblock_switch_name[ipin_cblock_switch_index_within_die].c_str());

//if there is more than one layer available, print the connection block switch name that is used for connection between two dice
for (const t_grid_def& layout : arch->grid_layouts) {
int num_layers = (int)layout.layers.size();
if (num_layers > 1) {
fprintf(Echo, "\tInput Connect Block Switch Name Between Two Dice: %s\n", arch->ipin_cblock_switch_name[ipin_cblock_switch_index_between_dice].c_str());
}
}
fprintf(Echo, "\tInput Connect Block Switch Name: %s\n", arch->ipin_cblock_switch_name.c_str());

fprintf(Echo, "*************************************************\n\n");
//Switch list
Expand Down
16 changes: 2 additions & 14 deletions libs/libarchfpga/src/physical_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -560,7 +560,6 @@ struct t_physical_tile_type {
int primitive_class_starting_idx = -1;
std::unordered_map<int, t_class> primitive_class_inf; // [primitive_class_num] -> primitive_class_inf

std::vector<int> pin_layer_offset; // [0..num_pins-1]
std::vector<int> pin_width_offset; // [0..num_pins-1]
std::vector<int> pin_height_offset; // [0..num_pins-1]
std::vector<int> pin_class; // [0..num_pins-1]
Expand Down Expand Up @@ -1609,14 +1608,6 @@ struct t_segment_inf {
*/
short arch_opin_switch_dec = ARCH_FPGA_UNDEFINED_VAL;

/**
* @brief Index of the switch type that connects output pins (OPINs) to this
* segment from another die (layer). Note that this index is in relation to
* the switches from the architecture file, not the expanded list of switches
* that is built at the end of build_rr_graph.
*/
short arch_inter_die_switch = ARCH_FPGA_UNDEFINED_VAL;

/**
* @brief The fraction of logic blocks along its length to which this segment can connect.
* (i.e. internal population).
Expand Down Expand Up @@ -2050,11 +2041,8 @@ struct t_arch {
std::vector<t_lut_cell> lut_cells;
std::unordered_map<std::string, std::vector<t_lut_element>> lut_elements;

// The name of the switch used for the input connection block (i.e. to
// connect routing tracks to block pins). tracks can be connected to
// ipins through the same die or from other dice, each of these
// types of connections requires a different switch, all names should correspond to a switch in Switches.
std::vector<std::string> ipin_cblock_switch_name;
// The name of the switch used for the input connection block (i.e. to connect routing tracks to block pins).
std::string ipin_cblock_switch_name;

/// Set of potential device layouts
std::vector<t_grid_def> grid_layouts;
Expand Down
18 changes: 0 additions & 18 deletions libs/libarchfpga/src/physical_types_util.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -604,24 +604,6 @@ bool is_opin(int ipin, t_physical_tile_type_ptr type) {
return false;
}

bool is_pin_conencted_to_layer(t_physical_tile_type_ptr type, int ipin, int from_layer, int to_layer, unsigned num_of_avail_layer) {
// if type is empty, there is no pins
if (type->is_empty()) {
return false;
}

// ipin should be a valid pin in physical type
VTR_ASSERT(ipin < type->num_pins);
unsigned pin_layer = from_layer + type->pin_layer_offset[ipin];
// if pin_offset specifies a layer that doesn't exist in arch file, we do a wrap around
pin_layer = (pin_layer < num_of_avail_layer) ? pin_layer : pin_layer % num_of_avail_layer;
if (from_layer == to_layer || int(pin_layer) == to_layer) {
return true;
}

return false;
}

std::string block_type_pin_index_to_name(t_physical_tile_type_ptr type, int pin_physical_num, bool is_flat) {
int max_ptc = get_tile_pin_max_ptc(type, is_flat);
VTR_ASSERT(pin_physical_num < max_ptc);
Expand Down
3 changes: 0 additions & 3 deletions libs/libarchfpga/src/physical_types_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,6 @@
///@brief Returns true if the absolute physical pin index is an output of the given physical tile type
bool is_opin(int ipin, t_physical_tile_type_ptr type);

///@brief Returns true if the specified pin is located at "from_layer" and it is connected to "to_layer"
bool is_pin_conencted_to_layer(t_physical_tile_type_ptr type, int ipin, int from_layer, int to_layer, unsigned num_of_avail_layer);

/**
* @brief Returns the corresponding physical pin based on the input parameters:
*
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 @@ -2325,7 +2325,7 @@ struct ArchReader {
arch_->Chans.chan_y_dist.width = 0;
arch_->Chans.chan_y_dist.xpeak = 0;
arch_->Chans.chan_y_dist.dc = 0;
arch_->ipin_cblock_switch_name.push_back(std::string("generic"));
arch_->ipin_cblock_switch_name = "generic";
arch_->sb_type = e_switch_block_type::WILTON;
arch_->Fs = 3;
default_fc_.specified = true;
Expand Down
Loading
Loading