• Main Page
  • Related Pages
  • Modules
  • Data Structures
  • Files
  • File List
  • Globals

sst/core/techModels/libMcPATbeta06/mat.h

00001 /*****************************************************************************
00002  *                                McPAT
00003  *                      SOFTWARE LICENSE AGREEMENT
00004  *            Copyright 2009 Hewlett-Packard Development Company, L.P.
00005  *                          All Rights Reserved
00006  *
00007  * Permission to use, copy, and modify this software and its documentation is
00008  * hereby granted only under the following terms and conditions.  Both the
00009  * above copyright notice and this permission notice must appear in all copies
00010  * of the software, derivative works or modified versions, and any portions
00011  * thereof, and both notices must appear in supporting documentation.
00012  *
00013  * Any User of the software ("User"), by accessing and using it, agrees to the
00014  * terms and conditions set forth herein, and hereby grants back to Hewlett-
00015  * Packard Development Company, L.P. and its affiliated companies ("HP") a
00016  * non-exclusive, unrestricted, royalty-free right and license to copy,
00017  * modify, distribute copies, create derivate works and publicly display and
00018  * use, any changes, modifications, enhancements or extensions made to the
00019  * software by User, including but not limited to those affording
00020  * compatibility with other hardware or software, but excluding pre-existing
00021  * software applications that may incorporate the software.  User further
00022  * agrees to use its best efforts to inform HP of any such changes,
00023  * modifications, enhancements or extensions.
00024  *
00025  * Correspondence should be provided to HP at:
00026  *
00027  * Director of Intellectual Property Licensing
00028  * Office of Strategy and Technology
00029  * Hewlett-Packard Company
00030  * 1501 Page Mill Road
00031  * Palo Alto, California  94304
00032  *
00033  * The software may be further distributed by User (but not offered for
00034  * sale or transferred for compensation) to third parties, under the
00035  * condition that such third parties agree to abide by the terms and
00036  * conditions of this license.
00037  *
00038  * THE SOFTWARE IS PROVIDED "AS IS" WITH ANY AND ALL ERRORS AND DEFECTS
00039  * AND USER ACKNOWLEDGES THAT THE SOFTWARE MAY CONTAIN ERRORS AND DEFECTS.
00040  * HP DISCLAIMS ALL WARRANTIES WITH REGARD TO THE SOFTWARE, INCLUDING ALL
00041  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL
00042  * HP BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
00043  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
00044  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER ACTION, ARISING
00045  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE SOFTWARE.
00046  *
00047  ***************************************************************************/
00048 
00049 #ifndef __MAT_H__
00050 #define __MAT_H__
00051 
00052 #include "McPATcomponent.h"
00053 #include "decoder.h"
00054 #include "wire.h"
00055 #include "subarray.h"
00056 
00057 class Mat : public McPATComponent
00058 {
00059   public:
00060     Mat(const DynamicParameter & dyn_p);
00061     ~Mat();
00062     double compute_delays(double inrisetime);  // return outrisetime
00063     void compute_power_energy();
00064 
00065     const DynamicParameter & dp;
00066 
00067     // TODO: clean up pointers and powerDefs below
00068     Decoder * row_dec;
00069     Decoder * bit_mux_dec;
00070     Decoder * sa_mux_lev_1_dec;
00071     Decoder * sa_mux_lev_2_dec;
00072     PredecBlk * dummy_way_sel_predec_blk1;
00073     PredecBlk * dummy_way_sel_predec_blk2;
00074     PredecBlkDrv * way_sel_drv1;
00075     PredecBlkDrv * dummy_way_sel_predec_blk_drv2;
00076 
00077     Predec * r_predec;
00078     Predec * b_mux_predec;
00079     Predec * sa_mux_lev_1_predec;
00080     Predec * sa_mux_lev_2_predec;
00081 
00082     Wire   * subarray_out_wire;
00083     Driver * bl_precharge_eq_drv;
00084     Driver * cam_bl_precharge_eq_drv;//bitline pre-charge circuit is separated for CAM and RAM arrays.
00085     Driver * ml_precharge_drv;//matchline prechange driver
00086     Driver * sl_precharge_eq_drv;//searchline prechage driver
00087     Driver * sl_data_drv;//search line data driver
00088     Driver * ml_to_ram_wl_drv;//search line data driver
00089 
00090 
00091     powerDef power_row_decoders;
00092     powerDef power_bit_mux_decoders;
00093     powerDef power_sa_mux_lev_1_decoders;
00094     powerDef power_sa_mux_lev_2_decoders;
00095     powerDef power_fa_cam;  // TODO: leakage power is not computed yet
00096     powerDef power_bl_precharge_eq_drv;
00097     powerDef power_subarray_out_drv;
00098     powerDef power_cam_all_active;
00099     powerDef power_searchline_precharge;
00100     powerDef power_matchline_precharge;
00101     powerDef power_ml_to_ram_wl_drv;
00102 
00103     double   delay_fa_tag, delay_cam;
00104     double   delay_before_decoder;
00105     double   delay_bitline;
00106     double   delay_wl_reset;
00107     double   delay_bl_restore;
00108 
00109     double   delay_searchline;
00110     double   delay_matchchline;
00111     double   delay_cam_sl_restore;
00112     double   delay_cam_ml_reset;
00113     double   delay_fa_ram_wl;
00114 
00115     double   delay_hit_miss_reset;
00116     double   delay_hit_miss;
00117 
00118     Subarray subarray;
00119     powerDef power_bitline, power_searchline, power_matchline;
00120     double   per_bitline_read_energy;
00121     int      deg_bl_muxing;
00122     int      num_act_mats_hor_dir;
00123     double   delay_writeback;
00124     Area     cell,cam_cell;
00125     bool     is_dram,is_fa, pure_cam, camFlag;
00126     int      num_mats;
00127     powerDef power_sa;
00128     double   delay_sa;
00129     double   leak_power_sense_amps_closed_page_state;
00130     double   leak_power_sense_amps_open_page_state;
00131     double   delay_subarray_out_drv;
00132     double   delay_subarray_out_drv_htree;
00133     double   delay_comparator;
00134     powerDef power_comparator;
00135     int      num_do_b_mat;
00136     int      num_so_b_mat;
00137     int      num_sa_subarray;
00138     int      num_sa_subarray_search;
00139     double   C_bl;
00140 
00141     uint32_t num_subarrays_per_mat;  // the number of subarrays in a mat
00142     uint32_t num_subarrays_per_row;  // the number of subarrays in a row of a mat
00143 
00144 
00145   private:
00146     double compute_bit_mux_sa_precharge_sa_mux_wr_drv_wr_mux_h();
00147     double width_write_driver_or_write_mux();
00148     double compute_comparators_height(int tagbits, int number_ways_in_mat, double subarray_mem_cell_area_w);
00149     double compute_cam_delay(double inrisetime);
00150     double compute_bitline_delay(double inrisetime);
00151     double compute_sa_delay(double inrisetime);
00152     double compute_subarray_out_drv(double inrisetime);
00153     double compute_comparator_delay(double inrisetime);
00154 
00155     int RWP;
00156     int ERP;
00157     int EWP;
00158     int SCHP;
00159 };
00160 
00161 
00162 
00163 #endif

Generated on Fri Oct 22 2010 11:02:18 for SST by  doxygen 1.7.1