| |
| # 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 |
| |