summaryrefslogtreecommitdiff
path: root/ext/dsent/configs/photonic-clos.cfg
diff options
context:
space:
mode:
Diffstat (limited to 'ext/dsent/configs/photonic-clos.cfg')
-rw-r--r--ext/dsent/configs/photonic-clos.cfg112
1 files changed, 112 insertions, 0 deletions
diff --git a/ext/dsent/configs/photonic-clos.cfg b/ext/dsent/configs/photonic-clos.cfg
new file mode 100644
index 000000000..252b49ab0
--- /dev/null
+++ b/ext/dsent/configs/photonic-clos.cfg
@@ -0,0 +1,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
+