README revision 10447
113481Sgiacomo.travaglini@arm.comDSENT (Design Space Exploration of Networks Tool) 213481Sgiacomo.travaglini@arm.com 313481Sgiacomo.travaglini@arm.com=============================================================================== 413481Sgiacomo.travaglini@arm.comOverview 513481Sgiacomo.travaglini@arm.com=============================================================================== 613481Sgiacomo.travaglini@arm.comDSENT is a modeling tool designed for rapid design space exploration of both 713481Sgiacomo.travaglini@arm.comelectronical and emerging opto-electrical networks-on-chip (NoC). It provides 813481Sgiacomo.travaglini@arm.comanalytic and parameterized models for various network components and is 913481Sgiacomo.travaglini@arm.comportable across a range of technology assumptions. Given architectural-level 1013481Sgiacomo.travaglini@arm.comparameters, DSENT builds the specified models hierarchically from electrical 1113481Sgiacomo.travaglini@arm.comand optical building blocks and outputs detailed power and area estimates. 1213481Sgiacomo.travaglini@arm.com 1313481Sgiacomo.travaglini@arm.com 1413481Sgiacomo.travaglini@arm.com=============================================================================== 1513481Sgiacomo.travaglini@arm.comVersion 1613481Sgiacomo.travaglini@arm.com=============================================================================== 1713481Sgiacomo.travaglini@arm.comCurrent: 0.91 (26 June 2012) 1813481Sgiacomo.travaglini@arm.com 1913481Sgiacomo.travaglini@arm.comLatest version or additional information can be found at 2013481Sgiacomo.travaglini@arm.com 2113481Sgiacomo.travaglini@arm.com https://sites.google.com/site/mitdsent 2213481Sgiacomo.travaglini@arm.com 2313481Sgiacomo.travaglini@arm.com=============================================================================== 2413481Sgiacomo.travaglini@arm.comSystem requirements 2513481Sgiacomo.travaglini@arm.com=============================================================================== 2613481Sgiacomo.travaglini@arm.comWe have tested DSENT on the following platforms: 2713481Sgiacomo.travaglini@arm.com 2813481Sgiacomo.travaglini@arm.comLinux GNU g++ 4.1.2 and glibc 2.5 2913481Sgiacomo.travaglini@arm.comLinux GNU g++ 4.3.2 and glibc 2.7 3013481Sgiacomo.travaglini@arm.comLinux GNU g++ 4.4.5 and glibc 2.11.3 3113481Sgiacomo.travaglini@arm.comCygwin g++ 4.5.3 and cygwin 1.7.14 3213481Sgiacomo.travaglini@arm.com 3313481Sgiacomo.travaglini@arm.com=============================================================================== 3413481Sgiacomo.travaglini@arm.comLicense 3513481Sgiacomo.travaglini@arm.com=============================================================================== 3613481Sgiacomo.travaglini@arm.comPlease refer to the LICENSE file for licensing and copyright information. 3713481Sgiacomo.travaglini@arm.com 3813481Sgiacomo.travaglini@arm.comIf you use DSENT in your research, please acknowledge us by referencing our 3913481Sgiacomo.travaglini@arm.comNOCS 2012 paper: 4013481Sgiacomo.travaglini@arm.com 4113481Sgiacomo.travaglini@arm.comChen Sun, Chia-Hsin Owen Chen, George Kurian, Lan Wei, Jason Miller, 4213481Sgiacomo.travaglini@arm.comAnant Agarwal, Li-Shiuan Peh, Vladimir Stojanovic, "DSENT - A Tool Connecting 4313481Sgiacomo.travaglini@arm.comEmerging Photonics with Electronics for Opto-Electronic Networks-on-Chip 4413481Sgiacomo.travaglini@arm.comModeling." The 6th ACM/IEEE International Symposium on Networks-on-Chip 4513481Sgiacomo.travaglini@arm.com(NOCS), May 2012, Lyngby, Denmark. 4613481Sgiacomo.travaglini@arm.com 4713481Sgiacomo.travaglini@arm.com 4813481Sgiacomo.travaglini@arm.com=============================================================================== 4913481Sgiacomo.travaglini@arm.comContact information 5013481Sgiacomo.travaglini@arm.com=============================================================================== 5113481Sgiacomo.travaglini@arm.comIf you have any questions or comments, please contact us through our mailing 5213481Sgiacomo.travaglini@arm.comlist at: mitdsent@mit.edu 5313481Sgiacomo.travaglini@arm.com 5413481Sgiacomo.travaglini@arm.comWe will try to reply as soon as possible. 5513481Sgiacomo.travaglini@arm.com 5613481Sgiacomo.travaglini@arm.com 5713481Sgiacomo.travaglini@arm.com=============================================================================== 5813481Sgiacomo.travaglini@arm.comBuild (installation) 5913481Sgiacomo.travaglini@arm.com=============================================================================== 6013481Sgiacomo.travaglini@arm.comTo build DSENT: 6113481Sgiacomo.travaglini@arm.com 6213481Sgiacomo.travaglini@arm.com % make 6313481Sgiacomo.travaglini@arm.com 6413481Sgiacomo.travaglini@arm.comBy default DSENT is built with logging disabled. Logging keeps track of what 6513481Sgiacomo.travaglini@arm.comhappens while running DSENT. It is an option more for the DSENT framework and 6613481Sgiacomo.travaglini@arm.comDSNET models developers. If you want to enable this option, simply type the 6713481Sgiacomo.travaglini@arm.comfollowing: 6813481Sgiacomo.travaglini@arm.com 6913481Sgiacomo.travaglini@arm.com % make LIBUTIL_IS_LOG=true 7013481Sgiacomo.travaglini@arm.com 7113481Sgiacomo.travaglini@arm.comTo clean the build: 7213481Sgiacomo.travaglini@arm.com 7313481Sgiacomo.travaglini@arm.com % make clean 7413481Sgiacomo.travaglini@arm.com 7513481Sgiacomo.travaglini@arm.com 7613481Sgiacomo.travaglini@arm.com=============================================================================== 7713481Sgiacomo.travaglini@arm.comUsage 7813481Sgiacomo.travaglini@arm.com=============================================================================== 7913481Sgiacomo.travaglini@arm.comDSENT builds models and runs based on the specified configuration file. In the 8013481Sgiacomo.travaglini@arm.comconfiguration file, you specify a model name and necessary information 8113481Sgiacomo.travaglini@arm.com(parameters and properties) required to build the model. 8213481Sgiacomo.travaglini@arm.com 8313481Sgiacomo.travaglini@arm.comTo run DSENT: 8413481Sgiacomo.travaglini@arm.com 8513481Sgiacomo.travaglini@arm.com % ./dsent -cfg <config_filename> 8613481Sgiacomo.travaglini@arm.com 8713481Sgiacomo.travaglini@arm.comTo check what models are available: 8813481Sgiacomo.travaglini@arm.com 8913481Sgiacomo.travaglini@arm.com % ./dsent -available_models 9013481Sgiacomo.travaglini@arm.com 9113481Sgiacomo.travaglini@arm.comTo overwrite the configuration file from command line: 9213481Sgiacomo.travaglini@arm.com Use ';' to separate different key/value pairs. 9313481Sgiacomo.travaglini@arm.com 9413481Sgiacomo.travaglini@arm.com % ./dsent -cfg <config_filename> -overwrite <new query string> 9513481Sgiacomo.travaglini@arm.com % ./dsent -cfg configs/example.cfg -overwrite "NumberInputs=5; NumberOutputs=6;" 9613481Sgiacomo.travaglini@arm.com 9713481Sgiacomo.travaglini@arm.comTo print out in a more human-friendly fasion: 9813481Sgiacomo.travaglini@arm.com 9913481Sgiacomo.travaglini@arm.com % ./dsent -cfg <config_filename> -verbose 10013481Sgiacomo.travaglini@arm.com 10113481Sgiacomo.travaglini@arm.comTo check what options are available: 10213481Sgiacomo.travaglini@arm.com 10313481Sgiacomo.travaglini@arm.com % ./dsent -help 10413481Sgiacomo.travaglini@arm.com 10513481Sgiacomo.travaglini@arm.comPlease see configs/example.cfg for an example of a configuration file. 10613481Sgiacomo.travaglini@arm.com 10713481Sgiacomo.travaglini@arm.comPlease see configs/router.cfg for the router configuration file. 10813481Sgiacomo.travaglini@arm.com 10913481Sgiacomo.travaglini@arm.comPlease see QueryString and EvaluateString specifications below to know more 11013481Sgiacomo.travaglini@arm.comabout the usage. 11113481Sgiacomo.travaglini@arm.com 11213481Sgiacomo.travaglini@arm.com=============================================================================== 11313481Sgiacomo.travaglini@arm.comAdvanced Usage 11413481Sgiacomo.travaglini@arm.com=============================================================================== 11513481Sgiacomo.travaglini@arm.comSince DSENT is a generic modeling framework for electrical and optical 11613481Sgiacomo.travaglini@arm.comcomponents, you can create your own models. We will release guidelines on how 11713481Sgiacomo.travaglini@arm.comto create custom models on top of DSENT framework. You can use the provided 11813481Sgiacomo.travaglini@arm.commodels as references. 11913481Sgiacomo.travaglini@arm.com 12013481Sgiacomo.travaglini@arm.com 12113481Sgiacomo.travaglini@arm.com=============================================================================== 12213481Sgiacomo.travaglini@arm.comQuick start for Orion users 12313481Sgiacomo.travaglini@arm.com=============================================================================== 12413481Sgiacomo.travaglini@arm.comInstead of using the SIM_port.h file, DSENT uses a text-based configuration 12513481Sgiacomo.travaglini@arm.comfile to specify the router/link configurations. You do not need to recompile 12613481Sgiacomo.travaglini@arm.comif you change parameters. Even though we use different parameter names, the 12713481Sgiacomo.travaglini@arm.comones we use should be self-explanatory. In this package, we provide template 12813481Sgiacomo.travaglini@arm.comconfiguration files for the router and link: 12913481Sgiacomo.travaglini@arm.com 13013481Sgiacomo.travaglini@arm.com router - configs/router.cfg 13113481Sgiacomo.travaglini@arm.com link - configs/electrical-link.cfg 13213481Sgiacomo.travaglini@arm.com 13313481Sgiacomo.travaglini@arm.com Technology 13413481Sgiacomo.travaglini@arm.com ---------- 13513481Sgiacomo.travaglini@arm.com We currently support 45, 32, 22, 11nm. You can specify the desired 13613481Sgiacomo.travaglini@arm.com frequency but not the nominal voltage level since it is normally 13713481Sgiacomo.travaglini@arm.com fixed in different processes. 13813481Sgiacomo.travaglini@arm.com 13913481Sgiacomo.travaglini@arm.com Router specs 14013481Sgiacomo.travaglini@arm.com ------------ 14113481Sgiacomo.travaglini@arm.com Currently we only support the model of a widely used 3-pipeline-stage 14213481Sgiacomo.travaglini@arm.com input-buffered virtual channel router and does not have distinction 14313481Sgiacomo.travaglini@arm.com from ports for different components (cache, memory controller, I/O). 14413481Sgiacomo.travaglini@arm.com 14513481Sgiacomo.travaglini@arm.com Input buffer specs 14613481Sgiacomo.travaglini@arm.com ------------------ 14713481Sgiacomo.travaglini@arm.com The number of virtual channels used for different message classes 14813481Sgiacomo.travaglini@arm.com might be different; hence, DSENT uses NumberVirtualNetworks to 14913481Sgiacomo.travaglini@arm.com specify the number of message classes and use 15013481Sgiacomo.travaglini@arm.com NumberVirtualChannelsPerVirtualNetwork and 15113481Sgiacomo.travaglini@arm.com NumberBuffersPerVirtualChannel to define the buffers needed for a 15213481Sgiacomo.travaglini@arm.com virtual network (message class). 15313481Sgiacomo.travaglini@arm.com 15413481Sgiacomo.travaglini@arm.com Currently only DFF-based RAM is supports. This is reasonable since 15513481Sgiacomo.travaglini@arm.com normally the buffer space needed at input port is small enough and 15613481Sgiacomo.travaglini@arm.com does not need to use SRAMs or RFs (register files). 15713481Sgiacomo.travaglini@arm.com 15813481Sgiacomo.travaglini@arm.com Crossbar specs 15913481Sgiacomo.travaglini@arm.com -------------- 16013481Sgiacomo.travaglini@arm.com Currently DSENT only supports multiplexer-based crossbars 16113481Sgiacomo.travaglini@arm.com (MULTREE_CROSSBAR). You no longer need to specify the degree of the 16213481Sgiacomo.travaglini@arm.com multiplexers. 16313481Sgiacomo.travaglini@arm.com 16413481Sgiacomo.travaglini@arm.com Switch allocator specs 16513481Sgiacomo.travaglini@arm.com ---------------------- 16613481Sgiacomo.travaglini@arm.com DSENT models a two-stage switch allocator. The first stage is used to 16713481Sgiacomo.travaglini@arm.com arbitrate between VCs in the same input port, and the second stage is 16813481Sgiacomo.travaglini@arm.com used to arbitrate between input ports. If there is only one VC in 16913481Sgiacomo.travaglini@arm.com the input port, then the energy/power/area cost for the first stage 17013481Sgiacomo.travaglini@arm.com will be zero. 17113481Sgiacomo.travaglini@arm.com 17213481Sgiacomo.travaglini@arm.com Currently, DSENT supports MatrixArbiter. 17313481Sgiacomo.travaglini@arm.com 17413481Sgiacomo.travaglini@arm.com VC allocator specs 17513481Sgiacomo.travaglini@arm.com ------------------ 17613481Sgiacomo.travaglini@arm.com We assume that the router uses a VC select scheme where the VC 17713481Sgiacomo.travaglini@arm.com allocation is done by just popping a FIFO. Currently DSENT ignores 17813481Sgiacomo.travaglini@arm.com this module since the FIFO that needs to keep the free VC information 17913481Sgiacomo.travaglini@arm.com should be small enough. 18013481Sgiacomo.travaglini@arm.com 18113481Sgiacomo.travaglini@arm.com Clock distribution specs 18213481Sgiacomo.travaglini@arm.com ------------------------ 18313481Sgiacomo.travaglini@arm.com Currently DSENT provides a broadcast H-Tree model. You can specify 18413481Sgiacomo.travaglini@arm.com the number of levels of the H-Tree (normally 4 or 5 levels should be 18513481Sgiacomo.travaglini@arm.com enough). 18613481Sgiacomo.travaglini@arm.com 18713481Sgiacomo.travaglini@arm.comDSENT replaces the original orion_router_power, orion_router_area and 18813481Sgiacomo.travaglini@arm.comorion_link with QueryString and EvaluateString (see below for more detailed 18913481Sgiacomo.travaglini@arm.cominformation on how to use them). 19013481Sgiacomo.travaglini@arm.com 19113481Sgiacomo.travaglini@arm.com 19213481Sgiacomo.travaglini@arm.com=============================================================================== 19313481Sgiacomo.travaglini@arm.comQueryString specifications 19413481Sgiacomo.travaglini@arm.com=============================================================================== 19513481Sgiacomo.travaglini@arm.comDSENT is a query-based model evaluator. You use QueryString to specify what 19613481Sgiacomo.travaglini@arm.cominformation you want DSENT to output. The syntax of a query string is shown as 19713481Sgiacomo.travaglini@arm.comfollows: 19813481Sgiacomo.travaglini@arm.com 19913481Sgiacomo.travaglini@arm.com [Query type]>>[Instance name (with hierarchy)]:[Sub query type]@[Detail level] 20013481Sgiacomo.travaglini@arm.com 20113481Sgiacomo.travaglini@arm.com E.g., Area>>Router->Crossbar:Active@4 20213481Sgiacomo.travaglini@arm.com * Query type: Area 20313481Sgiacomo.travaglini@arm.com * Instance name: Router->Crossbar 204 * Sub query type: Active 205 * Detail level: 4 206 207 Query type 208 ---------- 209 There are 9 types of queries: Parameter, Property, Energy, NddPower, 210 Area, InstHier, EventHier, NddPowerHier, AreaHier. 211 212 Parameter - Print the model parameters needed to be specified 213 Property - Print the design constraints or utilization 214 Use these to check what needs to be specified in the configuration 215 file for the model. No sub query type is needed for these two 216 types. 217 218 Energy - Print the data-dependent energy cost of an event 219 NddPower - Print the non-data-denepent power of an instance 220 Area - Print the area cost of an instance 221 Use these to obtain the costs of the specified model. 222 223 InstHier - Print the instance name hierarchy 224 Use this to know what sub-instances are built for this model 225 226 EventHier - Print the available events for Energy queries 227 NddPowerHier - Print the available non-data-dependent power types 228 AreaHier - Print the available area types 229 Use this to know what to specify in the "sub query type" field. 230 231 Instance name (with hierarchy) 232 ------------------------------ 233 The (sub)instance that you want to perform query. The name should be 234 hierarchical starting from the top level model. Hierarchies are 235 separated by the symbol "->". 236 237 Sub query type 238 -------------- 239 This field is not required for 'Parameter', 'Property' and 'InstHier'. 240 241 For 'Energy', this field stands for the event that cause this energy 242 cost, such as 'WriteBuffer'. 243 244 For 'NddPower' and 'Area', this field stands for the power and area 245 cost of the model, such as 'Leakage' and 'Active'. 246 247 For 'EventHier', if this field is not specified, all events of this 248 instance will be printed; if this field is specified, then only 249 the specified event will be printed. 'AreaHier' and 'NddPowerHier' 250 also have the similar behavior. 251 252 Detail level 253 ------------ 254 Defines the hierarchy depth to be printed. '0' means current level. 255 This field is needed for all query types for syntax correctness, 256 although it is not used for 'Parameter' and 'Property'. 257 258 Multi-line queries 259 ------------------ 260 Query strings specified across multiple lines in the config file 261 must have each line be terminated by a '\'. It is whitespace sensitive, 262 so make sure there are no spaces after '\'. Note that the parser 263 prunes everything after the comment '#' character, including '\'! 264 See configs/router.cfg as an example. 265 266 Examples of individual QueryString's: 267 268 Parameter>>Router@0 269 Property>>Router->Crossbar@0 270 InstHier>>Router->InputPort@2 271 Energy>>Router:WriteBuffer@2 272 NddPower>>Router->Crossbar:Leakage@3 273 Area>>Router->SwitchAllocator:Active@4 274 275 276=============================================================================== 277EvaluateString specifications 278=============================================================================== 279DSENT provides a way to let users do custom calculations by specifying the 280EvaluateString in the configuration file. EvaluateString constains a sequence 281of statements separated by one ';'. DSENT reads through the sequence and 282evaluates the statements one-by-one. 283 284Currently, DSENT supports: 285 Four arithmetic operations 286 -------------------------- 287 3 + 4 * (5 + 6) / 7; 288 289 Define local variables through assignments 290 ------------------------------------------ 291 variable 'a' will be mapped to 7 for future referencing 292 293 a = 3 + 4; 294 295 Global variable referencing 296 --------------------------- 297 $(var_name) indicates either a key in the configuration file or a 298 query string. If var_name exists in the configuration file, then the 299 corresponding value will be returned; otherwise, DSENT will do a query 300 using the string var_name@0 and return the query result. 301 302 b = $(Energy>>Router:WriteBuffer) * $(Frequency); 303 304 Printing outputs 305 ---------------- 306 DSENT prints the string following the keyword 'print'. 307 308 print <expression> 309 print "<string_to_print>"; 310 print "<string_to_print>" <expression>; 311 312 print 3 + 4; # Output: 7 313 print "Hello World"; # Output: Hello World 314 print "Hello World " 3 + 4; # Output: Hello World 7 315 316 Multi-line evaluate strings 317 --------------------------- 318 Evaluate strings specified across multiple lines in the config file 319 must have each line be terminated by a '\'. It is whitespace sensitive, 320 so make sure there are no spaces after '\'. Note that the parser 321 prunes everything after the comment '#' character, including '\'! 322 See configs/router.cfg as an example. 323 324 325=============================================================================== 326Units 327=============================================================================== 328DSENT uses only SI units for all inputs and outputs. For example: 329 time = s (second) 330 distance = m (meter) 331 capacitance = F (Farad) 332 power = W (Watt) 333 energy = J (Joule) 334 resistance = Ohm 335 loss = dB (Decibels) 336 337 338=============================================================================== 339Known Bugs and Issues 340=============================================================================== 341 3421. If timing is not met, the timing optimizer will put the model in a state 343where everything is the maximum size (huge power, area). Thus, model results 344can be considered a gross over-estimate when timing isn't met. This is just the 345nature of the greedy timing optimizer and it will be addressed in the future. 346 3472. The VC control and credit buffer component of the router is currently 348not modeled, as they have always been assumed to be lumped into the "negligible 349control cost" category in previous models and evaluations. Our recent 350experiments have shown that this is not true and we will be adding this in the 351next iteration. 352 3533. Some of the connectivity paths have not been checked thoroughly. Thus, 354timing optimizer may miss some of the paths. However, we tried to make sure 355that the critical paths are modeled properly. 356 3574. Local interconnect will have an ever-larger impact on power and timing as 358technology scales. So far we have not implemented a method for automatically 359estimating them but we will eventually address this. Evaluations for 22nm 360and below will tend to underestimate as a result. 361 362=============================================================================== 363Revision log 364=============================================================================== 365V0.91: 366 Bugs fix: 367 1. Leakage power calculation printout for router (configs/router.cfg). 368 369 New feature: 370 1. Area printout for router (configs/router.cfg). 371 372V0.9: 373 First release. 374 375