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