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 00050 #ifndef __INTERCONNECT_H__ 00051 #define __INTERCONNECT_H__ 00052 00053 #include "basic_circuit.h" 00054 #include "basic_components.h" 00055 #include "McPATcomponent.h" 00056 #include "parameter.h" 00057 #include "assert.h" 00058 #include "subarray.h" 00059 #include "cacti_interface.h" 00060 #include "wire.h" 00061 00062 // leakge power includes entire htree in a bank (when uca_tree == false) 00063 // leakge power includes only part to one bank when uca_tree == true 00064 00065 class interconnect : public McPATComponent 00066 { 00067 public: 00068 interconnect( 00069 string name_, 00070 enum Device_ty device_ty_, 00071 double base_w, double base_h, int data_w, double len, 00072 const InputParameter *configure_interface, int start_wiring_level_, 00073 bool pipelinable_ = false, 00074 double route_over_perc_ =0.5, 00075 bool opt_local_=true, 00076 enum Core_type core_ty_=Inorder, 00077 enum Wire_type wire_model=Global, 00078 double width_s=1.0, double space_s=1.0, 00079 TechnologyParameter::DeviceType *dt = &(g_tp.peri_global) 00080 ); 00081 00082 ~interconnect() {}; 00083 00084 void compute(); 00085 string name; 00086 enum Device_ty device_ty; 00087 double in_rise_time, out_rise_time; 00088 InputParameter l_ip; 00089 uca_org_t local_result; 00090 Area no_device_under_wire_area; 00091 void set_in_rise_time(double rt) 00092 { 00093 in_rise_time = rt; 00094 } 00095 00096 /*---SoM SST----*/ 00097 void SSTleakage_feedback(double temperature); 00098 /*---EoM SST-----*/ 00099 00100 double max_unpipelined_link_delay; 00101 powerDef power_bit; 00102 00103 double wire_bw; 00104 double init_wire_bw; // bus width at root 00105 double base_width; 00106 double base_height; 00107 int data_width; 00108 enum Wire_type wt; 00109 double width_scaling, space_scaling; 00110 int start_wiring_level; 00111 double length; 00112 double min_w_nmos; 00113 double min_w_pmos; 00114 double latency, throughput; 00115 bool latency_overflow; 00116 bool throughput_overflow; 00117 double interconnect_latency; 00118 double interconnect_throughput; 00119 bool opt_local; 00120 enum Core_type core_ty; 00121 bool pipelinable; 00122 double route_over_perc; 00123 int num_pipe_stages; 00124 00125 private: 00126 TechnologyParameter::DeviceType *deviceType; 00127 00128 }; 00129 00130 #endif 00131