add profile time to top module builder for better spot on runtime/memory overhead sources
This commit is contained in:
parent
57e6c84252
commit
e7d5736269
|
@ -91,6 +91,9 @@ vtr::Matrix<size_t> add_top_module_grid_instances(ModuleManager& module_manager,
|
||||||
const ModuleId& top_module,
|
const ModuleId& top_module,
|
||||||
IoLocationMap& io_location_map,
|
IoLocationMap& io_location_map,
|
||||||
const DeviceGrid& grids) {
|
const DeviceGrid& grids) {
|
||||||
|
|
||||||
|
vtr::ScopedStartFinishTimer timer("Add grid instances to top module");
|
||||||
|
|
||||||
/* Reserve an array for the instance ids */
|
/* Reserve an array for the instance ids */
|
||||||
vtr::Matrix<size_t> grid_instance_ids({grids.width(), grids.height()});
|
vtr::Matrix<size_t> grid_instance_ids({grids.width(), grids.height()});
|
||||||
grid_instance_ids.fill(size_t(-1));
|
grid_instance_ids.fill(size_t(-1));
|
||||||
|
@ -203,6 +206,9 @@ vtr::Matrix<size_t> add_top_module_switch_block_instances(ModuleManager& module_
|
||||||
const ModuleId& top_module,
|
const ModuleId& top_module,
|
||||||
const DeviceRRGSB& device_rr_gsb,
|
const DeviceRRGSB& device_rr_gsb,
|
||||||
const bool& compact_routing_hierarchy) {
|
const bool& compact_routing_hierarchy) {
|
||||||
|
|
||||||
|
vtr::ScopedStartFinishTimer timer("Add switch block instances to top module");
|
||||||
|
|
||||||
vtr::Point<size_t> sb_range = device_rr_gsb.get_gsb_range();
|
vtr::Point<size_t> sb_range = device_rr_gsb.get_gsb_range();
|
||||||
|
|
||||||
/* Reserve an array for the instance ids */
|
/* Reserve an array for the instance ids */
|
||||||
|
@ -253,6 +259,9 @@ vtr::Matrix<size_t> add_top_module_connection_block_instances(ModuleManager& mod
|
||||||
const DeviceRRGSB& device_rr_gsb,
|
const DeviceRRGSB& device_rr_gsb,
|
||||||
const t_rr_type& cb_type,
|
const t_rr_type& cb_type,
|
||||||
const bool& compact_routing_hierarchy) {
|
const bool& compact_routing_hierarchy) {
|
||||||
|
|
||||||
|
vtr::ScopedStartFinishTimer timer("Add connection block instances to top module");
|
||||||
|
|
||||||
vtr::Point<size_t> cb_range = device_rr_gsb.get_gsb_range();
|
vtr::Point<size_t> cb_range = device_rr_gsb.get_gsb_range();
|
||||||
|
|
||||||
/* Reserve an array for the instance ids */
|
/* Reserve an array for the instance ids */
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
*******************************************************************/
|
*******************************************************************/
|
||||||
/* Headers from vtrutil library */
|
/* Headers from vtrutil library */
|
||||||
#include "vtr_assert.h"
|
#include "vtr_assert.h"
|
||||||
|
#include "vtr_time.h"
|
||||||
|
|
||||||
/* Headers from openfpgautil library */
|
/* Headers from openfpgautil library */
|
||||||
#include "openfpga_side_manager.h"
|
#include "openfpga_side_manager.h"
|
||||||
|
@ -648,6 +649,8 @@ void add_top_module_nets_connect_grids_and_gsbs(ModuleManager& module_manager,
|
||||||
const bool& compact_routing_hierarchy,
|
const bool& compact_routing_hierarchy,
|
||||||
const bool& duplicate_grid_pin) {
|
const bool& duplicate_grid_pin) {
|
||||||
|
|
||||||
|
vtr::ScopedStartFinishTimer timer("Add module nets between grids and GSBs");
|
||||||
|
|
||||||
vtr::Point<size_t> gsb_range = device_rr_gsb.get_gsb_range();
|
vtr::Point<size_t> gsb_range = device_rr_gsb.get_gsb_range();
|
||||||
|
|
||||||
for (size_t ix = 0; ix < gsb_range.x(); ++ix) {
|
for (size_t ix = 0; ix < gsb_range.x(); ++ix) {
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
/* Headers from vtrutil library */
|
/* Headers from vtrutil library */
|
||||||
#include "vtr_assert.h"
|
#include "vtr_assert.h"
|
||||||
#include "vtr_log.h"
|
#include "vtr_log.h"
|
||||||
|
#include "vtr_time.h"
|
||||||
|
|
||||||
/* Headers from openfpgautil library */
|
/* Headers from openfpgautil library */
|
||||||
#include "openfpga_port.h"
|
#include "openfpga_port.h"
|
||||||
|
@ -145,6 +146,8 @@ void add_top_module_nets_tile_direct_connections(ModuleManager& module_manager,
|
||||||
const TileDirect& tile_direct,
|
const TileDirect& tile_direct,
|
||||||
const ArchDirect& arch_direct) {
|
const ArchDirect& arch_direct) {
|
||||||
|
|
||||||
|
vtr::ScopedStartFinishTimer timer("Add module nets for inter-tile connections");
|
||||||
|
|
||||||
for (const TileDirectId& tile_direct_id : tile_direct.directs()) {
|
for (const TileDirectId& tile_direct_id : tile_direct.directs()) {
|
||||||
add_module_nets_tile_direct_connection(module_manager, top_module, circuit_lib,
|
add_module_nets_tile_direct_connection(module_manager, top_module, circuit_lib,
|
||||||
grids, grid_instance_ids,
|
grids, grid_instance_ids,
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
/* Headers from vtrutil library */
|
/* Headers from vtrutil library */
|
||||||
#include "vtr_assert.h"
|
#include "vtr_assert.h"
|
||||||
#include "vtr_log.h"
|
#include "vtr_log.h"
|
||||||
|
#include "vtr_time.h"
|
||||||
|
|
||||||
/* Headers from vpr library */
|
/* Headers from vpr library */
|
||||||
#include "vpr_utils.h"
|
#include "vpr_utils.h"
|
||||||
|
@ -911,6 +912,9 @@ void add_top_module_nets_memory_config_bus(ModuleManager& module_manager,
|
||||||
const e_config_protocol_type& sram_orgz_type,
|
const e_config_protocol_type& sram_orgz_type,
|
||||||
const e_circuit_model_design_tech& mem_tech,
|
const e_circuit_model_design_tech& mem_tech,
|
||||||
const size_t& num_config_bits) {
|
const size_t& num_config_bits) {
|
||||||
|
|
||||||
|
vtr::ScopedStartFinishTimer timer("Add module nets for configuration buses");
|
||||||
|
|
||||||
switch (mem_tech) {
|
switch (mem_tech) {
|
||||||
case CIRCUIT_MODEL_DESIGN_CMOS:
|
case CIRCUIT_MODEL_DESIGN_CMOS:
|
||||||
add_top_module_nets_cmos_memory_config_bus(module_manager, decoder_lib,
|
add_top_module_nets_cmos_memory_config_bus(module_manager, decoder_lib,
|
||||||
|
|
Loading…
Reference in New Issue