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