cacti_interface.h (10152:52c552138ba1) | cacti_interface.h (10234:5cb711fa6176) |
---|---|
1/***************************************************************************** 2 * McPAT/CACTI 3 * SOFTWARE LICENSE AGREEMENT 4 * Copyright 2012 Hewlett-Packard Development Company, L.P. | 1/***************************************************************************** 2 * McPAT/CACTI 3 * SOFTWARE LICENSE AGREEMENT 4 * Copyright 2012 Hewlett-Packard Development Company, L.P. |
5 * Copyright (c) 2010-2013 Advanced Micro Devices, Inc. |
|
5 * All Rights Reserved 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions are 9 * met: redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer; 11 * redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the --- 7 unchanged lines hidden (view full) --- 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 6 * All Rights Reserved 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions are 10 * met: redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer; 12 * redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the --- 7 unchanged lines hidden (view full) --- 21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.” | 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 * 30 ***************************************************************************/ 31 32 33 34#ifndef __CACTI_INTERFACE_H__ 35#define __CACTI_INTERFACE_H__ 36 --- 8 unchanged lines hidden (view full) --- 45using namespace std; 46 47 48class min_values_t; 49class mem_array; 50class uca_org_t; 51 52 | 30 * 31 ***************************************************************************/ 32 33 34 35#ifndef __CACTI_INTERFACE_H__ 36#define __CACTI_INTERFACE_H__ 37 --- 8 unchanged lines hidden (view full) --- 46using namespace std; 47 48 49class min_values_t; 50class mem_array; 51class uca_org_t; 52 53 |
53class powerComponents 54{ 55 public: | 54class powerComponents { 55public: |
56 double dynamic; 57 double leakage; 58 double gate_leakage; 59 double short_circuit; 60 double longer_channel_leakage; 61 62 powerComponents() : dynamic(0), leakage(0), gate_leakage(0), short_circuit(0), longer_channel_leakage(0) { } | 56 double dynamic; 57 double leakage; 58 double gate_leakage; 59 double short_circuit; 60 double longer_channel_leakage; 61 62 powerComponents() : dynamic(0), leakage(0), gate_leakage(0), short_circuit(0), longer_channel_leakage(0) { } |
63 powerComponents(const powerComponents & obj) { *this = obj; } 64 powerComponents & operator=(const powerComponents & rhs) 65 { 66 dynamic = rhs.dynamic; 67 leakage = rhs.leakage; 68 gate_leakage = rhs.gate_leakage; 69 short_circuit = rhs.short_circuit; 70 longer_channel_leakage = rhs.longer_channel_leakage; 71 return *this; | 63 powerComponents(const powerComponents & obj) { 64 *this = obj; |
72 } | 65 } |
73 void reset() { dynamic = 0; leakage = 0; gate_leakage = 0; short_circuit = 0;longer_channel_leakage = 0;} | 66 powerComponents & operator=(const powerComponents & rhs) { 67 dynamic = rhs.dynamic; 68 leakage = rhs.leakage; 69 gate_leakage = rhs.gate_leakage; 70 short_circuit = rhs.short_circuit; 71 longer_channel_leakage = rhs.longer_channel_leakage; 72 return *this; 73 } 74 void reset() { 75 dynamic = 0; 76 leakage = 0; 77 gate_leakage = 0; 78 short_circuit = 0; 79 longer_channel_leakage = 0; 80 } |
74 75 friend powerComponents operator+(const powerComponents & x, const powerComponents & y); 76 friend powerComponents operator*(const powerComponents & x, double const * const y); 77}; 78 79 80 | 81 82 friend powerComponents operator+(const powerComponents & x, const powerComponents & y); 83 friend powerComponents operator*(const powerComponents & x, double const * const y); 84}; 85 86 87 |
81class powerDef 82{ 83 public: | 88class powerDef { 89public: |
84 powerComponents readOp; 85 powerComponents writeOp; 86 powerComponents searchOp;//Sheng: for CAM and FA 87 88 powerDef() : readOp(), writeOp(), searchOp() { } | 90 powerComponents readOp; 91 powerComponents writeOp; 92 powerComponents searchOp;//Sheng: for CAM and FA 93 94 powerDef() : readOp(), writeOp(), searchOp() { } |
89 void reset() { readOp.reset(); writeOp.reset(); searchOp.reset();} | 95 void reset() { 96 readOp.reset(); 97 writeOp.reset(); 98 searchOp.reset(); 99 } |
90 91 friend powerDef operator+(const powerDef & x, const powerDef & y); 92 friend powerDef operator*(const powerDef & x, double const * const y); 93}; 94 | 100 101 friend powerDef operator+(const powerDef & x, const powerDef & y); 102 friend powerDef operator*(const powerDef & x, double const * const y); 103}; 104 |
95enum Wire_type 96{ | 105enum Wire_type { |
97 Global /* gloabl wires with repeaters */, 98 Global_5 /* 5% delay penalty */, 99 Global_10 /* 10% delay penalty */, 100 Global_20 /* 20% delay penalty */, 101 Global_30 /* 30% delay penalty */, 102 Low_swing /* differential low power wires with high area overhead */, 103 Semi_global /* mid-level wires with repeaters*/, 104 Transmission /* tranmission lines with high area overhead */, 105 Optical /* optical wires */, 106 Invalid_wtype 107}; 108 109 110 | 106 Global /* gloabl wires with repeaters */, 107 Global_5 /* 5% delay penalty */, 108 Global_10 /* 10% delay penalty */, 109 Global_20 /* 20% delay penalty */, 110 Global_30 /* 30% delay penalty */, 111 Low_swing /* differential low power wires with high area overhead */, 112 Semi_global /* mid-level wires with repeaters*/, 113 Transmission /* tranmission lines with high area overhead */, 114 Optical /* optical wires */, 115 Invalid_wtype 116}; 117 118 119 |
111class InputParameter 112{ 113 public: | 120class InputParameter { 121public: |
114 void parse_cfg(const string & infile); 115 | 122 void parse_cfg(const string & infile); 123 |
116 bool error_checking(); // return false if the input parameters are problematic | 124 // return false if the input parameters are problematic 125 bool error_checking(string name = "CACTI"); |
117 void display_ip(); 118 119 unsigned int cache_sz; // in bytes 120 unsigned int line_sz; 121 unsigned int assoc; 122 unsigned int nbanks; 123 unsigned int out_w;// == nr_bits_out 124 bool specific_tag; --- 42 unchanged lines hidden (view full) --- 167 bool force_cache_config; 168 169 int cache_level; 170 int cores; 171 int nuca_bank_count; 172 int force_nuca_bank; 173 174 int delay_wt, dynamic_power_wt, leakage_power_wt, | 126 void display_ip(); 127 128 unsigned int cache_sz; // in bytes 129 unsigned int line_sz; 130 unsigned int assoc; 131 unsigned int nbanks; 132 unsigned int out_w;// == nr_bits_out 133 bool specific_tag; --- 42 unchanged lines hidden (view full) --- 176 bool force_cache_config; 177 178 int cache_level; 179 int cores; 180 int nuca_bank_count; 181 int force_nuca_bank; 182 183 int delay_wt, dynamic_power_wt, leakage_power_wt, |
175 cycle_time_wt, area_wt; | 184 cycle_time_wt, area_wt; |
176 int delay_wt_nuca, dynamic_power_wt_nuca, leakage_power_wt_nuca, | 185 int delay_wt_nuca, dynamic_power_wt_nuca, leakage_power_wt_nuca, |
177 cycle_time_wt_nuca, area_wt_nuca; | 186 cycle_time_wt_nuca, area_wt_nuca; |
178 179 int delay_dev, dynamic_power_dev, leakage_power_dev, | 187 188 int delay_dev, dynamic_power_dev, leakage_power_dev, |
180 cycle_time_dev, area_dev; | 189 cycle_time_dev, area_dev; |
181 int delay_dev_nuca, dynamic_power_dev_nuca, leakage_power_dev_nuca, | 190 int delay_dev_nuca, dynamic_power_dev_nuca, leakage_power_dev_nuca, |
182 cycle_time_dev_nuca, area_dev_nuca; | 191 cycle_time_dev_nuca, area_dev_nuca; |
183 int ed; //ED or ED2 optimization 184 int nuca; 185 186 bool fast_access; 187 unsigned int block_sz; // bytes 188 unsigned int tag_assoc; 189 unsigned int data_assoc; 190 bool is_seq_acc; 191 bool fully_assoc; 192 unsigned int nsets; // == number_of_sets 193 int print_detail; 194 195 196 bool add_ecc_b_; | 192 int ed; //ED or ED2 optimization 193 int nuca; 194 195 bool fast_access; 196 unsigned int block_sz; // bytes 197 unsigned int tag_assoc; 198 unsigned int data_assoc; 199 bool is_seq_acc; 200 bool fully_assoc; 201 unsigned int nsets; // == number_of_sets 202 int print_detail; 203 204 205 bool add_ecc_b_; |
197 //parameters for design constraint 198 double throughput; 199 double latency; 200 bool pipelinable; 201 int pipeline_stages; 202 int per_stage_vector; 203 bool with_clock_grid; | 206 //parameters for design constraint 207 double throughput; 208 double latency; 209 bool pipelinable; 210 int pipeline_stages; 211 int per_stage_vector; 212 bool with_clock_grid; |
204}; 205 206 | 213}; 214 215 |
207typedef struct{ 208 int Ndwl; 209 int Ndbl; 210 double Nspd; 211 int deg_bl_muxing; 212 int Ndsam_lev_1; 213 int Ndsam_lev_2; 214 int number_activated_mats_horizontal_direction; 215 int number_subbanks; 216 int page_size_in_bits; 217 double delay_route_to_bank; 218 double delay_crossbar; 219 double delay_addr_din_horizontal_htree; 220 double delay_addr_din_vertical_htree; 221 double delay_row_predecode_driver_and_block; 222 double delay_row_decoder; 223 double delay_bitlines; 224 double delay_sense_amp; 225 double delay_subarray_output_driver; 226 double delay_bit_mux_predecode_driver_and_block; 227 double delay_bit_mux_decoder; 228 double delay_senseamp_mux_lev_1_predecode_driver_and_block; 229 double delay_senseamp_mux_lev_1_decoder; 230 double delay_senseamp_mux_lev_2_predecode_driver_and_block; 231 double delay_senseamp_mux_lev_2_decoder; 232 double delay_input_htree; 233 double delay_output_htree; 234 double delay_dout_vertical_htree; 235 double delay_dout_horizontal_htree; 236 double delay_comparator; 237 double access_time; 238 double cycle_time; 239 double multisubbank_interleave_cycle_time; 240 double delay_request_network; 241 double delay_inside_mat; 242 double delay_reply_network; 243 double trcd; 244 double cas_latency; 245 double precharge_delay; 246 powerDef power_routing_to_bank; 247 powerDef power_addr_input_htree; 248 powerDef power_data_input_htree; 249 powerDef power_data_output_htree; 250 powerDef power_addr_horizontal_htree; 251 powerDef power_datain_horizontal_htree; 252 powerDef power_dataout_horizontal_htree; 253 powerDef power_addr_vertical_htree; 254 powerDef power_datain_vertical_htree; 255 powerDef power_row_predecoder_drivers; 256 powerDef power_row_predecoder_blocks; 257 powerDef power_row_decoders; 258 powerDef power_bit_mux_predecoder_drivers; 259 powerDef power_bit_mux_predecoder_blocks; 260 powerDef power_bit_mux_decoders; 261 powerDef power_senseamp_mux_lev_1_predecoder_drivers; 262 powerDef power_senseamp_mux_lev_1_predecoder_blocks; 263 powerDef power_senseamp_mux_lev_1_decoders; 264 powerDef power_senseamp_mux_lev_2_predecoder_drivers; 265 powerDef power_senseamp_mux_lev_2_predecoder_blocks; 266 powerDef power_senseamp_mux_lev_2_decoders; 267 powerDef power_bitlines; 268 powerDef power_sense_amps; 269 powerDef power_prechg_eq_drivers; 270 powerDef power_output_drivers_at_subarray; 271 powerDef power_dataout_vertical_htree; 272 powerDef power_comparators; 273 powerDef power_crossbar; 274 powerDef total_power; 275 double area; 276 double all_banks_height; 277 double all_banks_width; 278 double bank_height; 279 double bank_width; 280 double subarray_memory_cell_area_height; 281 double subarray_memory_cell_area_width; 282 double mat_height; 283 double mat_width; 284 double routing_area_height_within_bank; 285 double routing_area_width_within_bank; 286 double area_efficiency; 287// double perc_power_dyn_routing_to_bank; 288// double perc_power_dyn_addr_horizontal_htree; 289// double perc_power_dyn_datain_horizontal_htree; 290// double perc_power_dyn_dataout_horizontal_htree; 291// double perc_power_dyn_addr_vertical_htree; 292// double perc_power_dyn_datain_vertical_htree; 293// double perc_power_dyn_row_predecoder_drivers; 294// double perc_power_dyn_row_predecoder_blocks; 295// double perc_power_dyn_row_decoders; 296// double perc_power_dyn_bit_mux_predecoder_drivers; 297// double perc_power_dyn_bit_mux_predecoder_blocks; 298// double perc_power_dyn_bit_mux_decoders; 299// double perc_power_dyn_senseamp_mux_lev_1_predecoder_drivers; 300// double perc_power_dyn_senseamp_mux_lev_1_predecoder_blocks; 301// double perc_power_dyn_senseamp_mux_lev_1_decoders; 302// double perc_power_dyn_senseamp_mux_lev_2_predecoder_drivers; 303// double perc_power_dyn_senseamp_mux_lev_2_predecoder_blocks; 304// double perc_power_dyn_senseamp_mux_lev_2_decoders; 305// double perc_power_dyn_bitlines; 306// double perc_power_dyn_sense_amps; 307// double perc_power_dyn_prechg_eq_drivers; 308// double perc_power_dyn_subarray_output_drivers; 309// double perc_power_dyn_dataout_vertical_htree; 310// double perc_power_dyn_comparators; 311// double perc_power_dyn_crossbar; 312// double perc_power_dyn_spent_outside_mats; 313// double perc_power_leak_routing_to_bank; 314// double perc_power_leak_addr_horizontal_htree; 315// double perc_power_leak_datain_horizontal_htree; 316// double perc_power_leak_dataout_horizontal_htree; 317// double perc_power_leak_addr_vertical_htree; 318// double perc_power_leak_datain_vertical_htree; 319// double perc_power_leak_row_predecoder_drivers; 320// double perc_power_leak_row_predecoder_blocks; 321// double perc_power_leak_row_decoders; 322// double perc_power_leak_bit_mux_predecoder_drivers; 323// double perc_power_leak_bit_mux_predecoder_blocks; 324// double perc_power_leak_bit_mux_decoders; 325// double perc_power_leak_senseamp_mux_lev_1_predecoder_drivers; 326// double perc_power_leak_senseamp_mux_lev_1_predecoder_blocks; 327// double perc_power_leak_senseamp_mux_lev_1_decoders; 328// double perc_power_leak_senseamp_mux_lev_2_predecoder_drivers; 329// double perc_power_leak_senseamp_mux_lev_2_predecoder_blocks; 330// double perc_power_leak_senseamp_mux_lev_2_decoders; 331// double perc_power_leak_bitlines; 332// double perc_power_leak_sense_amps; 333// double perc_power_leak_prechg_eq_drivers; 334// double perc_power_leak_subarray_output_drivers; 335// double perc_power_leak_dataout_vertical_htree; 336// double perc_power_leak_comparators; 337// double perc_power_leak_crossbar; 338// double perc_leak_mats; 339// double perc_active_mats; 340 double refresh_power; 341 double dram_refresh_period; 342 double dram_array_availability; 343 double dyn_read_energy_from_closed_page; 344 double dyn_read_energy_from_open_page; 345 double leak_power_subbank_closed_page; 346 double leak_power_subbank_open_page; 347 double leak_power_request_and_reply_networks; 348 double activate_energy; 349 double read_energy; 350 double write_energy; 351 double precharge_energy; | 216typedef struct { 217 int Ndwl; 218 int Ndbl; 219 double Nspd; 220 int deg_bl_muxing; 221 int Ndsam_lev_1; 222 int Ndsam_lev_2; 223 int number_activated_mats_horizontal_direction; 224 int number_subbanks; 225 int page_size_in_bits; 226 double delay_route_to_bank; 227 double delay_crossbar; 228 double delay_addr_din_horizontal_htree; 229 double delay_addr_din_vertical_htree; 230 double delay_row_predecode_driver_and_block; 231 double delay_row_decoder; 232 double delay_bitlines; 233 double delay_sense_amp; 234 double delay_subarray_output_driver; 235 double delay_bit_mux_predecode_driver_and_block; 236 double delay_bit_mux_decoder; 237 double delay_senseamp_mux_lev_1_predecode_driver_and_block; 238 double delay_senseamp_mux_lev_1_decoder; 239 double delay_senseamp_mux_lev_2_predecode_driver_and_block; 240 double delay_senseamp_mux_lev_2_decoder; 241 double delay_input_htree; 242 double delay_output_htree; 243 double delay_dout_vertical_htree; 244 double delay_dout_horizontal_htree; 245 double delay_comparator; 246 double access_time; 247 double cycle_time; 248 double multisubbank_interleave_cycle_time; 249 double delay_request_network; 250 double delay_inside_mat; 251 double delay_reply_network; 252 double trcd; 253 double cas_latency; 254 double precharge_delay; 255 powerDef power_routing_to_bank; 256 powerDef power_addr_input_htree; 257 powerDef power_data_input_htree; 258 powerDef power_data_output_htree; 259 powerDef power_addr_horizontal_htree; 260 powerDef power_datain_horizontal_htree; 261 powerDef power_dataout_horizontal_htree; 262 powerDef power_addr_vertical_htree; 263 powerDef power_datain_vertical_htree; 264 powerDef power_row_predecoder_drivers; 265 powerDef power_row_predecoder_blocks; 266 powerDef power_row_decoders; 267 powerDef power_bit_mux_predecoder_drivers; 268 powerDef power_bit_mux_predecoder_blocks; 269 powerDef power_bit_mux_decoders; 270 powerDef power_senseamp_mux_lev_1_predecoder_drivers; 271 powerDef power_senseamp_mux_lev_1_predecoder_blocks; 272 powerDef power_senseamp_mux_lev_1_decoders; 273 powerDef power_senseamp_mux_lev_2_predecoder_drivers; 274 powerDef power_senseamp_mux_lev_2_predecoder_blocks; 275 powerDef power_senseamp_mux_lev_2_decoders; 276 powerDef power_bitlines; 277 powerDef power_sense_amps; 278 powerDef power_prechg_eq_drivers; 279 powerDef power_output_drivers_at_subarray; 280 powerDef power_dataout_vertical_htree; 281 powerDef power_comparators; 282 powerDef power_crossbar; 283 powerDef total_power; 284 double area; 285 double all_banks_height; 286 double all_banks_width; 287 double bank_height; 288 double bank_width; 289 double subarray_memory_cell_area_height; 290 double subarray_memory_cell_area_width; 291 double mat_height; 292 double mat_width; 293 double routing_area_height_within_bank; 294 double routing_area_width_within_bank; 295 double area_efficiency; 296 double refresh_power; 297 double dram_refresh_period; 298 double dram_array_availability; 299 double dyn_read_energy_from_closed_page; 300 double dyn_read_energy_from_open_page; 301 double leak_power_subbank_closed_page; 302 double leak_power_subbank_open_page; 303 double leak_power_request_and_reply_networks; 304 double activate_energy; 305 double read_energy; 306 double write_energy; 307 double precharge_energy; |
352} results_mem_array; 353 354 | 308} results_mem_array; 309 310 |
355class uca_org_t 356{ 357 public: | 311class uca_org_t { 312public: |
358 mem_array * tag_array2; 359 mem_array * data_array2; 360 double access_time; 361 double cycle_time; 362 double area; 363 double area_efficiency; 364 powerDef power; 365 double leak_power_with_sleep_transistors_in_mats; --- 7 unchanged lines hidden (view full) --- 373 374 uca_org_t(); 375 void find_delay(); 376 void find_energy(); 377 void find_area(); 378 void find_cyc(); 379 void adjust_area();//for McPAT only to adjust routing overhead 380 void cleanup(); | 313 mem_array * tag_array2; 314 mem_array * data_array2; 315 double access_time; 316 double cycle_time; 317 double area; 318 double area_efficiency; 319 powerDef power; 320 double leak_power_with_sleep_transistors_in_mats; --- 7 unchanged lines hidden (view full) --- 328 329 uca_org_t(); 330 void find_delay(); 331 void find_energy(); 332 void find_area(); 333 void find_cyc(); 334 void adjust_area();//for McPAT only to adjust routing overhead 335 void cleanup(); |
381 ~uca_org_t(){}; | 336 ~uca_org_t() {}; |
382}; 383 384void reconfigure(InputParameter *local_interface, uca_org_t *fin_res); 385 386uca_org_t cacti_interface(const string & infile_name); 387//McPAT's plain interface, please keep !!! 388uca_org_t cacti_interface(InputParameter * const local_interface); 389//McPAT's plain interface, please keep !!! | 337}; 338 339void reconfigure(InputParameter *local_interface, uca_org_t *fin_res); 340 341uca_org_t cacti_interface(const string & infile_name); 342//McPAT's plain interface, please keep !!! 343uca_org_t cacti_interface(InputParameter * const local_interface); 344//McPAT's plain interface, please keep !!! |
390uca_org_t init_interface(InputParameter * const local_interface); | 345uca_org_t init_interface(InputParameter * const local_interface, 346 const string &name); |
391//McPAT's plain interface, please keep !!! 392uca_org_t cacti_interface( | 347//McPAT's plain interface, please keep !!! 348uca_org_t cacti_interface( |
393 int cache_size, 394 int line_size, 395 int associativity, 396 int rw_ports, 397 int excl_read_ports, 398 int excl_write_ports, 399 int single_ended_read_ports, 400 int search_ports, 401 int banks, 402 double tech_node, 403 int output_width, 404 int specific_tag, 405 int tag_width, 406 int access_mode, 407 int cache, 408 int main_mem, 409 int obj_func_delay, 410 int obj_func_dynamic_power, 411 int obj_func_leakage_power, 412 int obj_func_cycle_time, 413 int obj_func_area, 414 int dev_func_delay, 415 int dev_func_dynamic_power, 416 int dev_func_leakage_power, 417 int dev_func_area, 418 int dev_func_cycle_time, 419 int ed_ed2_none, // 0 - ED, 1 - ED^2, 2 - use weight and deviate 420 int temp, 421 int wt, //0 - default(search across everything), 1 - global, 2 - 5% delay penalty, 3 - 10%, 4 - 20 %, 5 - 30%, 6 - low-swing 422 int data_arr_ram_cell_tech_flavor_in, 423 int data_arr_peri_global_tech_flavor_in, 424 int tag_arr_ram_cell_tech_flavor_in, 425 int tag_arr_peri_global_tech_flavor_in, 426 int interconnect_projection_type_in, 427 int wire_inside_mat_type_in, 428 int wire_outside_mat_type_in, 429 int REPEATERS_IN_HTREE_SEGMENTS_in, 430 int VERTICAL_HTREE_WIRES_OVER_THE_ARRAY_in, 431 int BROADCAST_ADDR_DATAIN_OVER_VERTICAL_HTREES_in, 432 int PAGE_SIZE_BITS_in, 433 int BURST_LENGTH_in, 434 int INTERNAL_PREFETCH_WIDTH_in, 435 int force_wiretype, 436 int wiretype, 437 int force_config, 438 int ndwl, 439 int ndbl, 440 int nspd, 441 int ndcm, 442 int ndsam1, 443 int ndsam2, 444 int ecc); 445// int cache_size, 446// int line_size, 447// int associativity, 448// int rw_ports, 449// int excl_read_ports, 450// int excl_write_ports, 451// int single_ended_read_ports, 452// int banks, 453// double tech_node, 454// int output_width, 455// int specific_tag, 456// int tag_width, 457// int access_mode, 458// int cache, 459// int main_mem, 460// int obj_func_delay, 461// int obj_func_dynamic_power, 462// int obj_func_leakage_power, 463// int obj_func_area, 464// int obj_func_cycle_time, 465// int dev_func_delay, 466// int dev_func_dynamic_power, 467// int dev_func_leakage_power, 468// int dev_func_area, 469// int dev_func_cycle_time, 470// int temp, 471// int data_arr_ram_cell_tech_flavor_in, 472// int data_arr_peri_global_tech_flavor_in, 473// int tag_arr_ram_cell_tech_flavor_in, 474// int tag_arr_peri_global_tech_flavor_in, 475// int interconnect_projection_type_in, 476// int wire_inside_mat_type_in, 477// int wire_outside_mat_type_in, 478// int REPEATERS_IN_HTREE_SEGMENTS_in, 479// int VERTICAL_HTREE_WIRES_OVER_THE_ARRAY_in, 480// int BROADCAST_ADDR_DATAIN_OVER_VERTICAL_HTREES_in, 481//// double MAXAREACONSTRAINT_PERC_in, 482//// double MAXACCTIMECONSTRAINT_PERC_in, 483//// double MAX_PERC_DIFF_IN_DELAY_FROM_BEST_DELAY_REPEATER_SOLUTION_in, 484// int PAGE_SIZE_BITS_in, 485// int BURST_LENGTH_in, 486// int INTERNAL_PREFETCH_WIDTH_in); | 349 int cache_size, 350 int line_size, 351 int associativity, 352 int rw_ports, 353 int excl_read_ports, 354 int excl_write_ports, 355 int single_ended_read_ports, 356 int search_ports, 357 int banks, 358 double tech_node, 359 int output_width, 360 int specific_tag, 361 int tag_width, 362 int access_mode, 363 int cache, 364 int main_mem, 365 int obj_func_delay, 366 int obj_func_dynamic_power, 367 int obj_func_leakage_power, 368 int obj_func_cycle_time, 369 int obj_func_area, 370 int dev_func_delay, 371 int dev_func_dynamic_power, 372 int dev_func_leakage_power, 373 int dev_func_area, 374 int dev_func_cycle_time, 375 int ed_ed2_none, // 0 - ED, 1 - ED^2, 2 - use weight and deviate 376 int temp, 377 int wt, //0 - default(search across everything), 1 - global, 2 - 5% delay penalty, 3 - 10%, 4 - 20 %, 5 - 30%, 6 - low-swing 378 int data_arr_ram_cell_tech_flavor_in, 379 int data_arr_peri_global_tech_flavor_in, 380 int tag_arr_ram_cell_tech_flavor_in, 381 int tag_arr_peri_global_tech_flavor_in, 382 int interconnect_projection_type_in, 383 int wire_inside_mat_type_in, 384 int wire_outside_mat_type_in, 385 int REPEATERS_IN_HTREE_SEGMENTS_in, 386 int VERTICAL_HTREE_WIRES_OVER_THE_ARRAY_in, 387 int BROADCAST_ADDR_DATAIN_OVER_VERTICAL_HTREES_in, 388 int PAGE_SIZE_BITS_in, 389 int BURST_LENGTH_in, 390 int INTERNAL_PREFETCH_WIDTH_in, 391 int force_wiretype, 392 int wiretype, 393 int force_config, 394 int ndwl, 395 int ndbl, 396 int nspd, 397 int ndcm, 398 int ndsam1, 399 int ndsam2, 400 int ecc); |
487 488//Naveen's interface 489uca_org_t cacti_interface( 490 int cache_size, 491 int line_size, 492 int associativity, 493 int rw_ports, 494 int excl_read_ports, --- 42 unchanged lines hidden (view full) --- 537 int nuca_dev_func_delay, 538 int nuca_dev_func_dynamic_power, 539 int nuca_dev_func_leakage_power, 540 int nuca_dev_func_area, 541 int nuca_dev_func_cycle_time, 542 int REPEATERS_IN_HTREE_SEGMENTS_in,//TODO for now only wires with repeaters are supported 543 int p_input); 544 | 401 402//Naveen's interface 403uca_org_t cacti_interface( 404 int cache_size, 405 int line_size, 406 int associativity, 407 int rw_ports, 408 int excl_read_ports, --- 42 unchanged lines hidden (view full) --- 451 int nuca_dev_func_delay, 452 int nuca_dev_func_dynamic_power, 453 int nuca_dev_func_leakage_power, 454 int nuca_dev_func_area, 455 int nuca_dev_func_cycle_time, 456 int REPEATERS_IN_HTREE_SEGMENTS_in,//TODO for now only wires with repeaters are supported 457 int p_input); 458 |
545class mem_array 546{ 547 public: 548 int Ndcm; 549 int Ndwl; 550 int Ndbl; 551 double Nspd; 552 int deg_bl_muxing; 553 int Ndsam_lev_1; 554 int Ndsam_lev_2; 555 double access_time; 556 double cycle_time; 557 double multisubbank_interleave_cycle_time; 558 double area_ram_cells; 559 double area; 560 powerDef power; 561 double delay_senseamp_mux_decoder; 562 double delay_before_subarray_output_driver; 563 double delay_from_subarray_output_driver_to_output; 564 double height; 565 double width; | 459class mem_array { 460public: 461 int Ndcm; 462 int Ndwl; 463 int Ndbl; 464 double Nspd; 465 int deg_bl_muxing; 466 int Ndsam_lev_1; 467 int Ndsam_lev_2; 468 double access_time; 469 double cycle_time; 470 double multisubbank_interleave_cycle_time; 471 double area_ram_cells; 472 double area; 473 powerDef power; 474 double delay_senseamp_mux_decoder; 475 double delay_before_subarray_output_driver; 476 double delay_from_subarray_output_driver_to_output; 477 double height; 478 double width; |
566 | 479 |
567 double mat_height; 568 double mat_length; 569 double subarray_length; 570 double subarray_height; | 480 double mat_height; 481 double mat_length; 482 double subarray_length; 483 double subarray_height; |
571 | 484 |
572 double delay_route_to_bank, 573 delay_input_htree, 574 delay_row_predecode_driver_and_block, 575 delay_row_decoder, 576 delay_bitlines, 577 delay_sense_amp, 578 delay_subarray_output_driver, 579 delay_dout_htree, 580 delay_comparator, 581 delay_matchlines; | 485 double delay_route_to_bank, 486 delay_input_htree, 487 delay_row_predecode_driver_and_block, 488 delay_row_decoder, 489 delay_bitlines, 490 delay_sense_amp, 491 delay_subarray_output_driver, 492 delay_dout_htree, 493 delay_comparator, 494 delay_matchlines; |
582 | 495 |
583 double all_banks_height, 584 all_banks_width, 585 area_efficiency; | 496 double all_banks_height, 497 all_banks_width, 498 area_efficiency; |
586 | 499 |
587 powerDef power_routing_to_bank; 588 powerDef power_addr_input_htree; 589 powerDef power_data_input_htree; 590 powerDef power_data_output_htree; 591 powerDef power_htree_in_search; 592 powerDef power_htree_out_search; 593 powerDef power_row_predecoder_drivers; 594 powerDef power_row_predecoder_blocks; 595 powerDef power_row_decoders; 596 powerDef power_bit_mux_predecoder_drivers; 597 powerDef power_bit_mux_predecoder_blocks; 598 powerDef power_bit_mux_decoders; 599 powerDef power_senseamp_mux_lev_1_predecoder_drivers; 600 powerDef power_senseamp_mux_lev_1_predecoder_blocks; 601 powerDef power_senseamp_mux_lev_1_decoders; 602 powerDef power_senseamp_mux_lev_2_predecoder_drivers; 603 powerDef power_senseamp_mux_lev_2_predecoder_blocks; 604 powerDef power_senseamp_mux_lev_2_decoders; 605 powerDef power_bitlines; 606 powerDef power_sense_amps; 607 powerDef power_prechg_eq_drivers; 608 powerDef power_output_drivers_at_subarray; 609 powerDef power_dataout_vertical_htree; 610 powerDef power_comparators; | 500 powerDef power_routing_to_bank; 501 powerDef power_addr_input_htree; 502 powerDef power_data_input_htree; 503 powerDef power_data_output_htree; 504 powerDef power_htree_in_search; 505 powerDef power_htree_out_search; 506 powerDef power_row_predecoder_drivers; 507 powerDef power_row_predecoder_blocks; 508 powerDef power_row_decoders; 509 powerDef power_bit_mux_predecoder_drivers; 510 powerDef power_bit_mux_predecoder_blocks; 511 powerDef power_bit_mux_decoders; 512 powerDef power_senseamp_mux_lev_1_predecoder_drivers; 513 powerDef power_senseamp_mux_lev_1_predecoder_blocks; 514 powerDef power_senseamp_mux_lev_1_decoders; 515 powerDef power_senseamp_mux_lev_2_predecoder_drivers; 516 powerDef power_senseamp_mux_lev_2_predecoder_blocks; 517 powerDef power_senseamp_mux_lev_2_decoders; 518 powerDef power_bitlines; 519 powerDef power_sense_amps; 520 powerDef power_prechg_eq_drivers; 521 powerDef power_output_drivers_at_subarray; 522 powerDef power_dataout_vertical_htree; 523 powerDef power_comparators; |
611 | 524 |
612 powerDef power_cam_bitline_precharge_eq_drv; 613 powerDef power_searchline; 614 powerDef power_searchline_precharge; 615 powerDef power_matchlines; 616 powerDef power_matchline_precharge; 617 powerDef power_matchline_to_wordline_drv; | 525 powerDef power_cam_bitline_precharge_eq_drv; 526 powerDef power_searchline; 527 powerDef power_searchline_precharge; 528 powerDef power_matchlines; 529 powerDef power_matchline_precharge; 530 powerDef power_matchline_to_wordline_drv; |
618 | 531 |
619 min_values_t *arr_min; 620 enum Wire_type wt; | 532 min_values_t *arr_min; 533 enum Wire_type wt; |
621 | 534 |
622 // dram stats 623 double activate_energy, read_energy, write_energy, precharge_energy, 624 refresh_power, leak_power_subbank_closed_page, leak_power_subbank_open_page, 625 leak_power_request_and_reply_networks; | 535 // dram stats 536 double activate_energy, read_energy, write_energy, precharge_energy, 537 refresh_power, leak_power_subbank_closed_page, leak_power_subbank_open_page, 538 leak_power_request_and_reply_networks; |
626 | 539 |
627 double precharge_delay; | 540 double precharge_delay; |
628 | 541 |
629 static bool lt(const mem_array * m1, const mem_array * m2); | 542 static bool lt(const mem_array * m1, const mem_array * m2); |
630}; 631 632 633#endif | 543}; 544 545 546#endif |