mod prelod flag

This commit is contained in:
Lin 2024-08-30 12:51:56 +08:00
parent 9e491680e6
commit cb003f8833
6 changed files with 17 additions and 15 deletions

View File

@ -66,9 +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::init_is_dirty_flag() { is_dirty_ = false; }
void DeviceRRGSB::set_preload_flag(const bool flag) { preload_ = flag; } void DeviceRRGSB::set_is_dirty_flag(const bool flag) { is_dirty_ = flag; }
bool DeviceRRGSB::get_preload_flag() const { return preload_; } bool DeviceRRGSB::get_is_dirty_flag() const { return is_dirty_; }
/* 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 {
@ -363,6 +363,7 @@ void DeviceRRGSB::build_unique_module(const RRGraphView& rr_graph) {
build_cb_unique_module(rr_graph, CHANY); build_cb_unique_module(rr_graph, CHANY);
build_gsb_unique_module(); build_gsb_unique_module();
set_is_dirty_flag(true);
} }
void DeviceRRGSB::add_gsb_unique_module(const vtr::Point<size_t>& coordinate) { void DeviceRRGSB::add_gsb_unique_module(const vtr::Point<size_t>& coordinate) {
@ -423,7 +424,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(); init_is_dirty_flag();
} }
void DeviceRRGSB::clear_unique_modules() { void DeviceRRGSB::clear_unique_modules() {
@ -436,7 +437,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(); init_is_dirty_flag();
} }
void DeviceRRGSB::clear_gsb() { void DeviceRRGSB::clear_gsb() {

View File

@ -69,8 +69,8 @@ class DeviceRRGSB {
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); void set_is_dirty_flag(const bool flag);
bool get_preload_flag() const; bool get_is_dirty_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 */
@ -126,7 +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 init_is_dirty_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 */
@ -165,7 +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_; // is_valid bool is_dirty_ = false; // is_valid
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 */

View File

@ -155,7 +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); device_rr_gsb.set_is_dirty_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);
} }

View File

@ -123,6 +123,10 @@ void report_unique_module_status_write(const DeviceRRGSB& device_rr_gsb,
int write_xml_unique_blocks(const DeviceRRGSB& device_rr_gsb, const char* fname, int write_xml_unique_blocks(const DeviceRRGSB& device_rr_gsb, const char* fname,
bool verbose_output) { bool verbose_output) {
vtr::ScopedStartFinishTimer timer("Write unique blocks..."); vtr::ScopedStartFinishTimer timer("Write unique blocks...");
if (device_rr_gsb.get_is_dirty_flag() == false) {
VTR_LOG_ERROR("unique_blocks are empty!");
return CMD_EXEC_FATAL_ERROR;
}
/* Create a file handler */ /* Create a file handler */
std::fstream fp; std::fstream fp;
/* Open the file stream */ /* Open the file stream */

View File

@ -145,7 +145,7 @@ 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 == openfpga_ctx.device_rr_gsb().get_preload_flag()) { false == openfpga_ctx.device_rr_gsb().get_is_dirty_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 */

View File

@ -1273,11 +1273,8 @@ void add_setup_command_templates(openfpga::Shell<T>& shell,
/******************************** /********************************
* Command 'write_unique_blocks' * Command 'write_unique_blocks'
*/ */
std::vector<ShellCommandId> cmd_dependency_write_unique_blocks_command;
cmd_dependency_write_unique_blocks_command.push_back(build_fabric_cmd_id);
add_write_unique_blocks_command_template<T>( add_write_unique_blocks_command_template<T>(
shell, openfpga_setup_cmd_class, cmd_dependency_write_unique_blocks_command, shell, openfpga_setup_cmd_class, std::vector<ShellCommandId>(), hidden);
hidden);
} }
} /* end namespace openfpga */ } /* end namespace openfpga */