cacti_interface.h revision 10152
110152Satgutier@umich.edu/***************************************************************************** 210152Satgutier@umich.edu * McPAT/CACTI 310152Satgutier@umich.edu * SOFTWARE LICENSE AGREEMENT 410152Satgutier@umich.edu * Copyright 2012 Hewlett-Packard Development Company, L.P. 510152Satgutier@umich.edu * All Rights Reserved 610152Satgutier@umich.edu * 710152Satgutier@umich.edu * Redistribution and use in source and binary forms, with or without 810152Satgutier@umich.edu * modification, are permitted provided that the following conditions are 910152Satgutier@umich.edu * met: redistributions of source code must retain the above copyright 1010152Satgutier@umich.edu * notice, this list of conditions and the following disclaimer; 1110152Satgutier@umich.edu * redistributions in binary form must reproduce the above copyright 1210152Satgutier@umich.edu * notice, this list of conditions and the following disclaimer in the 1310152Satgutier@umich.edu * documentation and/or other materials provided with the distribution; 1410152Satgutier@umich.edu * neither the name of the copyright holders nor the names of its 1510152Satgutier@umich.edu * contributors may be used to endorse or promote products derived from 1610152Satgutier@umich.edu * this software without specific prior written permission. 1710152Satgutier@umich.edu 1810152Satgutier@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1910152Satgutier@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2010152Satgutier@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2110152Satgutier@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2210152Satgutier@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2310152Satgutier@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2410152Satgutier@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2510152Satgutier@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2610152Satgutier@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2710152Satgutier@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2810152Satgutier@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.” 2910152Satgutier@umich.edu * 3010152Satgutier@umich.edu ***************************************************************************/ 3110152Satgutier@umich.edu 3210152Satgutier@umich.edu 3310152Satgutier@umich.edu 3410152Satgutier@umich.edu#ifndef __CACTI_INTERFACE_H__ 3510152Satgutier@umich.edu#define __CACTI_INTERFACE_H__ 3610152Satgutier@umich.edu 3710152Satgutier@umich.edu#include <iostream> 3810152Satgutier@umich.edu#include <list> 3910152Satgutier@umich.edu#include <map> 4010152Satgutier@umich.edu#include <string> 4110152Satgutier@umich.edu#include <vector> 4210152Satgutier@umich.edu 4310152Satgutier@umich.edu#include "const.h" 4410152Satgutier@umich.edu 4510152Satgutier@umich.eduusing namespace std; 4610152Satgutier@umich.edu 4710152Satgutier@umich.edu 4810152Satgutier@umich.educlass min_values_t; 4910152Satgutier@umich.educlass mem_array; 5010152Satgutier@umich.educlass uca_org_t; 5110152Satgutier@umich.edu 5210152Satgutier@umich.edu 5310152Satgutier@umich.educlass powerComponents 5410152Satgutier@umich.edu{ 5510152Satgutier@umich.edu public: 5610152Satgutier@umich.edu double dynamic; 5710152Satgutier@umich.edu double leakage; 5810152Satgutier@umich.edu double gate_leakage; 5910152Satgutier@umich.edu double short_circuit; 6010152Satgutier@umich.edu double longer_channel_leakage; 6110152Satgutier@umich.edu 6210152Satgutier@umich.edu powerComponents() : dynamic(0), leakage(0), gate_leakage(0), short_circuit(0), longer_channel_leakage(0) { } 6310152Satgutier@umich.edu powerComponents(const powerComponents & obj) { *this = obj; } 6410152Satgutier@umich.edu powerComponents & operator=(const powerComponents & rhs) 6510152Satgutier@umich.edu { 6610152Satgutier@umich.edu dynamic = rhs.dynamic; 6710152Satgutier@umich.edu leakage = rhs.leakage; 6810152Satgutier@umich.edu gate_leakage = rhs.gate_leakage; 6910152Satgutier@umich.edu short_circuit = rhs.short_circuit; 7010152Satgutier@umich.edu longer_channel_leakage = rhs.longer_channel_leakage; 7110152Satgutier@umich.edu return *this; 7210152Satgutier@umich.edu } 7310152Satgutier@umich.edu void reset() { dynamic = 0; leakage = 0; gate_leakage = 0; short_circuit = 0;longer_channel_leakage = 0;} 7410152Satgutier@umich.edu 7510152Satgutier@umich.edu friend powerComponents operator+(const powerComponents & x, const powerComponents & y); 7610152Satgutier@umich.edu friend powerComponents operator*(const powerComponents & x, double const * const y); 7710152Satgutier@umich.edu}; 7810152Satgutier@umich.edu 7910152Satgutier@umich.edu 8010152Satgutier@umich.edu 8110152Satgutier@umich.educlass powerDef 8210152Satgutier@umich.edu{ 8310152Satgutier@umich.edu public: 8410152Satgutier@umich.edu powerComponents readOp; 8510152Satgutier@umich.edu powerComponents writeOp; 8610152Satgutier@umich.edu powerComponents searchOp;//Sheng: for CAM and FA 8710152Satgutier@umich.edu 8810152Satgutier@umich.edu powerDef() : readOp(), writeOp(), searchOp() { } 8910152Satgutier@umich.edu void reset() { readOp.reset(); writeOp.reset(); searchOp.reset();} 9010152Satgutier@umich.edu 9110152Satgutier@umich.edu friend powerDef operator+(const powerDef & x, const powerDef & y); 9210152Satgutier@umich.edu friend powerDef operator*(const powerDef & x, double const * const y); 9310152Satgutier@umich.edu}; 9410152Satgutier@umich.edu 9510152Satgutier@umich.eduenum Wire_type 9610152Satgutier@umich.edu{ 9710152Satgutier@umich.edu Global /* gloabl wires with repeaters */, 9810152Satgutier@umich.edu Global_5 /* 5% delay penalty */, 9910152Satgutier@umich.edu Global_10 /* 10% delay penalty */, 10010152Satgutier@umich.edu Global_20 /* 20% delay penalty */, 10110152Satgutier@umich.edu Global_30 /* 30% delay penalty */, 10210152Satgutier@umich.edu Low_swing /* differential low power wires with high area overhead */, 10310152Satgutier@umich.edu Semi_global /* mid-level wires with repeaters*/, 10410152Satgutier@umich.edu Transmission /* tranmission lines with high area overhead */, 10510152Satgutier@umich.edu Optical /* optical wires */, 10610152Satgutier@umich.edu Invalid_wtype 10710152Satgutier@umich.edu}; 10810152Satgutier@umich.edu 10910152Satgutier@umich.edu 11010152Satgutier@umich.edu 11110152Satgutier@umich.educlass InputParameter 11210152Satgutier@umich.edu{ 11310152Satgutier@umich.edu public: 11410152Satgutier@umich.edu void parse_cfg(const string & infile); 11510152Satgutier@umich.edu 11610152Satgutier@umich.edu bool error_checking(); // return false if the input parameters are problematic 11710152Satgutier@umich.edu void display_ip(); 11810152Satgutier@umich.edu 11910152Satgutier@umich.edu unsigned int cache_sz; // in bytes 12010152Satgutier@umich.edu unsigned int line_sz; 12110152Satgutier@umich.edu unsigned int assoc; 12210152Satgutier@umich.edu unsigned int nbanks; 12310152Satgutier@umich.edu unsigned int out_w;// == nr_bits_out 12410152Satgutier@umich.edu bool specific_tag; 12510152Satgutier@umich.edu unsigned int tag_w; 12610152Satgutier@umich.edu unsigned int access_mode; 12710152Satgutier@umich.edu unsigned int obj_func_dyn_energy; 12810152Satgutier@umich.edu unsigned int obj_func_dyn_power; 12910152Satgutier@umich.edu unsigned int obj_func_leak_power; 13010152Satgutier@umich.edu unsigned int obj_func_cycle_t; 13110152Satgutier@umich.edu 13210152Satgutier@umich.edu double F_sz_nm; // feature size in nm 13310152Satgutier@umich.edu double F_sz_um; // feature size in um 13410152Satgutier@umich.edu unsigned int num_rw_ports; 13510152Satgutier@umich.edu unsigned int num_rd_ports; 13610152Satgutier@umich.edu unsigned int num_wr_ports; 13710152Satgutier@umich.edu unsigned int num_se_rd_ports; // number of single ended read ports 13810152Satgutier@umich.edu unsigned int num_search_ports; // Sheng: number of search ports for CAM 13910152Satgutier@umich.edu bool is_main_mem; 14010152Satgutier@umich.edu bool is_cache; 14110152Satgutier@umich.edu bool pure_ram; 14210152Satgutier@umich.edu bool pure_cam; 14310152Satgutier@umich.edu bool rpters_in_htree; // if there are repeaters in htree segment 14410152Satgutier@umich.edu unsigned int ver_htree_wires_over_array; 14510152Satgutier@umich.edu unsigned int broadcast_addr_din_over_ver_htrees; 14610152Satgutier@umich.edu unsigned int temp; 14710152Satgutier@umich.edu 14810152Satgutier@umich.edu unsigned int ram_cell_tech_type; 14910152Satgutier@umich.edu unsigned int peri_global_tech_type; 15010152Satgutier@umich.edu unsigned int data_arr_ram_cell_tech_type; 15110152Satgutier@umich.edu unsigned int data_arr_peri_global_tech_type; 15210152Satgutier@umich.edu unsigned int tag_arr_ram_cell_tech_type; 15310152Satgutier@umich.edu unsigned int tag_arr_peri_global_tech_type; 15410152Satgutier@umich.edu 15510152Satgutier@umich.edu unsigned int burst_len; 15610152Satgutier@umich.edu unsigned int int_prefetch_w; 15710152Satgutier@umich.edu unsigned int page_sz_bits; 15810152Satgutier@umich.edu 15910152Satgutier@umich.edu unsigned int ic_proj_type; // interconnect_projection_type 16010152Satgutier@umich.edu unsigned int wire_is_mat_type; // wire_inside_mat_type 16110152Satgutier@umich.edu unsigned int wire_os_mat_type; // wire_outside_mat_type 16210152Satgutier@umich.edu enum Wire_type wt; 16310152Satgutier@umich.edu int force_wiretype; 16410152Satgutier@umich.edu bool print_input_args; 16510152Satgutier@umich.edu unsigned int nuca_cache_sz; // TODO 16610152Satgutier@umich.edu int ndbl, ndwl, nspd, ndsam1, ndsam2, ndcm; 16710152Satgutier@umich.edu bool force_cache_config; 16810152Satgutier@umich.edu 16910152Satgutier@umich.edu int cache_level; 17010152Satgutier@umich.edu int cores; 17110152Satgutier@umich.edu int nuca_bank_count; 17210152Satgutier@umich.edu int force_nuca_bank; 17310152Satgutier@umich.edu 17410152Satgutier@umich.edu int delay_wt, dynamic_power_wt, leakage_power_wt, 17510152Satgutier@umich.edu cycle_time_wt, area_wt; 17610152Satgutier@umich.edu int delay_wt_nuca, dynamic_power_wt_nuca, leakage_power_wt_nuca, 17710152Satgutier@umich.edu cycle_time_wt_nuca, area_wt_nuca; 17810152Satgutier@umich.edu 17910152Satgutier@umich.edu int delay_dev, dynamic_power_dev, leakage_power_dev, 18010152Satgutier@umich.edu cycle_time_dev, area_dev; 18110152Satgutier@umich.edu int delay_dev_nuca, dynamic_power_dev_nuca, leakage_power_dev_nuca, 18210152Satgutier@umich.edu cycle_time_dev_nuca, area_dev_nuca; 18310152Satgutier@umich.edu int ed; //ED or ED2 optimization 18410152Satgutier@umich.edu int nuca; 18510152Satgutier@umich.edu 18610152Satgutier@umich.edu bool fast_access; 18710152Satgutier@umich.edu unsigned int block_sz; // bytes 18810152Satgutier@umich.edu unsigned int tag_assoc; 18910152Satgutier@umich.edu unsigned int data_assoc; 19010152Satgutier@umich.edu bool is_seq_acc; 19110152Satgutier@umich.edu bool fully_assoc; 19210152Satgutier@umich.edu unsigned int nsets; // == number_of_sets 19310152Satgutier@umich.edu int print_detail; 19410152Satgutier@umich.edu 19510152Satgutier@umich.edu 19610152Satgutier@umich.edu bool add_ecc_b_; 19710152Satgutier@umich.edu //parameters for design constraint 19810152Satgutier@umich.edu double throughput; 19910152Satgutier@umich.edu double latency; 20010152Satgutier@umich.edu bool pipelinable; 20110152Satgutier@umich.edu int pipeline_stages; 20210152Satgutier@umich.edu int per_stage_vector; 20310152Satgutier@umich.edu bool with_clock_grid; 20410152Satgutier@umich.edu}; 20510152Satgutier@umich.edu 20610152Satgutier@umich.edu 20710152Satgutier@umich.edutypedef struct{ 20810152Satgutier@umich.edu int Ndwl; 20910152Satgutier@umich.edu int Ndbl; 21010152Satgutier@umich.edu double Nspd; 21110152Satgutier@umich.edu int deg_bl_muxing; 21210152Satgutier@umich.edu int Ndsam_lev_1; 21310152Satgutier@umich.edu int Ndsam_lev_2; 21410152Satgutier@umich.edu int number_activated_mats_horizontal_direction; 21510152Satgutier@umich.edu int number_subbanks; 21610152Satgutier@umich.edu int page_size_in_bits; 21710152Satgutier@umich.edu double delay_route_to_bank; 21810152Satgutier@umich.edu double delay_crossbar; 21910152Satgutier@umich.edu double delay_addr_din_horizontal_htree; 22010152Satgutier@umich.edu double delay_addr_din_vertical_htree; 22110152Satgutier@umich.edu double delay_row_predecode_driver_and_block; 22210152Satgutier@umich.edu double delay_row_decoder; 22310152Satgutier@umich.edu double delay_bitlines; 22410152Satgutier@umich.edu double delay_sense_amp; 22510152Satgutier@umich.edu double delay_subarray_output_driver; 22610152Satgutier@umich.edu double delay_bit_mux_predecode_driver_and_block; 22710152Satgutier@umich.edu double delay_bit_mux_decoder; 22810152Satgutier@umich.edu double delay_senseamp_mux_lev_1_predecode_driver_and_block; 22910152Satgutier@umich.edu double delay_senseamp_mux_lev_1_decoder; 23010152Satgutier@umich.edu double delay_senseamp_mux_lev_2_predecode_driver_and_block; 23110152Satgutier@umich.edu double delay_senseamp_mux_lev_2_decoder; 23210152Satgutier@umich.edu double delay_input_htree; 23310152Satgutier@umich.edu double delay_output_htree; 23410152Satgutier@umich.edu double delay_dout_vertical_htree; 23510152Satgutier@umich.edu double delay_dout_horizontal_htree; 23610152Satgutier@umich.edu double delay_comparator; 23710152Satgutier@umich.edu double access_time; 23810152Satgutier@umich.edu double cycle_time; 23910152Satgutier@umich.edu double multisubbank_interleave_cycle_time; 24010152Satgutier@umich.edu double delay_request_network; 24110152Satgutier@umich.edu double delay_inside_mat; 24210152Satgutier@umich.edu double delay_reply_network; 24310152Satgutier@umich.edu double trcd; 24410152Satgutier@umich.edu double cas_latency; 24510152Satgutier@umich.edu double precharge_delay; 24610152Satgutier@umich.edu powerDef power_routing_to_bank; 24710152Satgutier@umich.edu powerDef power_addr_input_htree; 24810152Satgutier@umich.edu powerDef power_data_input_htree; 24910152Satgutier@umich.edu powerDef power_data_output_htree; 25010152Satgutier@umich.edu powerDef power_addr_horizontal_htree; 25110152Satgutier@umich.edu powerDef power_datain_horizontal_htree; 25210152Satgutier@umich.edu powerDef power_dataout_horizontal_htree; 25310152Satgutier@umich.edu powerDef power_addr_vertical_htree; 25410152Satgutier@umich.edu powerDef power_datain_vertical_htree; 25510152Satgutier@umich.edu powerDef power_row_predecoder_drivers; 25610152Satgutier@umich.edu powerDef power_row_predecoder_blocks; 25710152Satgutier@umich.edu powerDef power_row_decoders; 25810152Satgutier@umich.edu powerDef power_bit_mux_predecoder_drivers; 25910152Satgutier@umich.edu powerDef power_bit_mux_predecoder_blocks; 26010152Satgutier@umich.edu powerDef power_bit_mux_decoders; 26110152Satgutier@umich.edu powerDef power_senseamp_mux_lev_1_predecoder_drivers; 26210152Satgutier@umich.edu powerDef power_senseamp_mux_lev_1_predecoder_blocks; 26310152Satgutier@umich.edu powerDef power_senseamp_mux_lev_1_decoders; 26410152Satgutier@umich.edu powerDef power_senseamp_mux_lev_2_predecoder_drivers; 26510152Satgutier@umich.edu powerDef power_senseamp_mux_lev_2_predecoder_blocks; 26610152Satgutier@umich.edu powerDef power_senseamp_mux_lev_2_decoders; 26710152Satgutier@umich.edu powerDef power_bitlines; 26810152Satgutier@umich.edu powerDef power_sense_amps; 26910152Satgutier@umich.edu powerDef power_prechg_eq_drivers; 27010152Satgutier@umich.edu powerDef power_output_drivers_at_subarray; 27110152Satgutier@umich.edu powerDef power_dataout_vertical_htree; 27210152Satgutier@umich.edu powerDef power_comparators; 27310152Satgutier@umich.edu powerDef power_crossbar; 27410152Satgutier@umich.edu powerDef total_power; 27510152Satgutier@umich.edu double area; 27610152Satgutier@umich.edu double all_banks_height; 27710152Satgutier@umich.edu double all_banks_width; 27810152Satgutier@umich.edu double bank_height; 27910152Satgutier@umich.edu double bank_width; 28010152Satgutier@umich.edu double subarray_memory_cell_area_height; 28110152Satgutier@umich.edu double subarray_memory_cell_area_width; 28210152Satgutier@umich.edu double mat_height; 28310152Satgutier@umich.edu double mat_width; 28410152Satgutier@umich.edu double routing_area_height_within_bank; 28510152Satgutier@umich.edu double routing_area_width_within_bank; 28610152Satgutier@umich.edu double area_efficiency; 28710152Satgutier@umich.edu// double perc_power_dyn_routing_to_bank; 28810152Satgutier@umich.edu// double perc_power_dyn_addr_horizontal_htree; 28910152Satgutier@umich.edu// double perc_power_dyn_datain_horizontal_htree; 29010152Satgutier@umich.edu// double perc_power_dyn_dataout_horizontal_htree; 29110152Satgutier@umich.edu// double perc_power_dyn_addr_vertical_htree; 29210152Satgutier@umich.edu// double perc_power_dyn_datain_vertical_htree; 29310152Satgutier@umich.edu// double perc_power_dyn_row_predecoder_drivers; 29410152Satgutier@umich.edu// double perc_power_dyn_row_predecoder_blocks; 29510152Satgutier@umich.edu// double perc_power_dyn_row_decoders; 29610152Satgutier@umich.edu// double perc_power_dyn_bit_mux_predecoder_drivers; 29710152Satgutier@umich.edu// double perc_power_dyn_bit_mux_predecoder_blocks; 29810152Satgutier@umich.edu// double perc_power_dyn_bit_mux_decoders; 29910152Satgutier@umich.edu// double perc_power_dyn_senseamp_mux_lev_1_predecoder_drivers; 30010152Satgutier@umich.edu// double perc_power_dyn_senseamp_mux_lev_1_predecoder_blocks; 30110152Satgutier@umich.edu// double perc_power_dyn_senseamp_mux_lev_1_decoders; 30210152Satgutier@umich.edu// double perc_power_dyn_senseamp_mux_lev_2_predecoder_drivers; 30310152Satgutier@umich.edu// double perc_power_dyn_senseamp_mux_lev_2_predecoder_blocks; 30410152Satgutier@umich.edu// double perc_power_dyn_senseamp_mux_lev_2_decoders; 30510152Satgutier@umich.edu// double perc_power_dyn_bitlines; 30610152Satgutier@umich.edu// double perc_power_dyn_sense_amps; 30710152Satgutier@umich.edu// double perc_power_dyn_prechg_eq_drivers; 30810152Satgutier@umich.edu// double perc_power_dyn_subarray_output_drivers; 30910152Satgutier@umich.edu// double perc_power_dyn_dataout_vertical_htree; 31010152Satgutier@umich.edu// double perc_power_dyn_comparators; 31110152Satgutier@umich.edu// double perc_power_dyn_crossbar; 31210152Satgutier@umich.edu// double perc_power_dyn_spent_outside_mats; 31310152Satgutier@umich.edu// double perc_power_leak_routing_to_bank; 31410152Satgutier@umich.edu// double perc_power_leak_addr_horizontal_htree; 31510152Satgutier@umich.edu// double perc_power_leak_datain_horizontal_htree; 31610152Satgutier@umich.edu// double perc_power_leak_dataout_horizontal_htree; 31710152Satgutier@umich.edu// double perc_power_leak_addr_vertical_htree; 31810152Satgutier@umich.edu// double perc_power_leak_datain_vertical_htree; 31910152Satgutier@umich.edu// double perc_power_leak_row_predecoder_drivers; 32010152Satgutier@umich.edu// double perc_power_leak_row_predecoder_blocks; 32110152Satgutier@umich.edu// double perc_power_leak_row_decoders; 32210152Satgutier@umich.edu// double perc_power_leak_bit_mux_predecoder_drivers; 32310152Satgutier@umich.edu// double perc_power_leak_bit_mux_predecoder_blocks; 32410152Satgutier@umich.edu// double perc_power_leak_bit_mux_decoders; 32510152Satgutier@umich.edu// double perc_power_leak_senseamp_mux_lev_1_predecoder_drivers; 32610152Satgutier@umich.edu// double perc_power_leak_senseamp_mux_lev_1_predecoder_blocks; 32710152Satgutier@umich.edu// double perc_power_leak_senseamp_mux_lev_1_decoders; 32810152Satgutier@umich.edu// double perc_power_leak_senseamp_mux_lev_2_predecoder_drivers; 32910152Satgutier@umich.edu// double perc_power_leak_senseamp_mux_lev_2_predecoder_blocks; 33010152Satgutier@umich.edu// double perc_power_leak_senseamp_mux_lev_2_decoders; 33110152Satgutier@umich.edu// double perc_power_leak_bitlines; 33210152Satgutier@umich.edu// double perc_power_leak_sense_amps; 33310152Satgutier@umich.edu// double perc_power_leak_prechg_eq_drivers; 33410152Satgutier@umich.edu// double perc_power_leak_subarray_output_drivers; 33510152Satgutier@umich.edu// double perc_power_leak_dataout_vertical_htree; 33610152Satgutier@umich.edu// double perc_power_leak_comparators; 33710152Satgutier@umich.edu// double perc_power_leak_crossbar; 33810152Satgutier@umich.edu// double perc_leak_mats; 33910152Satgutier@umich.edu// double perc_active_mats; 34010152Satgutier@umich.edu double refresh_power; 34110152Satgutier@umich.edu double dram_refresh_period; 34210152Satgutier@umich.edu double dram_array_availability; 34310152Satgutier@umich.edu double dyn_read_energy_from_closed_page; 34410152Satgutier@umich.edu double dyn_read_energy_from_open_page; 34510152Satgutier@umich.edu double leak_power_subbank_closed_page; 34610152Satgutier@umich.edu double leak_power_subbank_open_page; 34710152Satgutier@umich.edu double leak_power_request_and_reply_networks; 34810152Satgutier@umich.edu double activate_energy; 34910152Satgutier@umich.edu double read_energy; 35010152Satgutier@umich.edu double write_energy; 35110152Satgutier@umich.edu double precharge_energy; 35210152Satgutier@umich.edu} results_mem_array; 35310152Satgutier@umich.edu 35410152Satgutier@umich.edu 35510152Satgutier@umich.educlass uca_org_t 35610152Satgutier@umich.edu{ 35710152Satgutier@umich.edu public: 35810152Satgutier@umich.edu mem_array * tag_array2; 35910152Satgutier@umich.edu mem_array * data_array2; 36010152Satgutier@umich.edu double access_time; 36110152Satgutier@umich.edu double cycle_time; 36210152Satgutier@umich.edu double area; 36310152Satgutier@umich.edu double area_efficiency; 36410152Satgutier@umich.edu powerDef power; 36510152Satgutier@umich.edu double leak_power_with_sleep_transistors_in_mats; 36610152Satgutier@umich.edu double cache_ht; 36710152Satgutier@umich.edu double cache_len; 36810152Satgutier@umich.edu char file_n[100]; 36910152Satgutier@umich.edu double vdd_periph_global; 37010152Satgutier@umich.edu bool valid; 37110152Satgutier@umich.edu results_mem_array tag_array; 37210152Satgutier@umich.edu results_mem_array data_array; 37310152Satgutier@umich.edu 37410152Satgutier@umich.edu uca_org_t(); 37510152Satgutier@umich.edu void find_delay(); 37610152Satgutier@umich.edu void find_energy(); 37710152Satgutier@umich.edu void find_area(); 37810152Satgutier@umich.edu void find_cyc(); 37910152Satgutier@umich.edu void adjust_area();//for McPAT only to adjust routing overhead 38010152Satgutier@umich.edu void cleanup(); 38110152Satgutier@umich.edu ~uca_org_t(){}; 38210152Satgutier@umich.edu}; 38310152Satgutier@umich.edu 38410152Satgutier@umich.eduvoid reconfigure(InputParameter *local_interface, uca_org_t *fin_res); 38510152Satgutier@umich.edu 38610152Satgutier@umich.eduuca_org_t cacti_interface(const string & infile_name); 38710152Satgutier@umich.edu//McPAT's plain interface, please keep !!! 38810152Satgutier@umich.eduuca_org_t cacti_interface(InputParameter * const local_interface); 38910152Satgutier@umich.edu//McPAT's plain interface, please keep !!! 39010152Satgutier@umich.eduuca_org_t init_interface(InputParameter * const local_interface); 39110152Satgutier@umich.edu//McPAT's plain interface, please keep !!! 39210152Satgutier@umich.eduuca_org_t cacti_interface( 39310152Satgutier@umich.edu int cache_size, 39410152Satgutier@umich.edu int line_size, 39510152Satgutier@umich.edu int associativity, 39610152Satgutier@umich.edu int rw_ports, 39710152Satgutier@umich.edu int excl_read_ports, 39810152Satgutier@umich.edu int excl_write_ports, 39910152Satgutier@umich.edu int single_ended_read_ports, 40010152Satgutier@umich.edu int search_ports, 40110152Satgutier@umich.edu int banks, 40210152Satgutier@umich.edu double tech_node, 40310152Satgutier@umich.edu int output_width, 40410152Satgutier@umich.edu int specific_tag, 40510152Satgutier@umich.edu int tag_width, 40610152Satgutier@umich.edu int access_mode, 40710152Satgutier@umich.edu int cache, 40810152Satgutier@umich.edu int main_mem, 40910152Satgutier@umich.edu int obj_func_delay, 41010152Satgutier@umich.edu int obj_func_dynamic_power, 41110152Satgutier@umich.edu int obj_func_leakage_power, 41210152Satgutier@umich.edu int obj_func_cycle_time, 41310152Satgutier@umich.edu int obj_func_area, 41410152Satgutier@umich.edu int dev_func_delay, 41510152Satgutier@umich.edu int dev_func_dynamic_power, 41610152Satgutier@umich.edu int dev_func_leakage_power, 41710152Satgutier@umich.edu int dev_func_area, 41810152Satgutier@umich.edu int dev_func_cycle_time, 41910152Satgutier@umich.edu int ed_ed2_none, // 0 - ED, 1 - ED^2, 2 - use weight and deviate 42010152Satgutier@umich.edu int temp, 42110152Satgutier@umich.edu int wt, //0 - default(search across everything), 1 - global, 2 - 5% delay penalty, 3 - 10%, 4 - 20 %, 5 - 30%, 6 - low-swing 42210152Satgutier@umich.edu int data_arr_ram_cell_tech_flavor_in, 42310152Satgutier@umich.edu int data_arr_peri_global_tech_flavor_in, 42410152Satgutier@umich.edu int tag_arr_ram_cell_tech_flavor_in, 42510152Satgutier@umich.edu int tag_arr_peri_global_tech_flavor_in, 42610152Satgutier@umich.edu int interconnect_projection_type_in, 42710152Satgutier@umich.edu int wire_inside_mat_type_in, 42810152Satgutier@umich.edu int wire_outside_mat_type_in, 42910152Satgutier@umich.edu int REPEATERS_IN_HTREE_SEGMENTS_in, 43010152Satgutier@umich.edu int VERTICAL_HTREE_WIRES_OVER_THE_ARRAY_in, 43110152Satgutier@umich.edu int BROADCAST_ADDR_DATAIN_OVER_VERTICAL_HTREES_in, 43210152Satgutier@umich.edu int PAGE_SIZE_BITS_in, 43310152Satgutier@umich.edu int BURST_LENGTH_in, 43410152Satgutier@umich.edu int INTERNAL_PREFETCH_WIDTH_in, 43510152Satgutier@umich.edu int force_wiretype, 43610152Satgutier@umich.edu int wiretype, 43710152Satgutier@umich.edu int force_config, 43810152Satgutier@umich.edu int ndwl, 43910152Satgutier@umich.edu int ndbl, 44010152Satgutier@umich.edu int nspd, 44110152Satgutier@umich.edu int ndcm, 44210152Satgutier@umich.edu int ndsam1, 44310152Satgutier@umich.edu int ndsam2, 44410152Satgutier@umich.edu int ecc); 44510152Satgutier@umich.edu// int cache_size, 44610152Satgutier@umich.edu// int line_size, 44710152Satgutier@umich.edu// int associativity, 44810152Satgutier@umich.edu// int rw_ports, 44910152Satgutier@umich.edu// int excl_read_ports, 45010152Satgutier@umich.edu// int excl_write_ports, 45110152Satgutier@umich.edu// int single_ended_read_ports, 45210152Satgutier@umich.edu// int banks, 45310152Satgutier@umich.edu// double tech_node, 45410152Satgutier@umich.edu// int output_width, 45510152Satgutier@umich.edu// int specific_tag, 45610152Satgutier@umich.edu// int tag_width, 45710152Satgutier@umich.edu// int access_mode, 45810152Satgutier@umich.edu// int cache, 45910152Satgutier@umich.edu// int main_mem, 46010152Satgutier@umich.edu// int obj_func_delay, 46110152Satgutier@umich.edu// int obj_func_dynamic_power, 46210152Satgutier@umich.edu// int obj_func_leakage_power, 46310152Satgutier@umich.edu// int obj_func_area, 46410152Satgutier@umich.edu// int obj_func_cycle_time, 46510152Satgutier@umich.edu// int dev_func_delay, 46610152Satgutier@umich.edu// int dev_func_dynamic_power, 46710152Satgutier@umich.edu// int dev_func_leakage_power, 46810152Satgutier@umich.edu// int dev_func_area, 46910152Satgutier@umich.edu// int dev_func_cycle_time, 47010152Satgutier@umich.edu// int temp, 47110152Satgutier@umich.edu// int data_arr_ram_cell_tech_flavor_in, 47210152Satgutier@umich.edu// int data_arr_peri_global_tech_flavor_in, 47310152Satgutier@umich.edu// int tag_arr_ram_cell_tech_flavor_in, 47410152Satgutier@umich.edu// int tag_arr_peri_global_tech_flavor_in, 47510152Satgutier@umich.edu// int interconnect_projection_type_in, 47610152Satgutier@umich.edu// int wire_inside_mat_type_in, 47710152Satgutier@umich.edu// int wire_outside_mat_type_in, 47810152Satgutier@umich.edu// int REPEATERS_IN_HTREE_SEGMENTS_in, 47910152Satgutier@umich.edu// int VERTICAL_HTREE_WIRES_OVER_THE_ARRAY_in, 48010152Satgutier@umich.edu// int BROADCAST_ADDR_DATAIN_OVER_VERTICAL_HTREES_in, 48110152Satgutier@umich.edu//// double MAXAREACONSTRAINT_PERC_in, 48210152Satgutier@umich.edu//// double MAXACCTIMECONSTRAINT_PERC_in, 48310152Satgutier@umich.edu//// double MAX_PERC_DIFF_IN_DELAY_FROM_BEST_DELAY_REPEATER_SOLUTION_in, 48410152Satgutier@umich.edu// int PAGE_SIZE_BITS_in, 48510152Satgutier@umich.edu// int BURST_LENGTH_in, 48610152Satgutier@umich.edu// int INTERNAL_PREFETCH_WIDTH_in); 48710152Satgutier@umich.edu 48810152Satgutier@umich.edu//Naveen's interface 48910152Satgutier@umich.eduuca_org_t cacti_interface( 49010152Satgutier@umich.edu int cache_size, 49110152Satgutier@umich.edu int line_size, 49210152Satgutier@umich.edu int associativity, 49310152Satgutier@umich.edu int rw_ports, 49410152Satgutier@umich.edu int excl_read_ports, 49510152Satgutier@umich.edu int excl_write_ports, 49610152Satgutier@umich.edu int single_ended_read_ports, 49710152Satgutier@umich.edu int banks, 49810152Satgutier@umich.edu double tech_node, 49910152Satgutier@umich.edu int page_sz, 50010152Satgutier@umich.edu int burst_length, 50110152Satgutier@umich.edu int pre_width, 50210152Satgutier@umich.edu int output_width, 50310152Satgutier@umich.edu int specific_tag, 50410152Satgutier@umich.edu int tag_width, 50510152Satgutier@umich.edu int access_mode, //0 normal, 1 seq, 2 fast 50610152Satgutier@umich.edu int cache, //scratch ram or cache 50710152Satgutier@umich.edu int main_mem, 50810152Satgutier@umich.edu int obj_func_delay, 50910152Satgutier@umich.edu int obj_func_dynamic_power, 51010152Satgutier@umich.edu int obj_func_leakage_power, 51110152Satgutier@umich.edu int obj_func_area, 51210152Satgutier@umich.edu int obj_func_cycle_time, 51310152Satgutier@umich.edu int dev_func_delay, 51410152Satgutier@umich.edu int dev_func_dynamic_power, 51510152Satgutier@umich.edu int dev_func_leakage_power, 51610152Satgutier@umich.edu int dev_func_area, 51710152Satgutier@umich.edu int dev_func_cycle_time, 51810152Satgutier@umich.edu int ed_ed2_none, // 0 - ED, 1 - ED^2, 2 - use weight and deviate 51910152Satgutier@umich.edu int temp, 52010152Satgutier@umich.edu int wt, //0 - default(search across everything), 1 - global, 2 - 5% delay penalty, 3 - 10%, 4 - 20 %, 5 - 30%, 6 - low-swing 52110152Satgutier@umich.edu int data_arr_ram_cell_tech_flavor_in, 52210152Satgutier@umich.edu int data_arr_peri_global_tech_flavor_in, 52310152Satgutier@umich.edu int tag_arr_ram_cell_tech_flavor_in, 52410152Satgutier@umich.edu int tag_arr_peri_global_tech_flavor_in, 52510152Satgutier@umich.edu int interconnect_projection_type_in, // 0 - aggressive, 1 - normal 52610152Satgutier@umich.edu int wire_inside_mat_type_in, 52710152Satgutier@umich.edu int wire_outside_mat_type_in, 52810152Satgutier@umich.edu int is_nuca, // 0 - UCA, 1 - NUCA 52910152Satgutier@umich.edu int core_count, 53010152Satgutier@umich.edu int cache_level, // 0 - L2, 1 - L3 53110152Satgutier@umich.edu int nuca_bank_count, 53210152Satgutier@umich.edu int nuca_obj_func_delay, 53310152Satgutier@umich.edu int nuca_obj_func_dynamic_power, 53410152Satgutier@umich.edu int nuca_obj_func_leakage_power, 53510152Satgutier@umich.edu int nuca_obj_func_area, 53610152Satgutier@umich.edu int nuca_obj_func_cycle_time, 53710152Satgutier@umich.edu int nuca_dev_func_delay, 53810152Satgutier@umich.edu int nuca_dev_func_dynamic_power, 53910152Satgutier@umich.edu int nuca_dev_func_leakage_power, 54010152Satgutier@umich.edu int nuca_dev_func_area, 54110152Satgutier@umich.edu int nuca_dev_func_cycle_time, 54210152Satgutier@umich.edu int REPEATERS_IN_HTREE_SEGMENTS_in,//TODO for now only wires with repeaters are supported 54310152Satgutier@umich.edu int p_input); 54410152Satgutier@umich.edu 54510152Satgutier@umich.educlass mem_array 54610152Satgutier@umich.edu{ 54710152Satgutier@umich.edu public: 54810152Satgutier@umich.edu int Ndcm; 54910152Satgutier@umich.edu int Ndwl; 55010152Satgutier@umich.edu int Ndbl; 55110152Satgutier@umich.edu double Nspd; 55210152Satgutier@umich.edu int deg_bl_muxing; 55310152Satgutier@umich.edu int Ndsam_lev_1; 55410152Satgutier@umich.edu int Ndsam_lev_2; 55510152Satgutier@umich.edu double access_time; 55610152Satgutier@umich.edu double cycle_time; 55710152Satgutier@umich.edu double multisubbank_interleave_cycle_time; 55810152Satgutier@umich.edu double area_ram_cells; 55910152Satgutier@umich.edu double area; 56010152Satgutier@umich.edu powerDef power; 56110152Satgutier@umich.edu double delay_senseamp_mux_decoder; 56210152Satgutier@umich.edu double delay_before_subarray_output_driver; 56310152Satgutier@umich.edu double delay_from_subarray_output_driver_to_output; 56410152Satgutier@umich.edu double height; 56510152Satgutier@umich.edu double width; 56610152Satgutier@umich.edu 56710152Satgutier@umich.edu double mat_height; 56810152Satgutier@umich.edu double mat_length; 56910152Satgutier@umich.edu double subarray_length; 57010152Satgutier@umich.edu double subarray_height; 57110152Satgutier@umich.edu 57210152Satgutier@umich.edu double delay_route_to_bank, 57310152Satgutier@umich.edu delay_input_htree, 57410152Satgutier@umich.edu delay_row_predecode_driver_and_block, 57510152Satgutier@umich.edu delay_row_decoder, 57610152Satgutier@umich.edu delay_bitlines, 57710152Satgutier@umich.edu delay_sense_amp, 57810152Satgutier@umich.edu delay_subarray_output_driver, 57910152Satgutier@umich.edu delay_dout_htree, 58010152Satgutier@umich.edu delay_comparator, 58110152Satgutier@umich.edu delay_matchlines; 58210152Satgutier@umich.edu 58310152Satgutier@umich.edu double all_banks_height, 58410152Satgutier@umich.edu all_banks_width, 58510152Satgutier@umich.edu area_efficiency; 58610152Satgutier@umich.edu 58710152Satgutier@umich.edu powerDef power_routing_to_bank; 58810152Satgutier@umich.edu powerDef power_addr_input_htree; 58910152Satgutier@umich.edu powerDef power_data_input_htree; 59010152Satgutier@umich.edu powerDef power_data_output_htree; 59110152Satgutier@umich.edu powerDef power_htree_in_search; 59210152Satgutier@umich.edu powerDef power_htree_out_search; 59310152Satgutier@umich.edu powerDef power_row_predecoder_drivers; 59410152Satgutier@umich.edu powerDef power_row_predecoder_blocks; 59510152Satgutier@umich.edu powerDef power_row_decoders; 59610152Satgutier@umich.edu powerDef power_bit_mux_predecoder_drivers; 59710152Satgutier@umich.edu powerDef power_bit_mux_predecoder_blocks; 59810152Satgutier@umich.edu powerDef power_bit_mux_decoders; 59910152Satgutier@umich.edu powerDef power_senseamp_mux_lev_1_predecoder_drivers; 60010152Satgutier@umich.edu powerDef power_senseamp_mux_lev_1_predecoder_blocks; 60110152Satgutier@umich.edu powerDef power_senseamp_mux_lev_1_decoders; 60210152Satgutier@umich.edu powerDef power_senseamp_mux_lev_2_predecoder_drivers; 60310152Satgutier@umich.edu powerDef power_senseamp_mux_lev_2_predecoder_blocks; 60410152Satgutier@umich.edu powerDef power_senseamp_mux_lev_2_decoders; 60510152Satgutier@umich.edu powerDef power_bitlines; 60610152Satgutier@umich.edu powerDef power_sense_amps; 60710152Satgutier@umich.edu powerDef power_prechg_eq_drivers; 60810152Satgutier@umich.edu powerDef power_output_drivers_at_subarray; 60910152Satgutier@umich.edu powerDef power_dataout_vertical_htree; 61010152Satgutier@umich.edu powerDef power_comparators; 61110152Satgutier@umich.edu 61210152Satgutier@umich.edu powerDef power_cam_bitline_precharge_eq_drv; 61310152Satgutier@umich.edu powerDef power_searchline; 61410152Satgutier@umich.edu powerDef power_searchline_precharge; 61510152Satgutier@umich.edu powerDef power_matchlines; 61610152Satgutier@umich.edu powerDef power_matchline_precharge; 61710152Satgutier@umich.edu powerDef power_matchline_to_wordline_drv; 61810152Satgutier@umich.edu 61910152Satgutier@umich.edu min_values_t *arr_min; 62010152Satgutier@umich.edu enum Wire_type wt; 62110152Satgutier@umich.edu 62210152Satgutier@umich.edu // dram stats 62310152Satgutier@umich.edu double activate_energy, read_energy, write_energy, precharge_energy, 62410152Satgutier@umich.edu refresh_power, leak_power_subbank_closed_page, leak_power_subbank_open_page, 62510152Satgutier@umich.edu leak_power_request_and_reply_networks; 62610152Satgutier@umich.edu 62710152Satgutier@umich.edu double precharge_delay; 62810152Satgutier@umich.edu 62910152Satgutier@umich.edu static bool lt(const mem_array * m1, const mem_array * m2); 63010152Satgutier@umich.edu}; 63110152Satgutier@umich.edu 63210152Satgutier@umich.edu 63310152Satgutier@umich.edu#endif 634