1
2# Name of model to be built and evaluated
3ModelName = PhotonicClos
4
5# Query string to choose what to evaluate (use '\' to enable multiline config)
6QueryString = \
7    Energy>>PhotonicClos:AvgUnicast@1 \
8    NddPower>>PhotonicClos:RingTuning@0 \
9    NddPower>>PhotonicClos:Laser@0 \
10    NddPower>>PhotonicClos:Leakage@0 \
11    Area>>PhotonicClos:Active@0 \
12    Area>>PhotonicClos:GlobalWire@0 \
13    Area>>PhotonicClos:Photonic@0 \
14    
15# Injection rate (# flits per cycle per site), assuming that the network is not
16# saturated and uniform random traffic
17InjectionRate                           = 0.1
18# Evaluation string
19EvaluateString                          = \
20    dynamic         = $(InjectionRate) * $(NumberInputSites) * $(Frequency) * $(Energy>>PhotonicClos:AvgUnicast); \
21    leakage         = $(NddPower>>PhotonicClos:Leakage); \
22    ring_heating    = $(NddPower>>PhotonicClos:RingTuning); \
23    laser           = $(NddPower>>PhotonicClos:Laser); \
24    total           = dynamic + leakage + ring_heating + laser; \
25    energy_per_bit  = total / ($(InjectionRate) * $(Frequency) * $(NumberInputSites) * $(NumberBitsPerFlit)); \
26    active_area     = $(Area>>PhotonicClos:Active); \
27    global_area     = $(Area>>PhotonicClos:GlobalWire); \
28    photonic_area   = $(Area>>PhotonicClos:Photonic); \
29    print "Photonic Clos Network:"; \
30    print "    Dynamic power: " dynamic; \
31    print "    Leakage power: " leakage; \
32    print "    Laser power: " laser; \
33    print "    Ring Heater Power: " ring_heating; \
34    print "    Total power: " total; \
35    print "    Energy per bit: " energy_per_bit; \
36    print "    Active Area: " active_area; \
37    print "    Global Wire Area: " global_area; \
38    print "    Photonic Area: " photonic_area; \
39    
40# Technology file (see other models in tech/models)
41ElectricalTechModelFilename             = tech/tech_models/Bulk45LVT.model
42PhotonicTechModelFilename               = tech/tech_models/Photonics.model
43
44###############################################################################
45# Timing optimization
46###############################################################################
47
48# Individual network components already optimize for timing, no need to do it
49# at the top-level
50# Operating frequency (Hz)
51Frequency                                       = 4e9
52
53# NOTE: If you adjust Frequency, make sure you adjust SWSR->LinkDataRate
54# to make sure it is >= Frequency, since the model doesn't support serialization
55# ratios < 1.
56
57# Report timing
58IsReportTiming                                  = true
59# Report timing
60ReportTiming->StartNetNames                     = [CK]
61
62###############################################################################
63# Model specifications
64###############################################################################
65
66# Clos Parameters
67# Number of sites that can send
68NumberInputSites                                = 64
69# Number of sites that can receive
70NumberOutputSites                               = 64
71# Bits per flit
72NumberBitsPerFlit                               = 64
73# Number of routers at each stage
74NumberIngressRouters                            = 8
75NumberMiddleRouters                             = 8
76NumberEgressRouters                             = 8
77
78# Router-specific parameters (see dsent.cfg.router for descriptions)
79Router->NumberVirtualNetworks                   = 3
80Router->NumberVirtualChannelsPerVirtualNetwork  = [1,1,1]
81Router->NumberBuffersPerVirtualChannel          = [4,1,1]
82Router->InputPort->BufferModel                  = DFFRAM
83Router->CrossbarModel                           = MultiplexerCrossbar
84Router->SwitchAllocator->ArbiterModel           = MatrixArbiter
85Router->ClockTreeModel                          = BroadcastHTree
86Router->ClockTree->NumberLevels                 = 6
87Router->ClockTree->WireLayer                    = Intermediate
88Router->ClockTree->WireWidthMultiplier          = 1.0
89
90# Electrical Link-specific parameters
91Link->WireLayer                                 = Global
92Link->WireWidthMultiplier                       = 1.0
93Link->WireSpacingMultiplier                     = 1.0
94
95# Photonic link-specfic parameters
96# Link data rate (Hz), must be >= Frequency of the network
97SWSR->LinkDataRate                              = 4e9
98# Optimize the laser/modulator power balance for the given utilization
99SWSR->OptUtil 					                = 0.5
100# Type of the laser. Current valid choices are: (Standard, Throttled)
101# Note, if you change this to throttled, the laser gets lumped into dynamic
102# power, so change the Ndd power query for laser appropriately
103SWSR->LaserType                                 = Standard
104# Ring tuning method. Current valid choices are:
105# (FullThermal, AthermalWithTrim, ThermalWithBitReshuffle, ElectricalAssistWithBitReshuffle)
106SWSR->RingTuningMethod                          = ThermalWithBitReshuffle 
107    
108# Physical organization properties
109# Note: This model assumes a square network layout
110InputSitePitch                                  = 1e-3
111OutputSitePitch                                 = 1e-3
112
113