summaryrefslogtreecommitdiff
path: root/ext/dsent/configs
diff options
context:
space:
mode:
Diffstat (limited to 'ext/dsent/configs')
-rw-r--r--ext/dsent/configs/electrical-clos.cfg84
-rw-r--r--ext/dsent/configs/electrical-link.cfg57
-rw-r--r--ext/dsent/configs/electrical-mesh.cfg81
-rw-r--r--ext/dsent/configs/example.cfg40
-rw-r--r--ext/dsent/configs/photonic-clos.cfg112
-rw-r--r--ext/dsent/configs/photonic-link.cfg75
-rw-r--r--ext/dsent/configs/router.cfg131
7 files changed, 580 insertions, 0 deletions
diff --git a/ext/dsent/configs/electrical-clos.cfg b/ext/dsent/configs/electrical-clos.cfg
new file mode 100644
index 000000000..29888f754
--- /dev/null
+++ b/ext/dsent/configs/electrical-clos.cfg
@@ -0,0 +1,84 @@
+
+# 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 \ No newline at end of file
diff --git a/ext/dsent/configs/electrical-link.cfg b/ext/dsent/configs/electrical-link.cfg
new file mode 100644
index 000000000..8369b8633
--- /dev/null
+++ b/ext/dsent/configs/electrical-link.cfg
@@ -0,0 +1,57 @@
+
+# Name of model to be built and evaluated
+ModelName = RepeatedLink
+
+# Query string to choose what to evaluate (use '\' to enable multiline config)
+QueryString = \
+ Energy>>RepeatedLink:Send@0 \
+ NddPower>>RepeatedLink:Leakage@0 \
+ Area>>RepeatedLink:Active@0 \
+
+# Injection rate
+InjectionRate = 0.3
+# Evaluation string
+EvaluateString = \
+ link_dynamic = $(Energy>>RepeatedLink:Send) * $(Frequency); \
+ link_static = $(NddPower>>RepeatedLink:Leakage); \
+ print "Link:"; \
+ print " Dynamic power: " link_dynamic * $(InjectionRate); \
+ print " Leakage power: " link_static; \
+
+# Technology file (see models in tech/models)
+ElectricalTechModelFilename = tech/tech_models/Bulk45LVT.model
+
+###############################################################################
+# Timing optimization
+###############################################################################
+
+# True if want to perform timing optimization; otherwise, false.
+# NOTE: for links it should never be turned on for timing optimization, the
+# link model is already doing timing optimization to insert buffers based on
+# the 'Delay' specified
+IsPerformTimingOptimization = false
+# Nets that the timing optimizer starts from
+TimingOptimization->StartNetNames = []
+# Operating frequency (Hz)
+# 'Frequency' has no effect to the RepeatedLink model. Use 'Delay' to
+# constraint the links timing.
+Frequency = 1e9
+
+###############################################################################
+# Model specifications
+###############################################################################
+
+# Data width of the repeated link/bus
+NumberBits = 64
+# Wire layer
+WireLayer = Global
+# Wire width multiplier
+WireWidthMultiplier = 1.0
+# Wire spacing multiplier
+WireSpacingMultiplier = 1.0
+
+# Wire length (m)
+WireLength = 1e-3
+# Delay of the wire (may not be 1.0 / Frequency)
+Delay = 1e-9
+
diff --git a/ext/dsent/configs/electrical-mesh.cfg b/ext/dsent/configs/electrical-mesh.cfg
new file mode 100644
index 000000000..929e4f19c
--- /dev/null
+++ b/ext/dsent/configs/electrical-mesh.cfg
@@ -0,0 +1,81 @@
+
+# Instance
+ModelName = ElectricalMesh
+
+# Query string used to choose what will be output by Orion
+QueryString = \
+ Energy>>ElectricalMesh:AvgUnicast@0 \
+ NddPower>>ElectricalMesh:Leakage@0 \
+ Area>>ElectricalMesh:Active@0 \
+ Area>>ElectricalMesh: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) * $(NumberSites) * $(Frequency) * $(Energy>>ElectricalMesh:AvgUnicast); \
+ leakage = $(NddPower>>ElectricalMesh:Leakage); \
+ total = dynamic + leakage; \
+ energy_per_bit = total / ($(InjectionRate) * $(Frequency) * $(NumberSites) * $(NumberBitsPerFlit)); \
+ active_area = $(Area>>ElectricalMesh:Active); \
+ global_area = $(Area>>ElectricalMesh:GlobalWire); \
+ print "Electrical Mesh 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
+
+# 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
+###############################################################################
+
+# Mesh Parameters
+ClockFrequency = 1e9
+NumberSites = 64
+NumberBitsPerFlit = 64
+NumberSitesPerRouter = 1
+
+# 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
+SitePitch = 1e-3
diff --git a/ext/dsent/configs/example.cfg b/ext/dsent/configs/example.cfg
new file mode 100644
index 000000000..9e147b2d4
--- /dev/null
+++ b/ext/dsent/configs/example.cfg
@@ -0,0 +1,40 @@
+
+# Example using a crossbar
+# % ./dsent -cfg configs/example.example -verbose
+
+
+# Name of model to be built and evaluated
+ModelName = MultiplexerCrossbar
+
+# Query string to choose what to evaluate (use '\' to enable multiline config)
+QueryString = \
+ Energy>>MultiplexerCrossbar:Multicast1@0 \
+ Energy>>MultiplexerCrossbar:Multicast1@2 \
+ NddPower>>MultiplexerCrossbar:Leakage@1 \
+ Area>>MultiplexerCrossbar:Active@1
+
+# Technology file (see models in tech/tech_models)
+ElectricalTechModelFilename = tech/tech_models/Bulk45LVT.model
+
+###############################################################################
+# Timing optimization
+###############################################################################
+
+# True if want to perform timing optimization; otherwise, false.
+IsPerformTimingOptimization = true
+# Nets that the timing optimizer starts from
+TimingOptimization->StartNetNames = [*] # '*' means from all inputs
+# Operating frequency (Hz)
+Frequency = 2e9
+
+###############################################################################
+# Model specifications
+###############################################################################
+
+# Number of inputs
+NumberInputs = 4
+# Number of outputs
+NumberOutputs = 4
+# Number of bits per input/output
+NumberBits = 64
+
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
+
diff --git a/ext/dsent/configs/photonic-link.cfg b/ext/dsent/configs/photonic-link.cfg
new file mode 100644
index 000000000..755e38bbc
--- /dev/null
+++ b/ext/dsent/configs/photonic-link.cfg
@@ -0,0 +1,75 @@
+
+# Name of model to be built and evaluated
+ModelName = SWSRLink
+
+# Query string to choose what to evaluate (use '\' to enable multiline config)
+QueryString = \
+ Energy>>SWSRLink:Send@1 \
+ NddPower>>SWSRLink:Leakage@0 \
+ NddPower>>SWSRLink:RingTuning@0 \
+ NddPower>>SWSRLink:Laser@0 \
+ Area>>SWSRLink:Active@0 \
+ Area>>SWSRLink:Photonic@0 \
+
+# Injection rate (# words per core cycle)
+InjectionRate = 1.0
+# Evaluation string
+EvaluateString = \
+ dynamic = $(InjectionRate) * $(CoreDataRate) * $(Energy>>SWSRLink:Send); \
+ leakage = $(NddPower>>SWSRLink:Leakage); \
+ ring_heating = $(NddPower>>SWSRLink:RingTuning); \
+ laser = $(NddPower>>SWSRLink:Laser); \
+ total = dynamic + leakage + ring_heating + laser; \
+ energy_per_bit = total / ($(InjectionRate) * $(CoreDataRate) * $(NumberBits)); \
+ active_area = $(Area>>SWSRLink:Active); \
+ photonic_area = $(Area>>SWSRLink: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 " Photonic Area: " photonic_area; \
+
+# Technology file (see other models in tech/models)
+ElectricalTechModelFilename = tech/tech_models/Bulk45LVT.model
+PhotonicTechModelFilename = tech/tech_models/Photonics.model
+
+###############################################################################
+# Model specifications
+###############################################################################
+
+# Clos Parameters
+# Number of bits the link is responsible for delivering
+NumberBits = 64
+# Core data rate
+CoreDataRate = 1e9
+# Link data rate, if link data-rate > core data rate, SerDes will be applied
+LinkDataRate = 1e9
+
+# Optimization parameters
+# Whether link specs will be optimized for power
+OptimizeLoss = true
+# Optimize the laser/modulator power balance for the given link utilization,
+# ignored if optimize loss is set to false
+OptUtil = 0.5
+# Insertion loss and extinction ratio (in dB), ignored if optimize loss is set
+# to true
+InsertionLoss = 2.0
+ExtinctionRatio = 6.0
+
+# Technology-based parameters
+# 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
+LaserType = Standard
+# Ring tuning method. Current valid choices are:
+# (FullThermal, AthermalWithTrim, ThermalWithBitReshuffle, ElectricalAssistWithBitReshuffle)
+RingTuningMethod = ThermalWithBitReshuffle
+
+# Physical organization properties
+# Length of the link (in meters)
+Length = 10e-3
+
diff --git a/ext/dsent/configs/router.cfg b/ext/dsent/configs/router.cfg
new file mode 100644
index 000000000..2e68b7e2c
--- /dev/null
+++ b/ext/dsent/configs/router.cfg
@@ -0,0 +1,131 @@
+
+# Name of model to be built and evaluated
+ModelName = Router
+
+# Query string to choose what to evaluate (use '\' to enable multiline config)
+QueryString = \
+ Energy>>Router:WriteBuffer@0 \
+ Energy>>Router:ReadBuffer@0 \
+ Energy>>Router:TraverseCrossbar->Multicast1@0 \
+ Energy>>Router:ArbitrateSwitch->ArbitrateStage1@0 \
+ Energy>>Router:ArbitrateSwitch->ArbitrateStage2@0 \
+ Energy>>Router:DistributeClock@0 \
+ NddPower>>Router:Leakage@1 \
+ Area>>Router:Active@1 \
+
+
+# Injection rate (# flits per cycle per port), assuming that the router is not
+# saturated
+InjectionRate = 0.3
+# Evaluation string
+EvaluateString = \
+ ejection_rate = $(NumberInputPorts) * $(InjectionRate) / $(NumberOutputPorts); \
+ buf_rd_dynamic = $(Energy>>Router:ReadBuffer) * $(Frequency); \
+ buf_wr_dynamic = $(Energy>>Router:WriteBuffer) * $(Frequency); \
+ buf_static = $(NddPower>>Router->InputPort:Leakage) * $(NumberInputPorts) + ($(NddPower>>Router->PipelineReg0:Leakage) + $(NddPower>>Router->PipelineReg1:Leakage)) * $(NumberInputPorts) * $(NumberBitsPerFlit); \
+ xbar_o_dynamic = $(Energy>>Router:TraverseCrossbar->Multicast1) * $(Frequency); \
+ xbar_static = $(NddPower>>Router->Crossbar:Leakage) + $(NddPower>>Router->PipelineReg2_0:Leakage) * $(NumberOutputPorts) * $(NumberBitsPerFlit); \
+ sa_o_dynamic = ($(Energy>>Router:ArbitrateSwitch->ArbitrateStage1) + $(Energy>>Router:ArbitrateSwitch->ArbitrateStage2)) * $(Frequency); \
+ sa_static = $(NddPower>>Router->SwitchAllocator:Leakage); \
+ clock_o_dynamic = $(Energy>>Router:DistributeClock) * $(Frequency); \
+ clock_static = $(NddPower>>Router->ClockTree:Leakage); \
+ buffer_dynamic = buf_wr_dynamic * $(InjectionRate) * $(NumberInputPorts) + buf_rd_dynamic * ejection_rate * $(NumberOutputPorts); \
+ buffer_leakage = buf_static; \
+ xbar_dynamic = xbar_o_dynamic * ejection_rate * $(NumberOutputPorts); \
+ xbar_leakage = xbar_static; \
+ sa_dynamic = sa_o_dynamic * ejection_rate * $(NumberOutputPorts); \
+ sa_leakage = sa_static; \
+ clock_dynamic = clock_o_dynamic; \
+ clock_leakage = clock_static; \
+ total_dynamic = buffer_dynamic + xbar_dynamic + sa_dynamic + clock_dynamic; \
+ total_leakage = buffer_leakage + xbar_leakage + sa_leakage + clock_leakage; \
+ buf_area = ($(Area>>Router->InputPort:Active) + ($(Area>>Router->PipelineReg0:Active) + $(Area>>Router->PipelineReg1:Active)) * $(NumberBitsPerFlit)) * $(NumberInputPorts); \
+ xbar_area = $(Area>>Router->Crossbar:Active) + $(Area>>Router->Crossbar_Sel_DFF:Active) + $(Area>>Router->PipelineReg2_0:Active) * $(NumberBitsPerFlit) * $(NumberOutputPorts); \
+ sa_area = $(Area>>Router->SwitchAllocator:Active); \
+ other_area = $(Area>>Router->ClockTree:Active); \
+ print "Buffer:"; \
+ print " Dynamic power: " buffer_dynamic; \
+ print " Leakage power: " buffer_leakage; \
+ print "Crossbar:"; \
+ print " Dynamic power: " xbar_dynamic; \
+ print " Leakage power: " xbar_leakage; \
+ print "Switch allocator:"; \
+ print " Dynamic power: " sa_dynamic; \
+ print " Leakage power: " sa_leakage; \
+ print "Clock:"; \
+ print " Dynamic power: " clock_dynamic; \
+ print " Leakage power: " clock_leakage; \
+ print "Total:"; \
+ print " Dynamic power: " total_dynamic; \
+ print " Leakage power: " $(NddPower>>Router:Leakage); \
+ print "Area:"; \
+ print " Buffer: " buf_area; \
+ print " Crossbar: " xbar_area; \
+ print " Switch allocator: " sa_area; \
+ print " Other: " other_area; \
+
+# Technology file (see other models in tech/models)
+ElectricalTechModelFilename = tech/tech_models/Bulk45LVT.model
+
+###############################################################################
+# Timing optimization
+###############################################################################
+
+# True if want to perform timing optimization; otherwise, false.
+IsPerformTimingOptimization = true
+# Nets that the timing optimizer starts from
+TimingOptimization->StartNetNames = [*]
+# Operating frequency (Hz)
+Frequency = 1.0e9
+
+###############################################################################
+# Model specifications
+###############################################################################
+
+# Number of input ports
+NumberInputPorts = 5
+# Number of output ports
+NumberOutputPorts = 5
+# Flit width (bit)
+NumberBitsPerFlit = 64
+
+# In this example, we define 2 virtual networks (message classes), VN1 and VN2.
+# VN1 VN2
+# Number of VCs 2 3
+# Number of buffers / VC 4 5
+#
+# So in total, there are (2 * 4) + (3 * 5) = 23 flit buffers
+#
+# Number of virtual networks (number of message classes)
+NumberVirtualNetworks = 2
+# Number of virtual channels per virtual network
+NumberVirtualChannelsPerVirtualNetwork = [2, 3]
+# Number of buffers per virtual channel
+NumberBuffersPerVirtualChannel = [4, 5]
+
+# InputPort
+# ---------
+# buffer model
+InputPort->BufferModel = DFFRAM
+
+# Crossbar
+# --------
+# crossbar model
+CrossbarModel = MultiplexerCrossbar
+
+# Switch allocator
+# ----------------
+# arbiter model
+SwitchAllocator->ArbiterModel = MatrixArbiter
+
+# Clock tree
+# ----------
+# clock tree model
+ClockTreeModel = BroadcastHTree
+# number of levels
+ClockTree->NumberLevels = 5
+# wire layer
+ClockTree->WireLayer = Global
+# wire width multiplier
+ClockTree->WireWidthMultiplier = 1.0
+