add preload flag to device_rr_gsb and revert change to build fabric
This commit is contained in:
parent
a23860a6a7
commit
8372eead6a
|
@ -66,6 +66,9 @@ size_t DeviceRRGSB::get_num_cb_unique_module(const t_rr_type& cb_type) const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DeviceRRGSB::init_preload_flag() { preload_ = false; }
|
||||||
|
void DeviceRRGSB::set_preload_flag(const bool flag) { preload_ = flag; }
|
||||||
|
bool DeviceRRGSB::get_preload_flag() const { return preload_; }
|
||||||
/* Identify if a GSB actually exists at a location */
|
/* Identify if a GSB actually exists at a location */
|
||||||
bool DeviceRRGSB::is_gsb_exist(const RRGraphView& rr_graph,
|
bool DeviceRRGSB::is_gsb_exist(const RRGraphView& rr_graph,
|
||||||
const vtr::Point<size_t> coord) const {
|
const vtr::Point<size_t> coord) const {
|
||||||
|
@ -420,6 +423,7 @@ void DeviceRRGSB::clear() {
|
||||||
|
|
||||||
clear_sb_unique_module();
|
clear_sb_unique_module();
|
||||||
clear_sb_unique_module_id();
|
clear_sb_unique_module_id();
|
||||||
|
init_preload_flag();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceRRGSB::clear_unique_modules() {
|
void DeviceRRGSB::clear_unique_modules() {
|
||||||
|
@ -432,6 +436,7 @@ void DeviceRRGSB::clear_unique_modules() {
|
||||||
|
|
||||||
clear_sb_unique_module();
|
clear_sb_unique_module();
|
||||||
clear_sb_unique_module_id();
|
clear_sb_unique_module_id();
|
||||||
|
init_preload_flag();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceRRGSB::clear_gsb() {
|
void DeviceRRGSB::clear_gsb() {
|
||||||
|
|
|
@ -68,7 +68,9 @@ class DeviceRRGSB {
|
||||||
size_t get_cb_unique_module_index(const t_rr_type& cb_type,
|
size_t get_cb_unique_module_index(const t_rr_type& cb_type,
|
||||||
const vtr::Point<size_t>& coordinate) const;
|
const vtr::Point<size_t>& coordinate) const;
|
||||||
|
|
||||||
public: /* Mutators */
|
public: /* Mutators */
|
||||||
|
void set_preload_flag(const bool flag);
|
||||||
|
bool get_preload_flag() const;
|
||||||
void build_gsb_unique_module(); /* Add a switch block to the array, which will
|
void build_gsb_unique_module(); /* Add a switch block to the array, which will
|
||||||
automatically identify and update the lists
|
automatically identify and update the lists
|
||||||
of unique mirrors and rotatable mirrors */
|
of unique mirrors and rotatable mirrors */
|
||||||
|
@ -124,6 +126,7 @@ class DeviceRRGSB {
|
||||||
private: /* Internal cleaners */
|
private: /* Internal cleaners */
|
||||||
void clear_gsb(); /* clean the content */
|
void clear_gsb(); /* clean the content */
|
||||||
void clear_cb_unique_module(const t_rr_type& cb_type); /* clean the content */
|
void clear_cb_unique_module(const t_rr_type& cb_type); /* clean the content */
|
||||||
|
void init_preload_flag();
|
||||||
void clear_cb_unique_module_id(
|
void clear_cb_unique_module_id(
|
||||||
const t_rr_type& cb_type); /* clean the content */
|
const t_rr_type& cb_type); /* clean the content */
|
||||||
void clear_sb_unique_module(); /* clean the content */
|
void clear_sb_unique_module(); /* clean the content */
|
||||||
|
@ -162,6 +165,7 @@ class DeviceRRGSB {
|
||||||
|
|
||||||
private: /* Internal Data */
|
private: /* Internal Data */
|
||||||
std::vector<std::vector<RRGSB>> rr_gsb_;
|
std::vector<std::vector<RRGSB>> rr_gsb_;
|
||||||
|
bool preload_;
|
||||||
|
|
||||||
std::vector<std::vector<size_t>>
|
std::vector<std::vector<size_t>>
|
||||||
gsb_unique_module_id_; /* A map from rr_gsb to its unique mirror */
|
gsb_unique_module_id_; /* A map from rr_gsb to its unique mirror */
|
||||||
|
|
|
@ -102,7 +102,6 @@ int build_fabric_template(T& openfpga_ctx, const Command& cmd,
|
||||||
const CommandContext& cmd_context) {
|
const CommandContext& cmd_context) {
|
||||||
CommandOptionId opt_frame_view = cmd.option("frame_view");
|
CommandOptionId opt_frame_view = cmd.option("frame_view");
|
||||||
CommandOptionId opt_compress_routing = cmd.option("compress_routing");
|
CommandOptionId opt_compress_routing = cmd.option("compress_routing");
|
||||||
CommandOptionId opt_preload = cmd.option("preload_unique_blocks");
|
|
||||||
CommandOptionId opt_duplicate_grid_pin = cmd.option("duplicate_grid_pin");
|
CommandOptionId opt_duplicate_grid_pin = cmd.option("duplicate_grid_pin");
|
||||||
CommandOptionId opt_gen_random_fabric_key =
|
CommandOptionId opt_gen_random_fabric_key =
|
||||||
cmd.option("generate_random_fabric_key");
|
cmd.option("generate_random_fabric_key");
|
||||||
|
@ -146,13 +145,13 @@ int build_fabric_template(T& openfpga_ctx, const Command& cmd,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (true == cmd_context.option_enable(cmd, opt_compress_routing) &&
|
if (true == cmd_context.option_enable(cmd, opt_compress_routing) &&
|
||||||
false == cmd_context.option_enable(cmd, opt_preload)) {
|
false == openfpga_ctx.device_rr_gsb().get_preload_flag()) {
|
||||||
compress_routing_hierarchy_template<T>(
|
compress_routing_hierarchy_template<T>(
|
||||||
openfpga_ctx, cmd_context.option_enable(cmd, opt_verbose));
|
openfpga_ctx, cmd_context.option_enable(cmd, opt_verbose));
|
||||||
/* Update flow manager to enable compress routing */
|
/* Update flow manager to enable compress routing */
|
||||||
openfpga_ctx.mutable_flow_manager().set_compress_routing(true);
|
openfpga_ctx.mutable_flow_manager().set_compress_routing(true);
|
||||||
} else if (true == cmd_context.option_enable(cmd, opt_compress_routing) &&
|
} else if (true == cmd_context.option_enable(cmd, opt_compress_routing) &&
|
||||||
true == cmd_context.option_enable(cmd, opt_preload)) {
|
true == openfpga_ctx.device_rr_gsb().get_preload_flag()) {
|
||||||
openfpga_ctx.mutable_flow_manager().set_compress_routing(true);
|
openfpga_ctx.mutable_flow_manager().set_compress_routing(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -391,11 +391,6 @@ ShellCommandId add_build_fabric_command_template(
|
||||||
"Compress the number of unique routing modules by "
|
"Compress the number of unique routing modules by "
|
||||||
"identifying the unique GSBs");
|
"identifying the unique GSBs");
|
||||||
|
|
||||||
/* Add an option '--preload_unique_blocks' */
|
|
||||||
shell_cmd.add_option(
|
|
||||||
"preload_unique_blocks", false,
|
|
||||||
"preload unique routing modules from user input xml file");
|
|
||||||
|
|
||||||
/* Add an option '--duplicate_grid_pin' */
|
/* Add an option '--duplicate_grid_pin' */
|
||||||
shell_cmd.add_option("duplicate_grid_pin", false,
|
shell_cmd.add_option("duplicate_grid_pin", false,
|
||||||
"Duplicate the pins on the same side of a grid");
|
"Duplicate the pins on the same side of a grid");
|
||||||
|
|
|
@ -155,6 +155,7 @@ int read_xml_unique_blocks(DeviceRRGSB& device_rr_gsb, const char* file_name,
|
||||||
/* As preloading gsb hasn't been developed, we should build gsb using the
|
/* As preloading gsb hasn't been developed, we should build gsb using the
|
||||||
* preloaded cbs and sbs*/
|
* preloaded cbs and sbs*/
|
||||||
device_rr_gsb.build_gsb_unique_module();
|
device_rr_gsb.build_gsb_unique_module();
|
||||||
|
device_rr_gsb.set_preload_flag(true);
|
||||||
if (verbose_output) {
|
if (verbose_output) {
|
||||||
report_unique_module_status_read(device_rr_gsb, true);
|
report_unique_module_status_read(device_rr_gsb, true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ read_unique_blocks --file ${READ_UNIQUE_BLOCKS_XML} --verbose --type xml
|
||||||
# Build the module graph
|
# Build the module graph
|
||||||
# - Enabled compression on routing architecture modules
|
# - Enabled compression on routing architecture modules
|
||||||
# - Enable pin duplication on grid modules
|
# - Enable pin duplication on grid modules
|
||||||
build_fabric --compress_routing --preload_unique_blocks #--verbose
|
build_fabric --compress_routing #--verbose
|
||||||
|
|
||||||
#write unique blocks xml file
|
#write unique blocks xml file
|
||||||
write_unique_blocks --file ./write_unique_block.xml --verbose --type xml
|
write_unique_blocks --file ./write_unique_block.xml --verbose --type xml
|
||||||
|
|
Loading…
Reference in New Issue