
# Instance
ModelName = ElectricalClos

# Query string used to choose what will be output by Orion
QueryString = \
    Energy>>ElectricalClos:AvgUnicast@1 \
    NddPower>>ElectricalClos:Leakage@0 \
    Area>>ElectricalClos:Active@0 \
    Area>>ElectricalClos:GlobalWire@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>>ElectricalClos:AvgUnicast); \
    leakage         = $(NddPower>>ElectricalClos:Leakage); \
    total           = dynamic + leakage; \
    energy_per_bit  = total / ($(InjectionRate) * $(Frequency) * $(NumberInputSites) * $(NumberBitsPerFlit)); \
    active_area     = $(Area>>ElectricalClos:Active); \
    global_area     = $(Area>>ElectricalClos:GlobalWire); \
    print "Electrical Clos Network:"; \
    print "    Dynamic power: " dynamic; \
    print "    Leakage power: " leakage; \
    print "    Total power: " total; \
    print "    Energy per bit: " energy_per_bit; \
    print "    Global Wire Area: " global_area; \
    print "    Active Area: " active_area; \
    
# Technology file (see other models in tech/models)
ElectricalTechModelFilename             = tech/tech_models/Bulk45LVT.model

###############################################################################
# Timing optimization
###############################################################################

# Individual network components already optimize for timing, no need to do it
# at the top-level
# Operating frequency (Hz)
Frequency                                       = 1.0e9

# 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

# Physical organization properties
# Note: This model assumes a square network layout
InputSitePitch                                  = 1e-3
OutputSitePitch                                 = 1e-3