config_params.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef mc_constants_cc_INC
00021 #define mc_constants_cc_INC
00022
00023 #include "simIrisComponentHeader.h"
00024 #include "genericData.h"
00025 #include "mc_constants.h"
00026 #include "stats.h"
00027
00028
00029
00030
00031 uint no_nodes = 16,
00032 no_mcs = 2,
00033 do_two_stage_router = 0,
00034 max_phy_link_bits = 128,
00035 links = 0;
00036 uint no_msg_classes = 1;
00037
00038 uint network_frequency = 1200;
00039 uint stat_print_level = 1;
00040
00041 ullint max_sim_time = 10000000;
00042
00043 IrisStats* istat = new IrisStats();
00044
00045 string network_type = "NONE";
00046 uint no_of_cores = 14;
00047 uint concentration = 1;
00048
00049 ROUTING_SCHEME rc_method = XY;
00050 SW_ARBITRATION sw_arbitration = ROUND_ROBIN;
00051 ROUTER_MODEL router_model = PHYSICAL;
00052 string router_model_string = "PHYSICAL";
00053 MC_MODEL mc_model = SINK;
00054 string mc_model_string = "SINK";
00055 TERMINAL_MODEL terminal_model = GENERIC_PKTGEN;
00056 string terminal_model_string= "GENERIC_PKTGEN";
00057 message_class priority_msg_type = PRIORITY_REQ;
00058 message_class terminal_msg_class = RESPONSE_PKT;
00059 string terminal_msg_class_string = "RESPONSE_PKT";
00060 uint print_setup = 0;
00061 uint grid_size=4;
00062 const bool multiple_flit_in_buf = true;
00063 vector<uint> mc_positions;
00064 vector<string> traces;
00065 uint vcs=1, ports=5, buffer_size=2, credits=2;
00066 string trace_name, output_path, msg_type_string;
00067 string routing_scheme, sw_arbitration_scheme;
00068
00069
00070 uint mean_irt = 50;
00071 uint pkt_payload_length = 128;
00072
00073
00074 uint mc_response_pkt_payload_length = 512;
00075
00076 string addr_map_scheme_string,mc_scheduling_algorithm_string,dram_page_policy_string;
00077 uint THREAD_BITS_POSITION = 25;
00078 uint MC_ADDR_BITS = 12;
00079 uint BANK_BITS = 13;
00080 bool do_request_reply_network = false;
00081
00082 DRAM_CONFIG dram_config_string = DDR3_1600_10;
00083
00084
00085 DRAM_PAGE_POLICY dram_page_policy = OPEN_PAGE_POLICY;
00086 MC_SCHEDULLING_ALGO mc_scheduling_algorithm = FR_FCFS;
00087 ADDR_MAP_SCHEME addr_map_scheme = PAGE_INTERLEAVING;
00088 uint NO_OF_THREADS=16;
00089 uint MAX_BUFFER_SIZE = 8;
00090 uint MAX_CMD_BUFFER_SIZE = 16;
00091 uint RESPONSE_BUFFER_SIZE = 56*8;
00092
00093
00094 uint NO_OF_CHANNELS=1;
00095 uint NO_OF_RANKS=1;
00096
00097 uint NO_OF_BANKS=8;
00098
00099
00100 uint NO_OF_ROWS = 8192;
00101 uint NO_OF_COLUMNS = 128;
00102 uint COLUMN_SIZE = 64;
00103
00104
00105
00106
00107
00108 uint NETWORK_ADDRESS_BITS = 32;
00109 uint NETWORK_THREADID_BITS = 6;
00110 uint NETWORK_COMMAND_BITS = 3;
00111
00112 uint MSHR_SIZE= 8;
00113
00114 float CORE_SPEED = 3000;
00115 float CYCLE_2_NS = (CORE_SPEED*1.0 / 1000);
00116
00117 uint DDR_BUS_WIDTH;
00118 float BUS_SPEED;
00119 float MEM_SPEED;
00120 float MEM_CYCLE;
00121 float BUS_CYCLE;
00122 float tREFI;
00123 float tRFC;
00124 float tRC;
00125 float tRAS;
00126 uint t_CMD;
00127 uint t_RCD;
00128 uint t_RRD;
00129 uint t_RAS;
00130 uint t_CAS;
00131 uint t_RTRS;
00132 uint t_OST;
00133 uint t_WR;
00134 uint t_WTR;
00135 uint t_RP;
00136 uint t_CCD;
00137 uint t_AL;
00138 uint t_CWD;
00139 uint t_RC;
00140 uint t_RTP;
00141 uint t_RFC;
00142
00143 void
00144 init_dram_timing_parameters( void)
00145 {
00146 switch ( dram_config_string )
00147 {
00148 case DDR3_1333_9:
00149 {
00150
00151
00152
00153
00154
00155
00156 DDR_BUS_WIDTH = 8;
00157 BUS_SPEED = 1333;
00158 MEM_SPEED = 667;
00159 MEM_CYCLE = (CORE_SPEED*1.0 / MEM_SPEED);
00160 BUS_CYCLE = (CORE_SPEED*1.0 / BUS_SPEED);
00161
00162 tREFI = 7.8;
00163 tRFC = 160;
00164 tRC = 49.5;
00165 tRAS = 36;
00166
00167 t_CMD = ceil (1.0 * BUS_CYCLE);
00168 t_RCD = ceil (13.5 * CYCLE_2_NS);
00169 t_RRD = ceil (7.5 * CYCLE_2_NS);
00170 t_RAS = ceil (36 * CYCLE_2_NS);
00171 t_CAS = ceil (9.0 * MEM_CYCLE);
00172 t_RTRS = ceil (1.0 * MEM_CYCLE);
00173 t_OST = ceil (1.0 * MEM_CYCLE);
00174 t_WR = ceil (15 * CYCLE_2_NS);
00175 t_WTR = ceil (7.5 * CYCLE_2_NS);
00176 t_RP = ceil (13.5 * CYCLE_2_NS);
00177 t_CCD = ceil (DDR_BUS_WIDTH/2 * MEM_CYCLE);
00178 t_AL = 0;
00179 t_CWD = (ullint)(t_CAS-t_CMD);
00180 t_RC = ceil (49.5 * CYCLE_2_NS);
00181 t_RTP = ceil (7.5 * CYCLE_2_NS);
00182 t_RFC = ceil (160 * CYCLE_2_NS);
00183 }
00184 break;
00185 case DDR3_1600_10:
00186 {
00187
00188
00189
00190
00191
00192
00193 DDR_BUS_WIDTH = 8;
00194 BUS_SPEED = 1600;
00195 MEM_SPEED = 800;
00196 MEM_CYCLE = (CORE_SPEED*1.0 / MEM_SPEED);
00197 BUS_CYCLE = (CORE_SPEED*1.0 / BUS_SPEED);
00198
00199 tREFI = 7.8;
00200 tRFC = 160;
00201 tRC = 47.5;
00202 tRAS = 35;
00203
00204 t_CMD = (ullint)ceil (1.0 * BUS_CYCLE);
00205 t_RCD = (ullint)ceil (12.5 * CYCLE_2_NS);
00206 t_RRD = (ullint)ceil (6.0 * CYCLE_2_NS);
00207 t_RAS = (ullint)ceil (35 * CYCLE_2_NS);
00208 t_CAS = (ullint)ceil (10.0 * MEM_CYCLE);
00209 t_RTRS = (ullint)ceil (1.0 * MEM_CYCLE);
00210 t_OST = (ullint)ceil (1.0 * MEM_CYCLE);
00211 t_WR = (ullint)ceil (15 * CYCLE_2_NS);
00212 t_WTR = (ullint)ceil (7.5 * CYCLE_2_NS);
00213 t_RP = (ullint)ceil (12.5 * CYCLE_2_NS);
00214 t_CCD = (ullint)ceil (DDR_BUS_WIDTH/2 * MEM_CYCLE);
00215 t_AL = 0;
00216 t_CWD = t_CAS-t_CMD;
00217 t_RC = (ullint)ceil (47.5 * CYCLE_2_NS);
00218 t_RTP = (ullint)ceil (7.5 * CYCLE_2_NS);
00219 t_RFC = (ullint)ceil (160 * CYCLE_2_NS);
00220 }
00221 break;
00222
00223 case DDR3_1333_6:
00224 {
00225
00226
00227
00228
00229
00230
00231 DDR_BUS_WIDTH = 8;
00232 BUS_SPEED = 1333;
00233 MEM_SPEED = 667;
00234 MEM_CYCLE = (CORE_SPEED*1.0 / MEM_SPEED);
00235 BUS_CYCLE = (CORE_SPEED*1.0 / BUS_SPEED);
00236
00237 t_CMD = ceil (1.0 * BUS_CYCLE);
00238 t_RCD = ceil (9 * CYCLE_2_NS);
00239 t_RRD = ceil (6 * CYCLE_2_NS);
00240 t_RAS = ceil (30 * CYCLE_2_NS);
00241 t_CAS = ceil (6.0 * MEM_CYCLE);
00242 t_RTRS = ceil (1.0 * MEM_CYCLE);
00243 t_OST = ceil (1.0 * MEM_CYCLE);
00244 t_WR = ceil (10 * CYCLE_2_NS);
00245 t_WTR = ceil (t_WR / 2);
00246 t_RP = ceil (9 * CYCLE_2_NS);
00247 t_CCD = ceil (DDR_BUS_WIDTH/2 * MEM_CYCLE);
00248 t_AL = 0;
00249 t_CWD = t_CAS-t_CMD;
00250 t_RC = ceil (40.5 * CYCLE_2_NS);
00251 t_RTP = ceil (3.0 * MEM_CYCLE);
00252 t_RFC = ceil (210 * CYCLE_2_NS);
00253 }
00254 break;
00255 case DDR2_533_4:
00256 {
00257
00258
00259
00260
00261
00262
00263
00264
00265 DDR_BUS_WIDTH = 8;
00266 BUS_SPEED = 533;
00267 MEM_SPEED = 266;
00268 MEM_CYCLE = (CORE_SPEED*1.0 / MEM_SPEED);
00269 BUS_CYCLE = (CORE_SPEED*1.0 / BUS_SPEED);
00270
00271 t_CMD = ceil (1.0 * BUS_CYCLE);
00272 t_RCD = ceil (15 * CYCLE_2_NS);
00273 t_RRD = ceil (7.5 * CYCLE_2_NS);
00274 t_RAS = ceil (40 * CYCLE_2_NS);
00275 t_CAS = ceil (4.0 * MEM_CYCLE);
00276 t_RTRS = ceil (1.0 * MEM_CYCLE);
00277 t_OST = ceil (1.0 * MEM_CYCLE);
00278 t_WR = ceil (15 * CYCLE_2_NS);
00279 t_WTR = ceil (10 * CYCLE_2_NS);
00280 t_RP = ceil (15 * CYCLE_2_NS);
00281 t_CCD = ceil (2.0 * MEM_CYCLE);
00282 t_AL = 0;
00283 t_CWD = t_CAS-t_CMD;
00284 t_RC = ceil (55 * CYCLE_2_NS);
00285 t_RTP = ceil (7.5 * CYCLE_2_NS);
00286 t_RFC = ceil (105 * CYCLE_2_NS);
00287 }
00288 break;
00289
00290 case DDR2_667_4:
00291 {
00292
00293
00294
00295
00296
00297
00298
00299 DDR_BUS_WIDTH = 4;
00300 BUS_SPEED = 667;
00301 MEM_SPEED = 333;
00302 MEM_CYCLE = (CORE_SPEED*1.0 / MEM_SPEED);
00303 BUS_CYCLE = (CORE_SPEED*1.0 / BUS_SPEED);
00304
00305 t_CMD = ceil (1.0 * BUS_CYCLE);
00306 t_RCD = ceil (12 * CYCLE_2_NS);
00307 t_RRD = ceil (6 * CYCLE_2_NS);
00308 t_RAS = ceil (45 * CYCLE_2_NS);
00309 t_CAS = ceil (4.0 * MEM_CYCLE);
00310 t_RTRS = ceil (1.0 * MEM_CYCLE);
00311 t_OST = ceil (1.0 * MEM_CYCLE);
00312 t_WR = ceil (15 * CYCLE_2_NS);
00313 t_WTR = ceil (t_WR / 2);
00314 t_RP = ceil (12 * CYCLE_2_NS);
00315 t_CCD = ceil (DDR_BUS_WIDTH/2 * MEM_CYCLE);
00316 t_AL = 0;
00317 t_CWD = t_CAS-t_CMD;
00318 t_RC = ceil (57 * CYCLE_2_NS);
00319 t_RTP = ceil (3.0 * MEM_CYCLE);
00320 t_RFC = ceil (127.5 * CYCLE_2_NS);
00321 }
00322 break;
00323 }
00324 }
00325 #endif
00326