e8ed7b1d1b
This patch adds a tool called DSENT to the ext/ directory. DSENT is a tool that models power and area for on-chip networks. The next patch adds a script for using the tool.
112 lines
5 KiB
INI
112 lines
5 KiB
INI
|
|
# 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
|
|
|