mod comments
This commit is contained in:
parent
5153cee4dd
commit
67c7c2da66
|
@ -2,11 +2,9 @@
|
|||
* Member functions for class DeviceRRGSB
|
||||
***********************************************************************/
|
||||
|
||||
#include "device_rr_gsb.h"
|
||||
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
|
||||
#include "device_rr_gsb.h"
|
||||
#include "rr_gsb_utils.h"
|
||||
#include "vtr_assert.h"
|
||||
#include "vtr_log.h"
|
||||
|
@ -582,20 +580,19 @@ size_t DeviceRRGSB::get_cb_unique_module_index(
|
|||
void DeviceRRGSB::preload_unique_cbx_module(
|
||||
const vtr::Point<size_t> block_coordinate,
|
||||
const std::vector<vtr::Point<size_t>> instance_coords) {
|
||||
/* Add to list if this is a unique mirror*/
|
||||
/*check whether the preloaded value exceeds the limit */
|
||||
size_t limit_x = cbx_unique_module_id_.size();
|
||||
size_t limit_y = cbx_unique_module_id_[0].size();
|
||||
|
||||
VTR_ASSERT(block_coordinate.x() < limit_x);
|
||||
VTR_ASSERT(block_coordinate.y() < limit_y);
|
||||
add_cb_unique_module(CHANX, block_coordinate);
|
||||
/* Record the id of unique mirror */
|
||||
/* preload the unique block */
|
||||
set_cb_unique_module_id(CHANX, block_coordinate,
|
||||
get_num_cb_unique_module(CHANX) - 1);
|
||||
|
||||
/* Traverse the unique_mirror list and set up its module id */
|
||||
/* preload the instances of the unique block. Instance will have the same id
|
||||
* as the unique block */
|
||||
for (auto instance_location : instance_coords) {
|
||||
/* Record the id of unique mirror */
|
||||
VTR_ASSERT(instance_location.x() < limit_x);
|
||||
VTR_ASSERT(instance_location.y() < limit_y);
|
||||
set_cb_unique_module_id(
|
||||
|
@ -607,20 +604,20 @@ void DeviceRRGSB::preload_unique_cbx_module(
|
|||
void DeviceRRGSB::preload_unique_cby_module(
|
||||
const vtr::Point<size_t> block_coordinate,
|
||||
const std::vector<vtr::Point<size_t>> instance_coords) {
|
||||
/* Add to list if this is a unique mirror*/
|
||||
/*check whether the preloaded value exceeds the limit */
|
||||
size_t limit_x = cby_unique_module_id_.size();
|
||||
size_t limit_y = cby_unique_module_id_[0].size();
|
||||
|
||||
VTR_ASSERT(block_coordinate.x() < limit_x);
|
||||
VTR_ASSERT(block_coordinate.y() < limit_y);
|
||||
add_cb_unique_module(CHANY, block_coordinate);
|
||||
/* Record the id of unique mirror */
|
||||
/* preload the unique block */
|
||||
set_cb_unique_module_id(CHANY, block_coordinate,
|
||||
get_num_cb_unique_module(CHANY) - 1);
|
||||
|
||||
/* Traverse the unique_mirror list and set up its module id */
|
||||
/* preload the instances of the unique block. Instance will have the same id
|
||||
* as the unique block */
|
||||
for (auto instance_location : instance_coords) {
|
||||
/* Record the id of unique mirror */
|
||||
VTR_ASSERT(instance_location.x() < limit_x);
|
||||
VTR_ASSERT(instance_location.y() < limit_y);
|
||||
set_cb_unique_module_id(
|
||||
|
@ -632,7 +629,7 @@ void DeviceRRGSB::preload_unique_cby_module(
|
|||
void DeviceRRGSB::preload_unique_sb_module(
|
||||
const vtr::Point<size_t> block_coordinate,
|
||||
const std::vector<vtr::Point<size_t>> instance_coords) {
|
||||
/*input block coordinate should be within gsb coord range*/
|
||||
/*check whether the preloaded value exceeds the limit */
|
||||
VTR_ASSERT(block_coordinate.x() < sb_unique_module_id_.size());
|
||||
VTR_ASSERT(block_coordinate.y() < sb_unique_module_id_[0].size());
|
||||
sb_unique_module_.push_back(block_coordinate);
|
||||
|
@ -650,6 +647,11 @@ void DeviceRRGSB::preload_unique_sb_module(
|
|||
}
|
||||
}
|
||||
|
||||
/*The following four functions will allow us to get
|
||||
The map between (id,mirror instance coord), (id, unique block coord)
|
||||
As the unique block and its mirror instances share the same id, we can get the
|
||||
map between (unique block coord, mirror instance coord)
|
||||
*/
|
||||
void DeviceRRGSB::get_id_unique_sb_block_map(
|
||||
std::map<int, vtr::Point<size_t>>& id_unique_block_map) const {
|
||||
for (size_t id = 0; id < get_num_sb_unique_module(); ++id) {
|
||||
|
|
|
@ -494,7 +494,7 @@ int read_unique_blocks_template(T& openfpga_ctx, const Command& cmd,
|
|||
|
||||
std::string file_name = cmd_context.option_value(cmd, opt_file);
|
||||
std::string file_type = cmd_context.option_value(cmd, opt_type);
|
||||
/* Write hierarchy to a file */
|
||||
/* read unique blocks from a file */
|
||||
if (file_type == "xml") {
|
||||
return read_xml_unique_blocks(openfpga_ctx, file_name.c_str(),
|
||||
file_type.c_str(),
|
||||
|
@ -521,7 +521,7 @@ int write_unique_blocks_template(T& openfpga_ctx, const Command& cmd,
|
|||
std::string file_name = cmd_context.option_value(cmd, opt_file);
|
||||
std::string file_type = cmd_context.option_value(cmd, opt_type);
|
||||
|
||||
/* Write hierarchy to a file */
|
||||
/* Write unique blocks to a file */
|
||||
return write_xml_unique_blocks(openfpga_ctx, file_name.c_str(),
|
||||
file_type.c_str(),
|
||||
cmd_context.option_enable(cmd, opt_verbose));
|
||||
|
|
|
@ -2,9 +2,11 @@
|
|||
#define READ_WRITE_XML_UNIQUE_BLOCKS_H
|
||||
|
||||
/********************************************************************
|
||||
* This file includes the top-level function of this library
|
||||
* which reads an XML of unique routing blocks to the associated
|
||||
* data structures device_rr_gsb
|
||||
* This file includes the top-level functions of this library
|
||||
* which includes:
|
||||
* -- reads an XML file of unique blocks to the associated
|
||||
* data structures: device_rr_gsb
|
||||
* -- write device__rr_gsb's info about unique blocks to a xml file
|
||||
*******************************************************************/
|
||||
|
||||
#include <string>
|
||||
|
@ -32,7 +34,7 @@
|
|||
|
||||
/********************************************************************
|
||||
* Parse XML codes of a <instance> to an object of device_rr_gsb
|
||||
* instance is the mirror module of unique module.
|
||||
* instance is the mirror of unique module.
|
||||
*******************************************************************/
|
||||
vtr::Point<size_t> read_xml_unique_instance_info(
|
||||
pugi::xml_node& xml_instance_info, const pugiutil::loc_data& loc_data) {
|
||||
|
@ -157,7 +159,7 @@ int read_xml_unique_blocks(T& openfpga_ctx, const char* file_name,
|
|||
|
||||
/* get device_rr_gsb data type and initialize it*/
|
||||
openfpga::DeviceRRGSB& device_rr_gsb = openfpga_ctx.mutable_device_rr_gsb();
|
||||
/* clear unique modules */
|
||||
/* clear unique modules & reserve memory to relavant vectors */
|
||||
device_rr_gsb.clear_unique_modules();
|
||||
vtr::Point<size_t> grid_coord(g_vpr_ctx.device().grid.width() - 1,
|
||||
g_vpr_ctx.device().grid.height() - 1);
|
||||
|
@ -179,8 +181,7 @@ int read_xml_unique_blocks(T& openfpga_ctx, const char* file_name,
|
|||
instance_coords.push_back(instance_coordinate);
|
||||
}
|
||||
}
|
||||
/* get block coordinate and instance coordinate, try to setup device rr
|
||||
* gsb */
|
||||
/* get block coordinate and instance coordinate, try to setup device_rr_gsb */
|
||||
if (type == "sb") {
|
||||
device_rr_gsb.preload_unique_sb_module(block_coordinate,
|
||||
instance_coords);
|
||||
|
@ -198,6 +199,7 @@ int read_xml_unique_blocks(T& openfpga_ctx, const char* file_name,
|
|||
return 1;
|
||||
}
|
||||
}
|
||||
/* As preloading gsb hasn't been developed, we should build gsb using the preloaded cbs and sbs*/
|
||||
device_rr_gsb.build_gsb_unique_module();
|
||||
if (verbose_output) {
|
||||
report_unique_module_status_read(openfpga_ctx, true);
|
||||
|
|
Loading…
Reference in New Issue