1 /*****************************************************************************
3 * SOFTWARE LICENSE AGREEMENT
4 * Copyright 2012 Hewlett-Packard Development Company, L.P.
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
13 * documentation and/or other materials provided with the distribution;
14 * neither the name of the copyright holders nor the names of its
15 * contributors may be used to endorse or promote products derived from
16 * this software without specific prior written permission.
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
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
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.”
30 ***************************************************************************/
34 #ifndef __PARAMETER_H__
35 #define __PARAMETER_H__
38 #include "cacti_interface.h"
42 // parameters which are functions of certain device technology
43 class TechnologyParameter
52 double C_junc
; // C_junc_area
53 double C_junc_sidewall
;
68 double n_to_p_eff_curr_drv_ratio
;
69 double long_channel_leakage_reduction
;
71 DeviceType(): C_g_ideal(0), C_fringe(0), C_overlap(0), C_junc(0),
72 C_junc_sidewall(0), l_phy(0), l_elec(0), R_nch_on(0), R_pch_on(0),
74 I_on_n(0), I_on_p(0), I_off_n(0), I_off_p(0),I_g_on_n(0),I_g_on_p(0),
75 C_ox(0), t_ox(0), n_to_p_eff_curr_drv_ratio(0), long_channel_leakage_reduction(0) { };
96 n_to_p_eff_curr_drv_ratio
= 0;
97 long_channel_leakage_reduction
= 0;
100 void display(uint32_t indent
= 0);
102 class InterconnectType
108 double horiz_dielectric_constant
;
109 double vert_dielectric_constant
;
112 double ild_thickness
;
114 InterconnectType(): pitch(0), R_per_um(0), C_per_um(0) { };
121 horiz_dielectric_constant
= 0;
122 vert_dielectric_constant
= 0;
128 void display(uint32_t indent
= 0);
150 void display(uint32_t indent
= 0);
156 double logic_scaling_co_eff
;
157 double core_tx_density
;
158 double long_channel_leakage_reduction
;
160 ScalingFactor(): logic_scaling_co_eff(0), core_tx_density(0),
161 long_channel_leakage_reduction(0) { };
165 logic_scaling_co_eff
= 0;
167 long_channel_leakage_reduction
= 0;
170 void display(uint32_t indent
= 0);
173 double ram_wl_stitching_overhead_
;
176 double max_w_nmos_dec
;
177 double unit_len_wire_del
;
185 double sense_dy_power
;
187 double w_poly_contact
;
188 double spacing_poly_to_poly
;
189 double spacing_poly_to_contact
;
191 double w_comp_inv_p1
;
192 double w_comp_inv_p2
;
193 double w_comp_inv_p3
;
194 double w_comp_inv_n1
;
195 double w_comp_inv_n2
;
196 double w_comp_inv_n3
;
202 double dram_cell_I_on
;
203 double dram_cell_Vdd
;
204 double dram_cell_I_off_worst_case_len_temp
;
206 double gm_sense_amp_latch
;
209 double w_nmos_sa_mux
;
210 double w_pmos_bl_precharge
;
212 double MIN_GAP_BET_P_AND_N_DIFFS
;
213 double MIN_GAP_BET_SAME_TYPE_DIFFS
;
217 double chip_layout_overhead
;
218 double macro_layout_overhead
;
225 DeviceType sram_cell
; // SRAM cell transistor
226 DeviceType dram_acc
; // DRAM access transistor
227 DeviceType dram_wl
; // DRAM wordline transistor
228 DeviceType peri_global
; // peripheral global
229 DeviceType cam_cell
; // SRAM cell transistor
231 InterconnectType wire_local
;
232 InterconnectType wire_inside_mat
;
233 InterconnectType wire_outside_mat
;
235 ScalingFactor scaling_factor
;
241 void display(uint32_t indent
= 0);
253 // horiz_dielectric_constant = 0;
254 // vert_dielectric_constant = 0;
257 // ild_thickness = 0;
259 dram_cell_I_off_worst_case_len_temp
= 0;
267 scaling_factor
.reset();
270 wire_inside_mat
.reset();
271 wire_outside_mat
.reset();
277 chip_layout_overhead
= 0;
278 macro_layout_overhead
= 0;
285 class DynamicParameter
293 int num_subarrays
; // only for leakage computation -- the number of subarrays per bank
294 int num_mats
; // only for leakage computation -- the number of mats per bank
300 int deg_senseamp_muxing_non_associativity
;
303 int number_addr_bits_mat
; // per port
304 int number_subbanks_decode
; // per_port
305 int num_di_b_bank_per_port
;
306 int num_do_b_bank_per_port
;
309 int num_di_b_subbank
;
310 int num_do_b_subbank
;
314 int num_si_b_subbank
;
315 int num_so_b_subbank
;
316 int num_si_b_bank_per_port
;
317 int num_so_b_bank_per_port
;
319 int number_way_select_signals_mat
;
320 int num_act_mats_hor_dir
;
322 int num_act_mats_hor_dir_sl
;
325 unsigned int num_r_subarray
;
326 unsigned int num_c_subarray
;
327 int tag_num_r_subarray
;//sheng: fully associative cache tag and data must be computed together, data and tag must be separate
328 int tag_num_c_subarray
;
329 int data_num_r_subarray
;
330 int data_num_c_subarray
;
333 uint32_t ram_cell_tech_type
;
334 double dram_refresh_period
;
345 unsigned int Ndsam_lev_1_
,
346 unsigned int Ndsam_lev_2_
,
350 unsigned int num_rw_ports
;
351 unsigned int num_rd_ports
;
352 unsigned int num_wr_ports
;
353 unsigned int num_se_rd_ports
; // number of single ended read ports
354 unsigned int num_search_ports
;
355 unsigned int out_w
;// == nr_bits_out
357 Area cell
, cam_cell
;//cell is the sram_cell in both nomal cache/ram and FA.
363 extern InputParameter
* g_ip
;
364 extern TechnologyParameter g_tp
;