cacti_interface.h revision 10152:52c552138ba1
113482Srekai.gonzalezalberquilla@arm.com/***************************************************************************** 213482Srekai.gonzalezalberquilla@arm.com * McPAT/CACTI 313482Srekai.gonzalezalberquilla@arm.com * SOFTWARE LICENSE AGREEMENT 413482Srekai.gonzalezalberquilla@arm.com * Copyright 2012 Hewlett-Packard Development Company, L.P. 513482Srekai.gonzalezalberquilla@arm.com * All Rights Reserved 613482Srekai.gonzalezalberquilla@arm.com * 713482Srekai.gonzalezalberquilla@arm.com * Redistribution and use in source and binary forms, with or without 813482Srekai.gonzalezalberquilla@arm.com * modification, are permitted provided that the following conditions are 913482Srekai.gonzalezalberquilla@arm.com * met: redistributions of source code must retain the above copyright 1013482Srekai.gonzalezalberquilla@arm.com * notice, this list of conditions and the following disclaimer; 1113482Srekai.gonzalezalberquilla@arm.com * redistributions in binary form must reproduce the above copyright 1213482Srekai.gonzalezalberquilla@arm.com * notice, this list of conditions and the following disclaimer in the 1313482Srekai.gonzalezalberquilla@arm.com * documentation and/or other materials provided with the distribution; 1413482Srekai.gonzalezalberquilla@arm.com * neither the name of the copyright holders nor the names of its 1513482Srekai.gonzalezalberquilla@arm.com * contributors may be used to endorse or promote products derived from 1613482Srekai.gonzalezalberquilla@arm.com * this software without specific prior written permission. 1713482Srekai.gonzalezalberquilla@arm.com 1813482Srekai.gonzalezalberquilla@arm.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1913482Srekai.gonzalezalberquilla@arm.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2013482Srekai.gonzalezalberquilla@arm.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2113482Srekai.gonzalezalberquilla@arm.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2213482Srekai.gonzalezalberquilla@arm.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2313482Srekai.gonzalezalberquilla@arm.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2413482Srekai.gonzalezalberquilla@arm.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2513482Srekai.gonzalezalberquilla@arm.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2613482Srekai.gonzalezalberquilla@arm.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2713482Srekai.gonzalezalberquilla@arm.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2813482Srekai.gonzalezalberquilla@arm.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.” 2913482Srekai.gonzalezalberquilla@arm.com * 3013482Srekai.gonzalezalberquilla@arm.com ***************************************************************************/ 3113482Srekai.gonzalezalberquilla@arm.com 3213482Srekai.gonzalezalberquilla@arm.com 3313482Srekai.gonzalezalberquilla@arm.com 3413482Srekai.gonzalezalberquilla@arm.com#ifndef __CACTI_INTERFACE_H__ 3513482Srekai.gonzalezalberquilla@arm.com#define __CACTI_INTERFACE_H__ 3613482Srekai.gonzalezalberquilla@arm.com 3713482Srekai.gonzalezalberquilla@arm.com#include <iostream> 3813482Srekai.gonzalezalberquilla@arm.com#include <list> 3913482Srekai.gonzalezalberquilla@arm.com#include <map> 4013482Srekai.gonzalezalberquilla@arm.com#include <string> 4113482Srekai.gonzalezalberquilla@arm.com#include <vector> 4213482Srekai.gonzalezalberquilla@arm.com 4313482Srekai.gonzalezalberquilla@arm.com#include "const.h" 4413482Srekai.gonzalezalberquilla@arm.com 4513482Srekai.gonzalezalberquilla@arm.comusing namespace std; 4613482Srekai.gonzalezalberquilla@arm.com 4713482Srekai.gonzalezalberquilla@arm.com 4813482Srekai.gonzalezalberquilla@arm.comclass min_values_t; 4913482Srekai.gonzalezalberquilla@arm.comclass mem_array; 5013482Srekai.gonzalezalberquilla@arm.comclass uca_org_t; 5113482Srekai.gonzalezalberquilla@arm.com 5213482Srekai.gonzalezalberquilla@arm.com 5313482Srekai.gonzalezalberquilla@arm.comclass powerComponents 5413482Srekai.gonzalezalberquilla@arm.com{ 5513482Srekai.gonzalezalberquilla@arm.com public: 5613482Srekai.gonzalezalberquilla@arm.com double dynamic; 5713482Srekai.gonzalezalberquilla@arm.com double leakage; 5813482Srekai.gonzalezalberquilla@arm.com double gate_leakage; 5913482Srekai.gonzalezalberquilla@arm.com double short_circuit; 6013482Srekai.gonzalezalberquilla@arm.com double longer_channel_leakage; 6113482Srekai.gonzalezalberquilla@arm.com 6213482Srekai.gonzalezalberquilla@arm.com powerComponents() : dynamic(0), leakage(0), gate_leakage(0), short_circuit(0), longer_channel_leakage(0) { } 6313482Srekai.gonzalezalberquilla@arm.com powerComponents(const powerComponents & obj) { *this = obj; } 6413482Srekai.gonzalezalberquilla@arm.com powerComponents & operator=(const powerComponents & rhs) 6513482Srekai.gonzalezalberquilla@arm.com { 6613482Srekai.gonzalezalberquilla@arm.com dynamic = rhs.dynamic; 6713482Srekai.gonzalezalberquilla@arm.com leakage = rhs.leakage; 6813482Srekai.gonzalezalberquilla@arm.com gate_leakage = rhs.gate_leakage; 6913482Srekai.gonzalezalberquilla@arm.com short_circuit = rhs.short_circuit; 7013482Srekai.gonzalezalberquilla@arm.com longer_channel_leakage = rhs.longer_channel_leakage; 7113482Srekai.gonzalezalberquilla@arm.com return *this; 7213482Srekai.gonzalezalberquilla@arm.com } 7313482Srekai.gonzalezalberquilla@arm.com void reset() { dynamic = 0; leakage = 0; gate_leakage = 0; short_circuit = 0;longer_channel_leakage = 0;} 7413482Srekai.gonzalezalberquilla@arm.com 7513482Srekai.gonzalezalberquilla@arm.com friend powerComponents operator+(const powerComponents & x, const powerComponents & y); 7613482Srekai.gonzalezalberquilla@arm.com friend powerComponents operator*(const powerComponents & x, double const * const y); 7713482Srekai.gonzalezalberquilla@arm.com}; 7813482Srekai.gonzalezalberquilla@arm.com 7913482Srekai.gonzalezalberquilla@arm.com 8013482Srekai.gonzalezalberquilla@arm.com 8113482Srekai.gonzalezalberquilla@arm.comclass powerDef 8213482Srekai.gonzalezalberquilla@arm.com{ 8313482Srekai.gonzalezalberquilla@arm.com public: 8413482Srekai.gonzalezalberquilla@arm.com powerComponents readOp; 8513482Srekai.gonzalezalberquilla@arm.com powerComponents writeOp; 8613482Srekai.gonzalezalberquilla@arm.com powerComponents searchOp;//Sheng: for CAM and FA 8713482Srekai.gonzalezalberquilla@arm.com 8813482Srekai.gonzalezalberquilla@arm.com powerDef() : readOp(), writeOp(), searchOp() { } 8913482Srekai.gonzalezalberquilla@arm.com void reset() { readOp.reset(); writeOp.reset(); searchOp.reset();} 9013482Srekai.gonzalezalberquilla@arm.com 9113482Srekai.gonzalezalberquilla@arm.com friend powerDef operator+(const powerDef & x, const powerDef & y); 9213482Srekai.gonzalezalberquilla@arm.com friend powerDef operator*(const powerDef & x, double const * const y); 9313482Srekai.gonzalezalberquilla@arm.com}; 9413482Srekai.gonzalezalberquilla@arm.com 9513482Srekai.gonzalezalberquilla@arm.comenum Wire_type 9613482Srekai.gonzalezalberquilla@arm.com{ 9713482Srekai.gonzalezalberquilla@arm.com Global /* gloabl wires with repeaters */, 9813482Srekai.gonzalezalberquilla@arm.com Global_5 /* 5% delay penalty */, 9913482Srekai.gonzalezalberquilla@arm.com Global_10 /* 10% delay penalty */, 10013482Srekai.gonzalezalberquilla@arm.com Global_20 /* 20% delay penalty */, 10113482Srekai.gonzalezalberquilla@arm.com Global_30 /* 30% delay penalty */, 10213482Srekai.gonzalezalberquilla@arm.com Low_swing /* differential low power wires with high area overhead */, 10313482Srekai.gonzalezalberquilla@arm.com Semi_global /* mid-level wires with repeaters*/, 10413482Srekai.gonzalezalberquilla@arm.com Transmission /* tranmission lines with high area overhead */, 10513482Srekai.gonzalezalberquilla@arm.com Optical /* optical wires */, 10613482Srekai.gonzalezalberquilla@arm.com Invalid_wtype 10713482Srekai.gonzalezalberquilla@arm.com}; 10813482Srekai.gonzalezalberquilla@arm.com 10913796Sgiacomo.travaglini@arm.com 11013482Srekai.gonzalezalberquilla@arm.com 11113482Srekai.gonzalezalberquilla@arm.comclass InputParameter 11213482Srekai.gonzalezalberquilla@arm.com{ 11313796Sgiacomo.travaglini@arm.com public: 11413796Sgiacomo.travaglini@arm.com void parse_cfg(const string & infile); 11513796Sgiacomo.travaglini@arm.com 11613796Sgiacomo.travaglini@arm.com bool error_checking(); // return false if the input parameters are problematic 11713796Sgiacomo.travaglini@arm.com void display_ip(); 11813796Sgiacomo.travaglini@arm.com 11913796Sgiacomo.travaglini@arm.com unsigned int cache_sz; // in bytes 12013796Sgiacomo.travaglini@arm.com unsigned int line_sz; 12113796Sgiacomo.travaglini@arm.com unsigned int assoc; 12213482Srekai.gonzalezalberquilla@arm.com unsigned int nbanks; 12313482Srekai.gonzalezalberquilla@arm.com unsigned int out_w;// == nr_bits_out 12413482Srekai.gonzalezalberquilla@arm.com bool specific_tag; 12513482Srekai.gonzalezalberquilla@arm.com unsigned int tag_w; 12613482Srekai.gonzalezalberquilla@arm.com unsigned int access_mode; 12713482Srekai.gonzalezalberquilla@arm.com unsigned int obj_func_dyn_energy; 12813482Srekai.gonzalezalberquilla@arm.com unsigned int obj_func_dyn_power; 12913482Srekai.gonzalezalberquilla@arm.com unsigned int obj_func_leak_power; 13013482Srekai.gonzalezalberquilla@arm.com unsigned int obj_func_cycle_t; 13113482Srekai.gonzalezalberquilla@arm.com 13213482Srekai.gonzalezalberquilla@arm.com double F_sz_nm; // feature size in nm 13313482Srekai.gonzalezalberquilla@arm.com double F_sz_um; // feature size in um 13413482Srekai.gonzalezalberquilla@arm.com unsigned int num_rw_ports; 13513482Srekai.gonzalezalberquilla@arm.com unsigned int num_rd_ports; 13613482Srekai.gonzalezalberquilla@arm.com unsigned int num_wr_ports; 13713482Srekai.gonzalezalberquilla@arm.com unsigned int num_se_rd_ports; // number of single ended read ports 13813482Srekai.gonzalezalberquilla@arm.com unsigned int num_search_ports; // Sheng: number of search ports for CAM 13913482Srekai.gonzalezalberquilla@arm.com bool is_main_mem; 14013482Srekai.gonzalezalberquilla@arm.com bool is_cache; 14113482Srekai.gonzalezalberquilla@arm.com bool pure_ram; 14213482Srekai.gonzalezalberquilla@arm.com bool pure_cam; 14313482Srekai.gonzalezalberquilla@arm.com bool rpters_in_htree; // if there are repeaters in htree segment 14413482Srekai.gonzalezalberquilla@arm.com unsigned int ver_htree_wires_over_array; 14513482Srekai.gonzalezalberquilla@arm.com unsigned int broadcast_addr_din_over_ver_htrees; 14613482Srekai.gonzalezalberquilla@arm.com unsigned int temp; 14713482Srekai.gonzalezalberquilla@arm.com 14813482Srekai.gonzalezalberquilla@arm.com unsigned int ram_cell_tech_type; 14913482Srekai.gonzalezalberquilla@arm.com unsigned int peri_global_tech_type; 15013482Srekai.gonzalezalberquilla@arm.com unsigned int data_arr_ram_cell_tech_type; 15113482Srekai.gonzalezalberquilla@arm.com unsigned int data_arr_peri_global_tech_type; 15213482Srekai.gonzalezalberquilla@arm.com unsigned int tag_arr_ram_cell_tech_type; 15313482Srekai.gonzalezalberquilla@arm.com unsigned int tag_arr_peri_global_tech_type; 15413482Srekai.gonzalezalberquilla@arm.com 15513482Srekai.gonzalezalberquilla@arm.com unsigned int burst_len; 15613482Srekai.gonzalezalberquilla@arm.com unsigned int int_prefetch_w; 15713482Srekai.gonzalezalberquilla@arm.com unsigned int page_sz_bits; 15813482Srekai.gonzalezalberquilla@arm.com 15913482Srekai.gonzalezalberquilla@arm.com unsigned int ic_proj_type; // interconnect_projection_type 16013482Srekai.gonzalezalberquilla@arm.com unsigned int wire_is_mat_type; // wire_inside_mat_type 16113482Srekai.gonzalezalberquilla@arm.com unsigned int wire_os_mat_type; // wire_outside_mat_type 16213482Srekai.gonzalezalberquilla@arm.com enum Wire_type wt; 16313482Srekai.gonzalezalberquilla@arm.com int force_wiretype; 16413482Srekai.gonzalezalberquilla@arm.com bool print_input_args; 16513482Srekai.gonzalezalberquilla@arm.com unsigned int nuca_cache_sz; // TODO 16613482Srekai.gonzalezalberquilla@arm.com int ndbl, ndwl, nspd, ndsam1, ndsam2, ndcm; 16713482Srekai.gonzalezalberquilla@arm.com bool force_cache_config; 16813482Srekai.gonzalezalberquilla@arm.com 16913482Srekai.gonzalezalberquilla@arm.com int cache_level; 17013482Srekai.gonzalezalberquilla@arm.com int cores; 17113482Srekai.gonzalezalberquilla@arm.com int nuca_bank_count; 17213482Srekai.gonzalezalberquilla@arm.com int force_nuca_bank; 17313482Srekai.gonzalezalberquilla@arm.com 17413482Srekai.gonzalezalberquilla@arm.com int delay_wt, dynamic_power_wt, leakage_power_wt, 17513482Srekai.gonzalezalberquilla@arm.com cycle_time_wt, area_wt; 17613482Srekai.gonzalezalberquilla@arm.com int delay_wt_nuca, dynamic_power_wt_nuca, leakage_power_wt_nuca, 17713482Srekai.gonzalezalberquilla@arm.com cycle_time_wt_nuca, area_wt_nuca; 17813482Srekai.gonzalezalberquilla@arm.com 17913482Srekai.gonzalezalberquilla@arm.com int delay_dev, dynamic_power_dev, leakage_power_dev, 18013482Srekai.gonzalezalberquilla@arm.com cycle_time_dev, area_dev; 18113482Srekai.gonzalezalberquilla@arm.com int delay_dev_nuca, dynamic_power_dev_nuca, leakage_power_dev_nuca, 18213482Srekai.gonzalezalberquilla@arm.com cycle_time_dev_nuca, area_dev_nuca; 18313482Srekai.gonzalezalberquilla@arm.com int ed; //ED or ED2 optimization 18413482Srekai.gonzalezalberquilla@arm.com int nuca; 18513482Srekai.gonzalezalberquilla@arm.com 18613482Srekai.gonzalezalberquilla@arm.com bool fast_access; 18713482Srekai.gonzalezalberquilla@arm.com unsigned int block_sz; // bytes 18813482Srekai.gonzalezalberquilla@arm.com unsigned int tag_assoc; 18913482Srekai.gonzalezalberquilla@arm.com unsigned int data_assoc; 19013482Srekai.gonzalezalberquilla@arm.com bool is_seq_acc; 19113482Srekai.gonzalezalberquilla@arm.com bool fully_assoc; 19213482Srekai.gonzalezalberquilla@arm.com unsigned int nsets; // == number_of_sets 19313482Srekai.gonzalezalberquilla@arm.com int print_detail; 19413482Srekai.gonzalezalberquilla@arm.com 19513482Srekai.gonzalezalberquilla@arm.com 19613482Srekai.gonzalezalberquilla@arm.com bool add_ecc_b_; 19713482Srekai.gonzalezalberquilla@arm.com //parameters for design constraint 19813482Srekai.gonzalezalberquilla@arm.com double throughput; 19913482Srekai.gonzalezalberquilla@arm.com double latency; 20013482Srekai.gonzalezalberquilla@arm.com bool pipelinable; 20113482Srekai.gonzalezalberquilla@arm.com int pipeline_stages; 20213482Srekai.gonzalezalberquilla@arm.com int per_stage_vector; 20313482Srekai.gonzalezalberquilla@arm.com bool with_clock_grid; 20413482Srekai.gonzalezalberquilla@arm.com}; 20513482Srekai.gonzalezalberquilla@arm.com 20613482Srekai.gonzalezalberquilla@arm.com 20713482Srekai.gonzalezalberquilla@arm.comtypedef struct{ 20813482Srekai.gonzalezalberquilla@arm.com int Ndwl; 20913482Srekai.gonzalezalberquilla@arm.com int Ndbl; 21013482Srekai.gonzalezalberquilla@arm.com double Nspd; 21113482Srekai.gonzalezalberquilla@arm.com int deg_bl_muxing; 21213482Srekai.gonzalezalberquilla@arm.com int Ndsam_lev_1; 21313482Srekai.gonzalezalberquilla@arm.com int Ndsam_lev_2; 21413482Srekai.gonzalezalberquilla@arm.com int number_activated_mats_horizontal_direction; 21513482Srekai.gonzalezalberquilla@arm.com int number_subbanks; 21613482Srekai.gonzalezalberquilla@arm.com int page_size_in_bits; 21713482Srekai.gonzalezalberquilla@arm.com double delay_route_to_bank; 21813482Srekai.gonzalezalberquilla@arm.com double delay_crossbar; 21913482Srekai.gonzalezalberquilla@arm.com double delay_addr_din_horizontal_htree; 22013482Srekai.gonzalezalberquilla@arm.com double delay_addr_din_vertical_htree; 22113482Srekai.gonzalezalberquilla@arm.com double delay_row_predecode_driver_and_block; 22213482Srekai.gonzalezalberquilla@arm.com double delay_row_decoder; 22313482Srekai.gonzalezalberquilla@arm.com double delay_bitlines; 22413482Srekai.gonzalezalberquilla@arm.com double delay_sense_amp; 22513482Srekai.gonzalezalberquilla@arm.com double delay_subarray_output_driver; 22613482Srekai.gonzalezalberquilla@arm.com double delay_bit_mux_predecode_driver_and_block; 22713482Srekai.gonzalezalberquilla@arm.com double delay_bit_mux_decoder; 22813482Srekai.gonzalezalberquilla@arm.com double delay_senseamp_mux_lev_1_predecode_driver_and_block; 22913482Srekai.gonzalezalberquilla@arm.com double delay_senseamp_mux_lev_1_decoder; 23013482Srekai.gonzalezalberquilla@arm.com double delay_senseamp_mux_lev_2_predecode_driver_and_block; 23113482Srekai.gonzalezalberquilla@arm.com double delay_senseamp_mux_lev_2_decoder; 23213482Srekai.gonzalezalberquilla@arm.com double delay_input_htree; 23313482Srekai.gonzalezalberquilla@arm.com double delay_output_htree; 23413482Srekai.gonzalezalberquilla@arm.com double delay_dout_vertical_htree; 23513482Srekai.gonzalezalberquilla@arm.com double delay_dout_horizontal_htree; 23613482Srekai.gonzalezalberquilla@arm.com double delay_comparator; 23713482Srekai.gonzalezalberquilla@arm.com double access_time; 23813482Srekai.gonzalezalberquilla@arm.com double cycle_time; 23913482Srekai.gonzalezalberquilla@arm.com double multisubbank_interleave_cycle_time; 24013482Srekai.gonzalezalberquilla@arm.com double delay_request_network; 24113482Srekai.gonzalezalberquilla@arm.com double delay_inside_mat; 24213482Srekai.gonzalezalberquilla@arm.com double delay_reply_network; 24313482Srekai.gonzalezalberquilla@arm.com double trcd; 24413482Srekai.gonzalezalberquilla@arm.com double cas_latency; 24513482Srekai.gonzalezalberquilla@arm.com double precharge_delay; 24613482Srekai.gonzalezalberquilla@arm.com powerDef power_routing_to_bank; 24713482Srekai.gonzalezalberquilla@arm.com powerDef power_addr_input_htree; 24813482Srekai.gonzalezalberquilla@arm.com powerDef power_data_input_htree; 24913482Srekai.gonzalezalberquilla@arm.com powerDef power_data_output_htree; 25013482Srekai.gonzalezalberquilla@arm.com powerDef power_addr_horizontal_htree; 25113482Srekai.gonzalezalberquilla@arm.com powerDef power_datain_horizontal_htree; 25213482Srekai.gonzalezalberquilla@arm.com powerDef power_dataout_horizontal_htree; 25313482Srekai.gonzalezalberquilla@arm.com powerDef power_addr_vertical_htree; 25413482Srekai.gonzalezalberquilla@arm.com powerDef power_datain_vertical_htree; 25513482Srekai.gonzalezalberquilla@arm.com powerDef power_row_predecoder_drivers; 25613482Srekai.gonzalezalberquilla@arm.com powerDef power_row_predecoder_blocks; 25713482Srekai.gonzalezalberquilla@arm.com powerDef power_row_decoders; 25813482Srekai.gonzalezalberquilla@arm.com powerDef power_bit_mux_predecoder_drivers; 25913482Srekai.gonzalezalberquilla@arm.com powerDef power_bit_mux_predecoder_blocks; 26013482Srekai.gonzalezalberquilla@arm.com powerDef power_bit_mux_decoders; 26113482Srekai.gonzalezalberquilla@arm.com powerDef power_senseamp_mux_lev_1_predecoder_drivers; 26213482Srekai.gonzalezalberquilla@arm.com powerDef power_senseamp_mux_lev_1_predecoder_blocks; 26313482Srekai.gonzalezalberquilla@arm.com powerDef power_senseamp_mux_lev_1_decoders; 26413482Srekai.gonzalezalberquilla@arm.com powerDef power_senseamp_mux_lev_2_predecoder_drivers; 26513482Srekai.gonzalezalberquilla@arm.com powerDef power_senseamp_mux_lev_2_predecoder_blocks; 26613482Srekai.gonzalezalberquilla@arm.com powerDef power_senseamp_mux_lev_2_decoders; 26713482Srekai.gonzalezalberquilla@arm.com powerDef power_bitlines; 26813482Srekai.gonzalezalberquilla@arm.com powerDef power_sense_amps; 26913482Srekai.gonzalezalberquilla@arm.com powerDef power_prechg_eq_drivers; 27013482Srekai.gonzalezalberquilla@arm.com powerDef power_output_drivers_at_subarray; 27113482Srekai.gonzalezalberquilla@arm.com powerDef power_dataout_vertical_htree; 27213482Srekai.gonzalezalberquilla@arm.com powerDef power_comparators; 27313482Srekai.gonzalezalberquilla@arm.com powerDef power_crossbar; 27413482Srekai.gonzalezalberquilla@arm.com powerDef total_power; 27513482Srekai.gonzalezalberquilla@arm.com double area; 27613482Srekai.gonzalezalberquilla@arm.com double all_banks_height; 27713482Srekai.gonzalezalberquilla@arm.com double all_banks_width; 27813482Srekai.gonzalezalberquilla@arm.com double bank_height; 27913482Srekai.gonzalezalberquilla@arm.com double bank_width; 28013482Srekai.gonzalezalberquilla@arm.com double subarray_memory_cell_area_height; 28113482Srekai.gonzalezalberquilla@arm.com double subarray_memory_cell_area_width; 28213482Srekai.gonzalezalberquilla@arm.com double mat_height; 28313482Srekai.gonzalezalberquilla@arm.com double mat_width; 28413482Srekai.gonzalezalberquilla@arm.com double routing_area_height_within_bank; 28513482Srekai.gonzalezalberquilla@arm.com double routing_area_width_within_bank; 28613482Srekai.gonzalezalberquilla@arm.com double area_efficiency; 28713482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_routing_to_bank; 28813482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_addr_horizontal_htree; 28913482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_datain_horizontal_htree; 29013482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_dataout_horizontal_htree; 29113482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_addr_vertical_htree; 29213482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_datain_vertical_htree; 29313482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_row_predecoder_drivers; 29413482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_row_predecoder_blocks; 29513482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_row_decoders; 29613482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_bit_mux_predecoder_drivers; 29713482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_bit_mux_predecoder_blocks; 29813482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_bit_mux_decoders; 29913482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_senseamp_mux_lev_1_predecoder_drivers; 30013482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_senseamp_mux_lev_1_predecoder_blocks; 30113482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_senseamp_mux_lev_1_decoders; 30213482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_senseamp_mux_lev_2_predecoder_drivers; 30313482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_senseamp_mux_lev_2_predecoder_blocks; 30413482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_senseamp_mux_lev_2_decoders; 30513482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_bitlines; 30613482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_sense_amps; 30713482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_prechg_eq_drivers; 30813482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_subarray_output_drivers; 30913482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_dataout_vertical_htree; 31013482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_comparators; 31113482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_crossbar; 31213482Srekai.gonzalezalberquilla@arm.com// double perc_power_dyn_spent_outside_mats; 31313482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_routing_to_bank; 31413482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_addr_horizontal_htree; 31513482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_datain_horizontal_htree; 31613482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_dataout_horizontal_htree; 31713482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_addr_vertical_htree; 31813482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_datain_vertical_htree; 31913482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_row_predecoder_drivers; 32013482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_row_predecoder_blocks; 32113482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_row_decoders; 32213482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_bit_mux_predecoder_drivers; 32313482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_bit_mux_predecoder_blocks; 32413482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_bit_mux_decoders; 32513482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_senseamp_mux_lev_1_predecoder_drivers; 32613482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_senseamp_mux_lev_1_predecoder_blocks; 32713482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_senseamp_mux_lev_1_decoders; 32813482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_senseamp_mux_lev_2_predecoder_drivers; 32913482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_senseamp_mux_lev_2_predecoder_blocks; 33013482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_senseamp_mux_lev_2_decoders; 33113482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_bitlines; 33213482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_sense_amps; 33313482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_prechg_eq_drivers; 33413482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_subarray_output_drivers; 33513482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_dataout_vertical_htree; 33613482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_comparators; 33713482Srekai.gonzalezalberquilla@arm.com// double perc_power_leak_crossbar; 33813482Srekai.gonzalezalberquilla@arm.com// double perc_leak_mats; 33913482Srekai.gonzalezalberquilla@arm.com// double perc_active_mats; 34013482Srekai.gonzalezalberquilla@arm.com double refresh_power; 34113482Srekai.gonzalezalberquilla@arm.com double dram_refresh_period; 34213482Srekai.gonzalezalberquilla@arm.com double dram_array_availability; 34313482Srekai.gonzalezalberquilla@arm.com double dyn_read_energy_from_closed_page; 34413482Srekai.gonzalezalberquilla@arm.com double dyn_read_energy_from_open_page; 34513482Srekai.gonzalezalberquilla@arm.com double leak_power_subbank_closed_page; 34613482Srekai.gonzalezalberquilla@arm.com double leak_power_subbank_open_page; 34713482Srekai.gonzalezalberquilla@arm.com double leak_power_request_and_reply_networks; 34813482Srekai.gonzalezalberquilla@arm.com double activate_energy; 34913482Srekai.gonzalezalberquilla@arm.com double read_energy; 35013482Srekai.gonzalezalberquilla@arm.com double write_energy; 35113482Srekai.gonzalezalberquilla@arm.com double precharge_energy; 35213482Srekai.gonzalezalberquilla@arm.com} results_mem_array; 35313482Srekai.gonzalezalberquilla@arm.com 35413482Srekai.gonzalezalberquilla@arm.com 35513482Srekai.gonzalezalberquilla@arm.comclass uca_org_t 35613482Srekai.gonzalezalberquilla@arm.com{ 35713482Srekai.gonzalezalberquilla@arm.com public: 35813482Srekai.gonzalezalberquilla@arm.com mem_array * tag_array2; 35913482Srekai.gonzalezalberquilla@arm.com mem_array * data_array2; 36013482Srekai.gonzalezalberquilla@arm.com double access_time; 36113482Srekai.gonzalezalberquilla@arm.com double cycle_time; 36213482Srekai.gonzalezalberquilla@arm.com double area; 36313482Srekai.gonzalezalberquilla@arm.com double area_efficiency; 36413482Srekai.gonzalezalberquilla@arm.com powerDef power; 36513482Srekai.gonzalezalberquilla@arm.com double leak_power_with_sleep_transistors_in_mats; 36613482Srekai.gonzalezalberquilla@arm.com double cache_ht; 36713796Sgiacomo.travaglini@arm.com double cache_len; 36813482Srekai.gonzalezalberquilla@arm.com char file_n[100]; 36913796Sgiacomo.travaglini@arm.com double vdd_periph_global; 37013796Sgiacomo.travaglini@arm.com bool valid; 37113482Srekai.gonzalezalberquilla@arm.com results_mem_array tag_array; 37213482Srekai.gonzalezalberquilla@arm.com results_mem_array data_array; 37313482Srekai.gonzalezalberquilla@arm.com 37413482Srekai.gonzalezalberquilla@arm.com uca_org_t(); 37513482Srekai.gonzalezalberquilla@arm.com void find_delay(); 37613482Srekai.gonzalezalberquilla@arm.com void find_energy(); 37713482Srekai.gonzalezalberquilla@arm.com void find_area(); 37813482Srekai.gonzalezalberquilla@arm.com void find_cyc(); 37913482Srekai.gonzalezalberquilla@arm.com void adjust_area();//for McPAT only to adjust routing overhead 38013482Srekai.gonzalezalberquilla@arm.com void cleanup(); 38113482Srekai.gonzalezalberquilla@arm.com ~uca_org_t(){}; 38213482Srekai.gonzalezalberquilla@arm.com}; 38313482Srekai.gonzalezalberquilla@arm.com 38413482Srekai.gonzalezalberquilla@arm.comvoid reconfigure(InputParameter *local_interface, uca_org_t *fin_res); 38513482Srekai.gonzalezalberquilla@arm.com 38613482Srekai.gonzalezalberquilla@arm.comuca_org_t cacti_interface(const string & infile_name); 38713482Srekai.gonzalezalberquilla@arm.com//McPAT's plain interface, please keep !!! 38813482Srekai.gonzalezalberquilla@arm.comuca_org_t cacti_interface(InputParameter * const local_interface); 38913482Srekai.gonzalezalberquilla@arm.com//McPAT's plain interface, please keep !!! 39013482Srekai.gonzalezalberquilla@arm.comuca_org_t init_interface(InputParameter * const local_interface); 39113482Srekai.gonzalezalberquilla@arm.com//McPAT's plain interface, please keep !!! 39213482Srekai.gonzalezalberquilla@arm.comuca_org_t cacti_interface( 39313482Srekai.gonzalezalberquilla@arm.com int cache_size, 39413482Srekai.gonzalezalberquilla@arm.com int line_size, 39513482Srekai.gonzalezalberquilla@arm.com int associativity, 39613482Srekai.gonzalezalberquilla@arm.com int rw_ports, 39713482Srekai.gonzalezalberquilla@arm.com int excl_read_ports, 39813482Srekai.gonzalezalberquilla@arm.com int excl_write_ports, 39913482Srekai.gonzalezalberquilla@arm.com int single_ended_read_ports, 40013482Srekai.gonzalezalberquilla@arm.com int search_ports, 40113482Srekai.gonzalezalberquilla@arm.com int banks, 40213482Srekai.gonzalezalberquilla@arm.com double tech_node, 40313482Srekai.gonzalezalberquilla@arm.com int output_width, 40413482Srekai.gonzalezalberquilla@arm.com int specific_tag, 40513482Srekai.gonzalezalberquilla@arm.com int tag_width, 40613487Sgiacomo.travaglini@arm.com int access_mode, 40713482Srekai.gonzalezalberquilla@arm.com int cache, 40813482Srekai.gonzalezalberquilla@arm.com int main_mem, 40913482Srekai.gonzalezalberquilla@arm.com int obj_func_delay, 41013482Srekai.gonzalezalberquilla@arm.com int obj_func_dynamic_power, 41113482Srekai.gonzalezalberquilla@arm.com int obj_func_leakage_power, 41213482Srekai.gonzalezalberquilla@arm.com int obj_func_cycle_time, 41313482Srekai.gonzalezalberquilla@arm.com int obj_func_area, 41413482Srekai.gonzalezalberquilla@arm.com int dev_func_delay, 41513482Srekai.gonzalezalberquilla@arm.com int dev_func_dynamic_power, 41613482Srekai.gonzalezalberquilla@arm.com int dev_func_leakage_power, 41713482Srekai.gonzalezalberquilla@arm.com int dev_func_area, 41813482Srekai.gonzalezalberquilla@arm.com int dev_func_cycle_time, 41913482Srekai.gonzalezalberquilla@arm.com int ed_ed2_none, // 0 - ED, 1 - ED^2, 2 - use weight and deviate 42013482Srekai.gonzalezalberquilla@arm.com int temp, 42113482Srekai.gonzalezalberquilla@arm.com int wt, //0 - default(search across everything), 1 - global, 2 - 5% delay penalty, 3 - 10%, 4 - 20 %, 5 - 30%, 6 - low-swing 42213482Srekai.gonzalezalberquilla@arm.com int data_arr_ram_cell_tech_flavor_in, 42313482Srekai.gonzalezalberquilla@arm.com int data_arr_peri_global_tech_flavor_in, 42413482Srekai.gonzalezalberquilla@arm.com int tag_arr_ram_cell_tech_flavor_in, 42513482Srekai.gonzalezalberquilla@arm.com int tag_arr_peri_global_tech_flavor_in, 42613482Srekai.gonzalezalberquilla@arm.com int interconnect_projection_type_in, 42713482Srekai.gonzalezalberquilla@arm.com int wire_inside_mat_type_in, 42813482Srekai.gonzalezalberquilla@arm.com int wire_outside_mat_type_in, 42913482Srekai.gonzalezalberquilla@arm.com int REPEATERS_IN_HTREE_SEGMENTS_in, 43013482Srekai.gonzalezalberquilla@arm.com int VERTICAL_HTREE_WIRES_OVER_THE_ARRAY_in, 43113482Srekai.gonzalezalberquilla@arm.com int BROADCAST_ADDR_DATAIN_OVER_VERTICAL_HTREES_in, 43213482Srekai.gonzalezalberquilla@arm.com int PAGE_SIZE_BITS_in, 43313482Srekai.gonzalezalberquilla@arm.com int BURST_LENGTH_in, 43413482Srekai.gonzalezalberquilla@arm.com int INTERNAL_PREFETCH_WIDTH_in, 43513482Srekai.gonzalezalberquilla@arm.com int force_wiretype, 43613482Srekai.gonzalezalberquilla@arm.com int wiretype, 43713482Srekai.gonzalezalberquilla@arm.com int force_config, 43813482Srekai.gonzalezalberquilla@arm.com int ndwl, 43913482Srekai.gonzalezalberquilla@arm.com int ndbl, 44013482Srekai.gonzalezalberquilla@arm.com int nspd, 44113482Srekai.gonzalezalberquilla@arm.com int ndcm, 44213482Srekai.gonzalezalberquilla@arm.com int ndsam1, 44313482Srekai.gonzalezalberquilla@arm.com int ndsam2, 44413482Srekai.gonzalezalberquilla@arm.com int ecc); 44513482Srekai.gonzalezalberquilla@arm.com// int cache_size, 44613482Srekai.gonzalezalberquilla@arm.com// int line_size, 44713482Srekai.gonzalezalberquilla@arm.com// int associativity, 44813482Srekai.gonzalezalberquilla@arm.com// int rw_ports, 44913482Srekai.gonzalezalberquilla@arm.com// int excl_read_ports, 45013482Srekai.gonzalezalberquilla@arm.com// int excl_write_ports, 45113482Srekai.gonzalezalberquilla@arm.com// int single_ended_read_ports, 45213482Srekai.gonzalezalberquilla@arm.com// int banks, 45313482Srekai.gonzalezalberquilla@arm.com// double tech_node, 45413482Srekai.gonzalezalberquilla@arm.com// int output_width, 45513482Srekai.gonzalezalberquilla@arm.com// int specific_tag, 45613482Srekai.gonzalezalberquilla@arm.com// int tag_width, 45713482Srekai.gonzalezalberquilla@arm.com// int access_mode, 45813482Srekai.gonzalezalberquilla@arm.com// int cache, 45913482Srekai.gonzalezalberquilla@arm.com// int main_mem, 46013482Srekai.gonzalezalberquilla@arm.com// int obj_func_delay, 46113482Srekai.gonzalezalberquilla@arm.com// int obj_func_dynamic_power, 46213482Srekai.gonzalezalberquilla@arm.com// int obj_func_leakage_power, 46313482Srekai.gonzalezalberquilla@arm.com// int obj_func_area, 46413482Srekai.gonzalezalberquilla@arm.com// int obj_func_cycle_time, 46513482Srekai.gonzalezalberquilla@arm.com// int dev_func_delay, 46613482Srekai.gonzalezalberquilla@arm.com// int dev_func_dynamic_power, 46713482Srekai.gonzalezalberquilla@arm.com// int dev_func_leakage_power, 46813482Srekai.gonzalezalberquilla@arm.com// int dev_func_area, 46913482Srekai.gonzalezalberquilla@arm.com// int dev_func_cycle_time, 47013482Srekai.gonzalezalberquilla@arm.com// int temp, 47113482Srekai.gonzalezalberquilla@arm.com// int data_arr_ram_cell_tech_flavor_in, 47213482Srekai.gonzalezalberquilla@arm.com// int data_arr_peri_global_tech_flavor_in, 47313482Srekai.gonzalezalberquilla@arm.com// int tag_arr_ram_cell_tech_flavor_in, 47413482Srekai.gonzalezalberquilla@arm.com// int tag_arr_peri_global_tech_flavor_in, 47513482Srekai.gonzalezalberquilla@arm.com// int interconnect_projection_type_in, 47613482Srekai.gonzalezalberquilla@arm.com// int wire_inside_mat_type_in, 47713482Srekai.gonzalezalberquilla@arm.com// int wire_outside_mat_type_in, 47813482Srekai.gonzalezalberquilla@arm.com// int REPEATERS_IN_HTREE_SEGMENTS_in, 47913482Srekai.gonzalezalberquilla@arm.com// int VERTICAL_HTREE_WIRES_OVER_THE_ARRAY_in, 48013482Srekai.gonzalezalberquilla@arm.com// int BROADCAST_ADDR_DATAIN_OVER_VERTICAL_HTREES_in, 48113482Srekai.gonzalezalberquilla@arm.com//// double MAXAREACONSTRAINT_PERC_in, 48213482Srekai.gonzalezalberquilla@arm.com//// double MAXACCTIMECONSTRAINT_PERC_in, 48313482Srekai.gonzalezalberquilla@arm.com//// double MAX_PERC_DIFF_IN_DELAY_FROM_BEST_DELAY_REPEATER_SOLUTION_in, 48413482Srekai.gonzalezalberquilla@arm.com// int PAGE_SIZE_BITS_in, 48513482Srekai.gonzalezalberquilla@arm.com// int BURST_LENGTH_in, 48613482Srekai.gonzalezalberquilla@arm.com// int INTERNAL_PREFETCH_WIDTH_in); 48713482Srekai.gonzalezalberquilla@arm.com 48813482Srekai.gonzalezalberquilla@arm.com//Naveen's interface 48913482Srekai.gonzalezalberquilla@arm.comuca_org_t cacti_interface( 49013482Srekai.gonzalezalberquilla@arm.com int cache_size, 49113482Srekai.gonzalezalberquilla@arm.com int line_size, 49213482Srekai.gonzalezalberquilla@arm.com int associativity, 49313482Srekai.gonzalezalberquilla@arm.com int rw_ports, 49413482Srekai.gonzalezalberquilla@arm.com int excl_read_ports, 49513482Srekai.gonzalezalberquilla@arm.com int excl_write_ports, 49613482Srekai.gonzalezalberquilla@arm.com int single_ended_read_ports, 49713482Srekai.gonzalezalberquilla@arm.com int banks, 49813482Srekai.gonzalezalberquilla@arm.com double tech_node, 49913482Srekai.gonzalezalberquilla@arm.com int page_sz, 50013482Srekai.gonzalezalberquilla@arm.com int burst_length, 50113482Srekai.gonzalezalberquilla@arm.com int pre_width, 50213482Srekai.gonzalezalberquilla@arm.com int output_width, 50313482Srekai.gonzalezalberquilla@arm.com int specific_tag, 50413482Srekai.gonzalezalberquilla@arm.com int tag_width, 50513482Srekai.gonzalezalberquilla@arm.com int access_mode, //0 normal, 1 seq, 2 fast 50613482Srekai.gonzalezalberquilla@arm.com int cache, //scratch ram or cache 50713482Srekai.gonzalezalberquilla@arm.com int main_mem, 50813482Srekai.gonzalezalberquilla@arm.com int obj_func_delay, 50913482Srekai.gonzalezalberquilla@arm.com int obj_func_dynamic_power, 51013482Srekai.gonzalezalberquilla@arm.com int obj_func_leakage_power, 51113482Srekai.gonzalezalberquilla@arm.com int obj_func_area, 51213482Srekai.gonzalezalberquilla@arm.com int obj_func_cycle_time, 51313482Srekai.gonzalezalberquilla@arm.com int dev_func_delay, 51413482Srekai.gonzalezalberquilla@arm.com int dev_func_dynamic_power, 51513482Srekai.gonzalezalberquilla@arm.com int dev_func_leakage_power, 51613482Srekai.gonzalezalberquilla@arm.com int dev_func_area, 51713482Srekai.gonzalezalberquilla@arm.com int dev_func_cycle_time, 51813482Srekai.gonzalezalberquilla@arm.com int ed_ed2_none, // 0 - ED, 1 - ED^2, 2 - use weight and deviate 51913482Srekai.gonzalezalberquilla@arm.com int temp, 52013482Srekai.gonzalezalberquilla@arm.com int wt, //0 - default(search across everything), 1 - global, 2 - 5% delay penalty, 3 - 10%, 4 - 20 %, 5 - 30%, 6 - low-swing 52113482Srekai.gonzalezalberquilla@arm.com int data_arr_ram_cell_tech_flavor_in, 52213482Srekai.gonzalezalberquilla@arm.com int data_arr_peri_global_tech_flavor_in, 52313482Srekai.gonzalezalberquilla@arm.com int tag_arr_ram_cell_tech_flavor_in, 52413482Srekai.gonzalezalberquilla@arm.com int tag_arr_peri_global_tech_flavor_in, 52513482Srekai.gonzalezalberquilla@arm.com int interconnect_projection_type_in, // 0 - aggressive, 1 - normal 52613482Srekai.gonzalezalberquilla@arm.com int wire_inside_mat_type_in, 52713482Srekai.gonzalezalberquilla@arm.com int wire_outside_mat_type_in, 52813482Srekai.gonzalezalberquilla@arm.com int is_nuca, // 0 - UCA, 1 - NUCA 52913482Srekai.gonzalezalberquilla@arm.com int core_count, 53013482Srekai.gonzalezalberquilla@arm.com int cache_level, // 0 - L2, 1 - L3 53113482Srekai.gonzalezalberquilla@arm.com int nuca_bank_count, 53213482Srekai.gonzalezalberquilla@arm.com int nuca_obj_func_delay, 53313482Srekai.gonzalezalberquilla@arm.com int nuca_obj_func_dynamic_power, 53413482Srekai.gonzalezalberquilla@arm.com int nuca_obj_func_leakage_power, 53513482Srekai.gonzalezalberquilla@arm.com int nuca_obj_func_area, 53613482Srekai.gonzalezalberquilla@arm.com int nuca_obj_func_cycle_time, 53713482Srekai.gonzalezalberquilla@arm.com int nuca_dev_func_delay, 53813482Srekai.gonzalezalberquilla@arm.com int nuca_dev_func_dynamic_power, 53913482Srekai.gonzalezalberquilla@arm.com int nuca_dev_func_leakage_power, 54013482Srekai.gonzalezalberquilla@arm.com int nuca_dev_func_area, 54113482Srekai.gonzalezalberquilla@arm.com int nuca_dev_func_cycle_time, 54213482Srekai.gonzalezalberquilla@arm.com int REPEATERS_IN_HTREE_SEGMENTS_in,//TODO for now only wires with repeaters are supported 54313482Srekai.gonzalezalberquilla@arm.com int p_input); 54413482Srekai.gonzalezalberquilla@arm.com 54513482Srekai.gonzalezalberquilla@arm.comclass mem_array 54613482Srekai.gonzalezalberquilla@arm.com{ 54713482Srekai.gonzalezalberquilla@arm.com public: 54813482Srekai.gonzalezalberquilla@arm.com int Ndcm; 54913482Srekai.gonzalezalberquilla@arm.com int Ndwl; 55013482Srekai.gonzalezalberquilla@arm.com int Ndbl; 55113482Srekai.gonzalezalberquilla@arm.com double Nspd; 55213482Srekai.gonzalezalberquilla@arm.com int deg_bl_muxing; 55313482Srekai.gonzalezalberquilla@arm.com int Ndsam_lev_1; 55413482Srekai.gonzalezalberquilla@arm.com int Ndsam_lev_2; 55513482Srekai.gonzalezalberquilla@arm.com double access_time; 55613482Srekai.gonzalezalberquilla@arm.com double cycle_time; 55713482Srekai.gonzalezalberquilla@arm.com double multisubbank_interleave_cycle_time; 55813482Srekai.gonzalezalberquilla@arm.com double area_ram_cells; 55913482Srekai.gonzalezalberquilla@arm.com double area; 56013482Srekai.gonzalezalberquilla@arm.com powerDef power; 56113482Srekai.gonzalezalberquilla@arm.com double delay_senseamp_mux_decoder; 56213482Srekai.gonzalezalberquilla@arm.com double delay_before_subarray_output_driver; 56313482Srekai.gonzalezalberquilla@arm.com double delay_from_subarray_output_driver_to_output; 56413482Srekai.gonzalezalberquilla@arm.com double height; 56513482Srekai.gonzalezalberquilla@arm.com double width; 56613482Srekai.gonzalezalberquilla@arm.com 56713482Srekai.gonzalezalberquilla@arm.com double mat_height; 56813482Srekai.gonzalezalberquilla@arm.com double mat_length; 56913482Srekai.gonzalezalberquilla@arm.com double subarray_length; 57013482Srekai.gonzalezalberquilla@arm.com double subarray_height; 57113482Srekai.gonzalezalberquilla@arm.com 57213482Srekai.gonzalezalberquilla@arm.com double delay_route_to_bank, 57313482Srekai.gonzalezalberquilla@arm.com delay_input_htree, 57413482Srekai.gonzalezalberquilla@arm.com delay_row_predecode_driver_and_block, 57513482Srekai.gonzalezalberquilla@arm.com delay_row_decoder, 57613482Srekai.gonzalezalberquilla@arm.com delay_bitlines, 57713482Srekai.gonzalezalberquilla@arm.com delay_sense_amp, 57813482Srekai.gonzalezalberquilla@arm.com delay_subarray_output_driver, 57913482Srekai.gonzalezalberquilla@arm.com delay_dout_htree, 58013482Srekai.gonzalezalberquilla@arm.com delay_comparator, 58113482Srekai.gonzalezalberquilla@arm.com delay_matchlines; 58213482Srekai.gonzalezalberquilla@arm.com 58313482Srekai.gonzalezalberquilla@arm.com double all_banks_height, 58413482Srekai.gonzalezalberquilla@arm.com all_banks_width, 58513482Srekai.gonzalezalberquilla@arm.com area_efficiency; 58613482Srekai.gonzalezalberquilla@arm.com 58713482Srekai.gonzalezalberquilla@arm.com powerDef power_routing_to_bank; 58813482Srekai.gonzalezalberquilla@arm.com powerDef power_addr_input_htree; 58913482Srekai.gonzalezalberquilla@arm.com powerDef power_data_input_htree; 59013482Srekai.gonzalezalberquilla@arm.com powerDef power_data_output_htree; 59113482Srekai.gonzalezalberquilla@arm.com powerDef power_htree_in_search; 59213482Srekai.gonzalezalberquilla@arm.com powerDef power_htree_out_search; 59313482Srekai.gonzalezalberquilla@arm.com powerDef power_row_predecoder_drivers; 59413482Srekai.gonzalezalberquilla@arm.com powerDef power_row_predecoder_blocks; 59513482Srekai.gonzalezalberquilla@arm.com powerDef power_row_decoders; 59613482Srekai.gonzalezalberquilla@arm.com powerDef power_bit_mux_predecoder_drivers; 59713482Srekai.gonzalezalberquilla@arm.com powerDef power_bit_mux_predecoder_blocks; 59813482Srekai.gonzalezalberquilla@arm.com powerDef power_bit_mux_decoders; 59913482Srekai.gonzalezalberquilla@arm.com powerDef power_senseamp_mux_lev_1_predecoder_drivers; 60013482Srekai.gonzalezalberquilla@arm.com powerDef power_senseamp_mux_lev_1_predecoder_blocks; 60113482Srekai.gonzalezalberquilla@arm.com powerDef power_senseamp_mux_lev_1_decoders; 60213482Srekai.gonzalezalberquilla@arm.com powerDef power_senseamp_mux_lev_2_predecoder_drivers; 60313482Srekai.gonzalezalberquilla@arm.com powerDef power_senseamp_mux_lev_2_predecoder_blocks; 60413482Srekai.gonzalezalberquilla@arm.com powerDef power_senseamp_mux_lev_2_decoders; 60513482Srekai.gonzalezalberquilla@arm.com powerDef power_bitlines; 60613482Srekai.gonzalezalberquilla@arm.com powerDef power_sense_amps; 60713482Srekai.gonzalezalberquilla@arm.com powerDef power_prechg_eq_drivers; 60813482Srekai.gonzalezalberquilla@arm.com powerDef power_output_drivers_at_subarray; 60913482Srekai.gonzalezalberquilla@arm.com powerDef power_dataout_vertical_htree; 61013482Srekai.gonzalezalberquilla@arm.com powerDef power_comparators; 61113482Srekai.gonzalezalberquilla@arm.com 61213482Srekai.gonzalezalberquilla@arm.com powerDef power_cam_bitline_precharge_eq_drv; 61313482Srekai.gonzalezalberquilla@arm.com powerDef power_searchline; 61413482Srekai.gonzalezalberquilla@arm.com powerDef power_searchline_precharge; 61513482Srekai.gonzalezalberquilla@arm.com powerDef power_matchlines; 61613482Srekai.gonzalezalberquilla@arm.com powerDef power_matchline_precharge; 61713482Srekai.gonzalezalberquilla@arm.com powerDef power_matchline_to_wordline_drv; 61813482Srekai.gonzalezalberquilla@arm.com 61913482Srekai.gonzalezalberquilla@arm.com min_values_t *arr_min; 62013482Srekai.gonzalezalberquilla@arm.com enum Wire_type wt; 62113482Srekai.gonzalezalberquilla@arm.com 62213482Srekai.gonzalezalberquilla@arm.com // dram stats 62313482Srekai.gonzalezalberquilla@arm.com double activate_energy, read_energy, write_energy, precharge_energy, 62413482Srekai.gonzalezalberquilla@arm.com refresh_power, leak_power_subbank_closed_page, leak_power_subbank_open_page, 62513482Srekai.gonzalezalberquilla@arm.com leak_power_request_and_reply_networks; 62613482Srekai.gonzalezalberquilla@arm.com 62713482Srekai.gonzalezalberquilla@arm.com double precharge_delay; 62813482Srekai.gonzalezalberquilla@arm.com 62913482Srekai.gonzalezalberquilla@arm.com static bool lt(const mem_array * m1, const mem_array * m2); 63013482Srekai.gonzalezalberquilla@arm.com}; 63113482Srekai.gonzalezalberquilla@arm.com 63213482Srekai.gonzalezalberquilla@arm.com 63313482Srekai.gonzalezalberquilla@arm.com#endif 63413482Srekai.gonzalezalberquilla@arm.com