add runtime profiling to module graph builders
This commit is contained in:
parent
2b06cfc3cf
commit
35073f48cf
|
@ -4,6 +4,7 @@
|
||||||
* 2. Decoders used by grid/routing/top-level module for memory address decoding
|
* 2. Decoders used by grid/routing/top-level module for memory address decoding
|
||||||
***************************************************************************************/
|
***************************************************************************************/
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <ctime>
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "vtr_assert.h"
|
#include "vtr_assert.h"
|
||||||
|
|
||||||
|
@ -93,6 +94,12 @@ void build_mux_local_decoder_module(ModuleManager& module_manager,
|
||||||
void build_mux_local_decoder_modules(ModuleManager& module_manager,
|
void build_mux_local_decoder_modules(ModuleManager& module_manager,
|
||||||
const MuxLibrary& mux_lib,
|
const MuxLibrary& mux_lib,
|
||||||
const CircuitLibrary& circuit_lib) {
|
const CircuitLibrary& circuit_lib) {
|
||||||
|
/* Start time count */
|
||||||
|
clock_t t_start = clock();
|
||||||
|
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"Building local encoder (for multiplexers) modules...");
|
||||||
|
|
||||||
/* Create a library for local encoders with different sizes */
|
/* Create a library for local encoders with different sizes */
|
||||||
DecoderLibrary decoder_lib;
|
DecoderLibrary decoder_lib;
|
||||||
|
|
||||||
|
@ -128,4 +135,12 @@ void build_mux_local_decoder_modules(ModuleManager& module_manager,
|
||||||
for (const auto& decoder : decoder_lib.decoders()) {
|
for (const auto& decoder : decoder_lib.decoders()) {
|
||||||
build_mux_local_decoder_module(module_manager, decoder_lib, decoder);
|
build_mux_local_decoder_module(module_manager, decoder_lib, decoder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* End time count */
|
||||||
|
clock_t t_end = clock();
|
||||||
|
|
||||||
|
float run_time_sec = (float)(t_end - t_start) / CLOCKS_PER_SEC;
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"took %.2g seconds\n",
|
||||||
|
run_time_sec);
|
||||||
}
|
}
|
||||||
|
|
|
@ -148,6 +148,11 @@ void build_gate_module(ModuleManager& module_manager,
|
||||||
***********************************************/
|
***********************************************/
|
||||||
void build_essential_modules(ModuleManager& module_manager,
|
void build_essential_modules(ModuleManager& module_manager,
|
||||||
const CircuitLibrary& circuit_lib) {
|
const CircuitLibrary& circuit_lib) {
|
||||||
|
/* Start time count */
|
||||||
|
clock_t t_start = clock();
|
||||||
|
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"Building essential (inverter/buffer/logic gate) modules...");
|
||||||
|
|
||||||
for (const auto& circuit_model : circuit_lib.models()) {
|
for (const auto& circuit_model : circuit_lib.models()) {
|
||||||
if (SPICE_MODEL_INVBUF == circuit_lib.model_type(circuit_model)) {
|
if (SPICE_MODEL_INVBUF == circuit_lib.model_type(circuit_model)) {
|
||||||
|
@ -163,6 +168,14 @@ void build_essential_modules(ModuleManager& module_manager,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* End time count */
|
||||||
|
clock_t t_end = clock();
|
||||||
|
|
||||||
|
float run_time_sec = (float)(t_end - t_start) / CLOCKS_PER_SEC;
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"took %.2g seconds\n",
|
||||||
|
run_time_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
|
@ -173,6 +186,12 @@ void build_essential_modules(ModuleManager& module_manager,
|
||||||
void build_user_defined_modules(ModuleManager& module_manager,
|
void build_user_defined_modules(ModuleManager& module_manager,
|
||||||
const CircuitLibrary& circuit_lib,
|
const CircuitLibrary& circuit_lib,
|
||||||
const std::vector<t_segment_inf>& routing_segments) {
|
const std::vector<t_segment_inf>& routing_segments) {
|
||||||
|
/* Start time count */
|
||||||
|
clock_t t_start = clock();
|
||||||
|
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"Building user-defined modules...");
|
||||||
|
|
||||||
/* Iterate over Verilog modules */
|
/* Iterate over Verilog modules */
|
||||||
for (const auto& model : circuit_lib.models()) {
|
for (const auto& model : circuit_lib.models()) {
|
||||||
/* We only care about user-defined models */
|
/* We only care about user-defined models */
|
||||||
|
@ -216,6 +235,14 @@ void build_user_defined_modules(ModuleManager& module_manager,
|
||||||
BasicPort module_mid_output_port(generate_segment_wire_mid_output_name(circuit_lib.port_lib_name(output_ports[0])), circuit_lib.port_size(output_ports[0]));
|
BasicPort module_mid_output_port(generate_segment_wire_mid_output_name(circuit_lib.port_lib_name(output_ports[0])), circuit_lib.port_size(output_ports[0]));
|
||||||
module_manager.add_port(module_id, module_mid_output_port, ModuleManager::MODULE_OUTPUT_PORT);
|
module_manager.add_port(module_id, module_mid_output_port, ModuleManager::MODULE_OUTPUT_PORT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* End time count */
|
||||||
|
clock_t t_end = clock();
|
||||||
|
|
||||||
|
float run_time_sec = (float)(t_end - t_start) / CLOCKS_PER_SEC;
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"took %.2g seconds\n",
|
||||||
|
run_time_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
|
@ -245,7 +272,7 @@ void build_constant_generator_modules(ModuleManager& module_manager) {
|
||||||
clock_t t_start = clock();
|
clock_t t_start = clock();
|
||||||
|
|
||||||
vpr_printf(TIO_MESSAGE_INFO,
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
"Building modules for constant generator...");
|
"Building constant generator modules...");
|
||||||
|
|
||||||
/* VDD */
|
/* VDD */
|
||||||
build_constant_generator_module(module_manager, 1);
|
build_constant_generator_module(module_manager, 1);
|
||||||
|
@ -258,6 +285,6 @@ void build_constant_generator_modules(ModuleManager& module_manager) {
|
||||||
|
|
||||||
float run_time_sec = (float)(t_end - t_start) / CLOCKS_PER_SEC;
|
float run_time_sec = (float)(t_end - t_start) / CLOCKS_PER_SEC;
|
||||||
vpr_printf(TIO_MESSAGE_INFO,
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
"took %g seconds\n",
|
"took %.2g seconds\n",
|
||||||
run_time_sec);
|
run_time_sec);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
* (CLBs, I/Os, heterogeneous blocks etc.)
|
* (CLBs, I/Os, heterogeneous blocks etc.)
|
||||||
*******************************************************************/
|
*******************************************************************/
|
||||||
/* System header files */
|
/* System header files */
|
||||||
|
#include <ctime>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
/* Header files from external libs */
|
/* Header files from external libs */
|
||||||
|
@ -1099,6 +1100,12 @@ void build_grid_modules(ModuleManager& module_manager,
|
||||||
const MuxLibrary& mux_lib,
|
const MuxLibrary& mux_lib,
|
||||||
const e_sram_orgz& sram_orgz_type,
|
const e_sram_orgz& sram_orgz_type,
|
||||||
const CircuitModelId& sram_model) {
|
const CircuitModelId& sram_model) {
|
||||||
|
/* Start time count */
|
||||||
|
clock_t t_start = clock();
|
||||||
|
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"Building grid modules...");
|
||||||
|
|
||||||
/* Enumerate the types, dump one Verilog module for each */
|
/* Enumerate the types, dump one Verilog module for each */
|
||||||
for (int itype = 0; itype < num_types; itype++) {
|
for (int itype = 0; itype < num_types; itype++) {
|
||||||
if (EMPTY_TYPE == &type_descriptors[itype]) {
|
if (EMPTY_TYPE == &type_descriptors[itype]) {
|
||||||
|
@ -1129,5 +1136,13 @@ void build_grid_modules(ModuleManager& module_manager,
|
||||||
NUM_SIDES);
|
NUM_SIDES);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* End time count */
|
||||||
|
clock_t t_end = clock();
|
||||||
|
|
||||||
|
float run_time_sec = (float)(t_end - t_start) / CLOCKS_PER_SEC;
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"took %.2g seconds\n",
|
||||||
|
run_time_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
* This file include functions that create modules for
|
* This file include functions that create modules for
|
||||||
* the Look-Up Tables (LUTs)
|
* the Look-Up Tables (LUTs)
|
||||||
********************************************************************/
|
********************************************************************/
|
||||||
|
#include <ctime>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -389,6 +390,11 @@ void build_lut_module(ModuleManager& module_manager,
|
||||||
********************************************************************/
|
********************************************************************/
|
||||||
void build_lut_modules(ModuleManager& module_manager,
|
void build_lut_modules(ModuleManager& module_manager,
|
||||||
const CircuitLibrary& circuit_lib) {
|
const CircuitLibrary& circuit_lib) {
|
||||||
|
/* Start time count */
|
||||||
|
clock_t t_start = clock();
|
||||||
|
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"Building Look-Up Table (LUT) modules...");
|
||||||
|
|
||||||
/* Search for each LUT circuit model */
|
/* Search for each LUT circuit model */
|
||||||
for (const auto& lut_model : circuit_lib.models()) {
|
for (const auto& lut_model : circuit_lib.models()) {
|
||||||
|
@ -398,5 +404,13 @@ void build_lut_modules(ModuleManager& module_manager,
|
||||||
}
|
}
|
||||||
build_lut_module(module_manager, circuit_lib, lut_model);
|
build_lut_module(module_manager, circuit_lib, lut_model);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* End time count */
|
||||||
|
clock_t t_end = clock();
|
||||||
|
|
||||||
|
float run_time_sec = (float)(t_end - t_start) / CLOCKS_PER_SEC;
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"took %.2g seconds\n",
|
||||||
|
run_time_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
* the memories that are affiliated to multiplexers and other programmable
|
* the memories that are affiliated to multiplexers and other programmable
|
||||||
* circuit models, such as IOPADs, LUTs, etc.
|
* circuit models, such as IOPADs, LUTs, etc.
|
||||||
********************************************************************/
|
********************************************************************/
|
||||||
|
#include <ctime>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
@ -630,6 +631,11 @@ void build_memory_modules(ModuleManager& module_manager,
|
||||||
const MuxLibrary& mux_lib,
|
const MuxLibrary& mux_lib,
|
||||||
const CircuitLibrary& circuit_lib,
|
const CircuitLibrary& circuit_lib,
|
||||||
const e_sram_orgz& sram_orgz_type) {
|
const e_sram_orgz& sram_orgz_type) {
|
||||||
|
/* Start time count */
|
||||||
|
clock_t t_start = clock();
|
||||||
|
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"Building memory modules...");
|
||||||
|
|
||||||
/* Create the memory circuits for the multiplexer */
|
/* Create the memory circuits for the multiplexer */
|
||||||
for (auto mux : mux_lib.muxes()) {
|
for (auto mux : mux_lib.muxes()) {
|
||||||
|
@ -677,5 +683,13 @@ void build_memory_modules(ModuleManager& module_manager,
|
||||||
/* Create a Verilog module for the memories used by the circuit model */
|
/* Create a Verilog module for the memories used by the circuit model */
|
||||||
build_memory_module(module_manager, circuit_lib, sram_orgz_type, module_name, sram_models[0], num_mems);
|
build_memory_module(module_manager, circuit_lib, sram_orgz_type, module_name, sram_models[0], num_mems);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* End time count */
|
||||||
|
clock_t t_end = clock();
|
||||||
|
|
||||||
|
float run_time_sec = (float)(t_end - t_start) / CLOCKS_PER_SEC;
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"took %.2g seconds\n",
|
||||||
|
run_time_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
* such as a branch in a multiplexer
|
* such as a branch in a multiplexer
|
||||||
* and the full multiplexer
|
* and the full multiplexer
|
||||||
**********************************************/
|
**********************************************/
|
||||||
|
#include <ctime>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
@ -1369,6 +1370,11 @@ void build_mux_module(ModuleManager& module_manager,
|
||||||
void build_mux_modules(ModuleManager& module_manager,
|
void build_mux_modules(ModuleManager& module_manager,
|
||||||
const MuxLibrary& mux_lib,
|
const MuxLibrary& mux_lib,
|
||||||
const CircuitLibrary& circuit_lib) {
|
const CircuitLibrary& circuit_lib) {
|
||||||
|
/* Start time count */
|
||||||
|
clock_t t_start = clock();
|
||||||
|
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"Building multiplexer modules...");
|
||||||
|
|
||||||
/* Generate basis sub-circuit for unique branches shared by the multiplexers */
|
/* Generate basis sub-circuit for unique branches shared by the multiplexers */
|
||||||
for (auto mux : mux_lib.muxes()) {
|
for (auto mux : mux_lib.muxes()) {
|
||||||
|
@ -1391,5 +1397,13 @@ void build_mux_modules(ModuleManager& module_manager,
|
||||||
/* Create MUX circuits */
|
/* Create MUX circuits */
|
||||||
build_mux_module(module_manager, circuit_lib, mux_circuit_model, mux_graph);
|
build_mux_module(module_manager, circuit_lib, mux_circuit_model, mux_graph);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* End time count */
|
||||||
|
clock_t t_end = clock();
|
||||||
|
|
||||||
|
float run_time_sec = (float)(t_end - t_start) / CLOCKS_PER_SEC;
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"took %.2g seconds\n",
|
||||||
|
run_time_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
* 1. Connection blocks
|
* 1. Connection blocks
|
||||||
* 2. Switch blocks
|
* 2. Switch blocks
|
||||||
*******************************************************************/
|
*******************************************************************/
|
||||||
|
#include <ctime>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "vtr_assert.h"
|
#include "vtr_assert.h"
|
||||||
|
@ -1069,6 +1070,12 @@ void build_flatten_routing_modules(ModuleManager& module_manager,
|
||||||
const std::vector<std::vector<t_grid_tile>>& grids,
|
const std::vector<std::vector<t_grid_tile>>& grids,
|
||||||
const t_det_routing_arch& routing_arch,
|
const t_det_routing_arch& routing_arch,
|
||||||
const std::vector<t_switch_inf>& rr_switches) {
|
const std::vector<t_switch_inf>& rr_switches) {
|
||||||
|
/* Start time count */
|
||||||
|
clock_t t_start = clock();
|
||||||
|
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"Building routing modules...");
|
||||||
|
|
||||||
/* We only support uni-directional routing architecture now */
|
/* We only support uni-directional routing architecture now */
|
||||||
VTR_ASSERT (UNI_DIRECTIONAL == routing_arch.directionality);
|
VTR_ASSERT (UNI_DIRECTIONAL == routing_arch.directionality);
|
||||||
|
|
||||||
|
@ -1098,6 +1105,13 @@ void build_flatten_routing_modules(ModuleManager& module_manager,
|
||||||
sram_orgz_type, sram_model,
|
sram_orgz_type, sram_model,
|
||||||
CHANY);
|
CHANY);
|
||||||
|
|
||||||
|
/* End time count */
|
||||||
|
clock_t t_end = clock();
|
||||||
|
|
||||||
|
float run_time_sec = (float)(t_end - t_start) / CLOCKS_PER_SEC;
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"took %.2g seconds\n",
|
||||||
|
run_time_sec);
|
||||||
}
|
}
|
||||||
|
|
||||||
/********************************************************************
|
/********************************************************************
|
||||||
|
@ -1119,6 +1133,12 @@ void build_unique_routing_modules(ModuleManager& module_manager,
|
||||||
const std::vector<std::vector<t_grid_tile>>& grids,
|
const std::vector<std::vector<t_grid_tile>>& grids,
|
||||||
const t_det_routing_arch& routing_arch,
|
const t_det_routing_arch& routing_arch,
|
||||||
const std::vector<t_switch_inf>& rr_switches) {
|
const std::vector<t_switch_inf>& rr_switches) {
|
||||||
|
/* Start time count */
|
||||||
|
clock_t t_start = clock();
|
||||||
|
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"Building unique routing modules...");
|
||||||
|
|
||||||
/* We only support uni-directional routing architecture now */
|
/* We only support uni-directional routing architecture now */
|
||||||
VTR_ASSERT (UNI_DIRECTIONAL == routing_arch.directionality);
|
VTR_ASSERT (UNI_DIRECTIONAL == routing_arch.directionality);
|
||||||
|
|
||||||
|
@ -1152,4 +1172,12 @@ void build_unique_routing_modules(ModuleManager& module_manager,
|
||||||
sram_orgz_type, sram_model,
|
sram_orgz_type, sram_model,
|
||||||
unique_mirror, CHANY);
|
unique_mirror, CHANY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* End time count */
|
||||||
|
clock_t t_end = clock();
|
||||||
|
|
||||||
|
float run_time_sec = (float)(t_end - t_start) / CLOCKS_PER_SEC;
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"took %.2g seconds\n",
|
||||||
|
run_time_sec);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
* This file includes functions that are used to print the top-level
|
* This file includes functions that are used to print the top-level
|
||||||
* module for the FPGA fabric in Verilog format
|
* module for the FPGA fabric in Verilog format
|
||||||
*******************************************************************/
|
*******************************************************************/
|
||||||
|
#include <ctime>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
@ -831,6 +832,12 @@ void build_top_module(ModuleManager& module_manager,
|
||||||
const e_sram_orgz& sram_orgz_type,
|
const e_sram_orgz& sram_orgz_type,
|
||||||
const CircuitModelId& sram_model,
|
const CircuitModelId& sram_model,
|
||||||
const bool& compact_routing_hierarchy) {
|
const bool& compact_routing_hierarchy) {
|
||||||
|
/* Start time count */
|
||||||
|
clock_t t_start = clock();
|
||||||
|
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"Building FPGA fabric module...");
|
||||||
|
|
||||||
/* Create a module as the top-level fabric, and add it to the module manager */
|
/* Create a module as the top-level fabric, and add it to the module manager */
|
||||||
std::string top_module_name = generate_fpga_top_module_name();
|
std::string top_module_name = generate_fpga_top_module_name();
|
||||||
ModuleId top_module = module_manager.add_module(top_module_name);
|
ModuleId top_module = module_manager.add_module(top_module_name);
|
||||||
|
@ -900,4 +907,12 @@ void build_top_module(ModuleManager& module_manager,
|
||||||
add_top_module_nets_memory_config_bus(module_manager, top_module,
|
add_top_module_nets_memory_config_bus(module_manager, top_module,
|
||||||
sram_orgz_type, circuit_lib.design_tech_type(sram_model));
|
sram_orgz_type, circuit_lib.design_tech_type(sram_model));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* End time count */
|
||||||
|
clock_t t_end = clock();
|
||||||
|
|
||||||
|
float run_time_sec = (float)(t_end - t_start) / CLOCKS_PER_SEC;
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"took %.2g seconds\n",
|
||||||
|
run_time_sec);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
* This file includes functions to generate
|
* This file includes functions to generate
|
||||||
* Verilog submodules for wires.
|
* Verilog submodules for wires.
|
||||||
**********************************************/
|
**********************************************/
|
||||||
|
#include <ctime>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
@ -105,6 +106,12 @@ void build_routing_wire_module(ModuleManager& module_manager,
|
||||||
void build_wire_modules(ModuleManager& module_manager,
|
void build_wire_modules(ModuleManager& module_manager,
|
||||||
const CircuitLibrary& circuit_lib,
|
const CircuitLibrary& circuit_lib,
|
||||||
std::vector<t_segment_inf> routing_segments) {
|
std::vector<t_segment_inf> routing_segments) {
|
||||||
|
/* Start time count */
|
||||||
|
clock_t t_start = clock();
|
||||||
|
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"Building wire modules...");
|
||||||
|
|
||||||
/* Print Verilog models for regular wires*/
|
/* Print Verilog models for regular wires*/
|
||||||
for (const auto& wire_model : circuit_lib.models_by_type(SPICE_MODEL_WIRE)) {
|
for (const auto& wire_model : circuit_lib.models_by_type(SPICE_MODEL_WIRE)) {
|
||||||
/* Bypass user-defined circuit models */
|
/* Bypass user-defined circuit models */
|
||||||
|
@ -131,4 +138,12 @@ void build_wire_modules(ModuleManager& module_manager,
|
||||||
/* Print a Verilog module */
|
/* Print a Verilog module */
|
||||||
build_routing_wire_module(module_manager, circuit_lib, seg.circuit_model, segment_wire_subckt_name);
|
build_routing_wire_module(module_manager, circuit_lib, seg.circuit_model, segment_wire_subckt_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* End time count */
|
||||||
|
clock_t t_end = clock();
|
||||||
|
|
||||||
|
float run_time_sec = (float)(t_end - t_start) / CLOCKS_PER_SEC;
|
||||||
|
vpr_printf(TIO_MESSAGE_INFO,
|
||||||
|
"took %.2g seconds\n",
|
||||||
|
run_time_sec);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue