# 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