110447Snilay@cs.wisc.edu
210447Snilay@cs.wisc.edu# Name of model to be built and evaluated
310447Snilay@cs.wisc.eduModelName = PhotonicClos
410447Snilay@cs.wisc.edu
510447Snilay@cs.wisc.edu# Query string to choose what to evaluate (use '\' to enable multiline config)
610447Snilay@cs.wisc.eduQueryString = \
710447Snilay@cs.wisc.edu    Energy>>PhotonicClos:AvgUnicast@1 \
810447Snilay@cs.wisc.edu    NddPower>>PhotonicClos:RingTuning@0 \
910447Snilay@cs.wisc.edu    NddPower>>PhotonicClos:Laser@0 \
1010447Snilay@cs.wisc.edu    NddPower>>PhotonicClos:Leakage@0 \
1110447Snilay@cs.wisc.edu    Area>>PhotonicClos:Active@0 \
1210447Snilay@cs.wisc.edu    Area>>PhotonicClos:GlobalWire@0 \
1310447Snilay@cs.wisc.edu    Area>>PhotonicClos:Photonic@0 \
1410447Snilay@cs.wisc.edu    
1510447Snilay@cs.wisc.edu# Injection rate (# flits per cycle per site), assuming that the network is not
1610447Snilay@cs.wisc.edu# saturated and uniform random traffic
1710447Snilay@cs.wisc.eduInjectionRate                           = 0.1
1810447Snilay@cs.wisc.edu# Evaluation string
1910447Snilay@cs.wisc.eduEvaluateString                          = \
2010447Snilay@cs.wisc.edu    dynamic         = $(InjectionRate) * $(NumberInputSites) * $(Frequency) * $(Energy>>PhotonicClos:AvgUnicast); \
2110447Snilay@cs.wisc.edu    leakage         = $(NddPower>>PhotonicClos:Leakage); \
2210447Snilay@cs.wisc.edu    ring_heating    = $(NddPower>>PhotonicClos:RingTuning); \
2310447Snilay@cs.wisc.edu    laser           = $(NddPower>>PhotonicClos:Laser); \
2410447Snilay@cs.wisc.edu    total           = dynamic + leakage + ring_heating + laser; \
2510447Snilay@cs.wisc.edu    energy_per_bit  = total / ($(InjectionRate) * $(Frequency) * $(NumberInputSites) * $(NumberBitsPerFlit)); \
2610447Snilay@cs.wisc.edu    active_area     = $(Area>>PhotonicClos:Active); \
2710447Snilay@cs.wisc.edu    global_area     = $(Area>>PhotonicClos:GlobalWire); \
2810447Snilay@cs.wisc.edu    photonic_area   = $(Area>>PhotonicClos:Photonic); \
2910447Snilay@cs.wisc.edu    print "Photonic Clos Network:"; \
3010447Snilay@cs.wisc.edu    print "    Dynamic power: " dynamic; \
3110447Snilay@cs.wisc.edu    print "    Leakage power: " leakage; \
3210447Snilay@cs.wisc.edu    print "    Laser power: " laser; \
3310447Snilay@cs.wisc.edu    print "    Ring Heater Power: " ring_heating; \
3410447Snilay@cs.wisc.edu    print "    Total power: " total; \
3510447Snilay@cs.wisc.edu    print "    Energy per bit: " energy_per_bit; \
3610447Snilay@cs.wisc.edu    print "    Active Area: " active_area; \
3710447Snilay@cs.wisc.edu    print "    Global Wire Area: " global_area; \
3810447Snilay@cs.wisc.edu    print "    Photonic Area: " photonic_area; \
3910447Snilay@cs.wisc.edu    
4010447Snilay@cs.wisc.edu# Technology file (see other models in tech/models)
4110447Snilay@cs.wisc.eduElectricalTechModelFilename             = tech/tech_models/Bulk45LVT.model
4210447Snilay@cs.wisc.eduPhotonicTechModelFilename               = tech/tech_models/Photonics.model
4310447Snilay@cs.wisc.edu
4410447Snilay@cs.wisc.edu###############################################################################
4510447Snilay@cs.wisc.edu# Timing optimization
4610447Snilay@cs.wisc.edu###############################################################################
4710447Snilay@cs.wisc.edu
4810447Snilay@cs.wisc.edu# Individual network components already optimize for timing, no need to do it
4910447Snilay@cs.wisc.edu# at the top-level
5010447Snilay@cs.wisc.edu# Operating frequency (Hz)
5110447Snilay@cs.wisc.eduFrequency                                       = 4e9
5210447Snilay@cs.wisc.edu
5310447Snilay@cs.wisc.edu# NOTE: If you adjust Frequency, make sure you adjust SWSR->LinkDataRate
5410447Snilay@cs.wisc.edu# to make sure it is >= Frequency, since the model doesn't support serialization
5510447Snilay@cs.wisc.edu# ratios < 1.
5610447Snilay@cs.wisc.edu
5710447Snilay@cs.wisc.edu# Report timing
5810447Snilay@cs.wisc.eduIsReportTiming                                  = true
5910447Snilay@cs.wisc.edu# Report timing
6010447Snilay@cs.wisc.eduReportTiming->StartNetNames                     = [CK]
6110447Snilay@cs.wisc.edu
6210447Snilay@cs.wisc.edu###############################################################################
6310447Snilay@cs.wisc.edu# Model specifications
6410447Snilay@cs.wisc.edu###############################################################################
6510447Snilay@cs.wisc.edu
6610447Snilay@cs.wisc.edu# Clos Parameters
6710447Snilay@cs.wisc.edu# Number of sites that can send
6810447Snilay@cs.wisc.eduNumberInputSites                                = 64
6910447Snilay@cs.wisc.edu# Number of sites that can receive
7010447Snilay@cs.wisc.eduNumberOutputSites                               = 64
7110447Snilay@cs.wisc.edu# Bits per flit
7210447Snilay@cs.wisc.eduNumberBitsPerFlit                               = 64
7310447Snilay@cs.wisc.edu# Number of routers at each stage
7410447Snilay@cs.wisc.eduNumberIngressRouters                            = 8
7510447Snilay@cs.wisc.eduNumberMiddleRouters                             = 8
7610447Snilay@cs.wisc.eduNumberEgressRouters                             = 8
7710447Snilay@cs.wisc.edu
7810447Snilay@cs.wisc.edu# Router-specific parameters (see dsent.cfg.router for descriptions)
7910447Snilay@cs.wisc.eduRouter->NumberVirtualNetworks                   = 3
8010447Snilay@cs.wisc.eduRouter->NumberVirtualChannelsPerVirtualNetwork  = [1,1,1]
8110447Snilay@cs.wisc.eduRouter->NumberBuffersPerVirtualChannel          = [4,1,1]
8210447Snilay@cs.wisc.eduRouter->InputPort->BufferModel                  = DFFRAM
8310447Snilay@cs.wisc.eduRouter->CrossbarModel                           = MultiplexerCrossbar
8410447Snilay@cs.wisc.eduRouter->SwitchAllocator->ArbiterModel           = MatrixArbiter
8510447Snilay@cs.wisc.eduRouter->ClockTreeModel                          = BroadcastHTree
8610447Snilay@cs.wisc.eduRouter->ClockTree->NumberLevels                 = 6
8710447Snilay@cs.wisc.eduRouter->ClockTree->WireLayer                    = Intermediate
8810447Snilay@cs.wisc.eduRouter->ClockTree->WireWidthMultiplier          = 1.0
8910447Snilay@cs.wisc.edu
9010447Snilay@cs.wisc.edu# Electrical Link-specific parameters
9110447Snilay@cs.wisc.eduLink->WireLayer                                 = Global
9210447Snilay@cs.wisc.eduLink->WireWidthMultiplier                       = 1.0
9310447Snilay@cs.wisc.eduLink->WireSpacingMultiplier                     = 1.0
9410447Snilay@cs.wisc.edu
9510447Snilay@cs.wisc.edu# Photonic link-specfic parameters
9610447Snilay@cs.wisc.edu# Link data rate (Hz), must be >= Frequency of the network
9710447Snilay@cs.wisc.eduSWSR->LinkDataRate                              = 4e9
9810447Snilay@cs.wisc.edu# Optimize the laser/modulator power balance for the given utilization
9910447Snilay@cs.wisc.eduSWSR->OptUtil 					                = 0.5
10010447Snilay@cs.wisc.edu# Type of the laser. Current valid choices are: (Standard, Throttled)
10110447Snilay@cs.wisc.edu# Note, if you change this to throttled, the laser gets lumped into dynamic
10210447Snilay@cs.wisc.edu# power, so change the Ndd power query for laser appropriately
10310447Snilay@cs.wisc.eduSWSR->LaserType                                 = Standard
10410447Snilay@cs.wisc.edu# Ring tuning method. Current valid choices are:
10510447Snilay@cs.wisc.edu# (FullThermal, AthermalWithTrim, ThermalWithBitReshuffle, ElectricalAssistWithBitReshuffle)
10610447Snilay@cs.wisc.eduSWSR->RingTuningMethod                          = ThermalWithBitReshuffle 
10710447Snilay@cs.wisc.edu    
10810447Snilay@cs.wisc.edu# Physical organization properties
10910447Snilay@cs.wisc.edu# Note: This model assumes a square network layout
11010447Snilay@cs.wisc.eduInputSitePitch                                  = 1e-3
11110447Snilay@cs.wisc.eduOutputSitePitch                                 = 1e-3
11210447Snilay@cs.wisc.edu
113