Module caminos_lib::policies
source · [−]Expand description
A policy defined to what output queue/port to request among the ones returned as possible by the routing function. Policies are designed to be applied in sequence so that there remains at most a single candidate.
One should include always the policy EnforceFlowControl
or equivalent at some point. To ensure at most one candidate you may use the Random
policy.
see new_virtual_channel_policy
for documentation on the configuration syntax of predefined policies.
Structs
Only allows those candidates whose vc is in the allowed list.
Apply a different policy to each hop.
Select virtual channel=packet.hops.
Does not do anything. Just a placeholder for some operations.
New label = min{old_label,value} or max{old_label,value} (value,bottom)
New label = old_label*multplier+summand. (multiplier,summand,saturate_bottom,saturate_top,minimum,maximum)
Select the egresses with lowest label.
Select the lowest value of the product of the queue length (that is, consumed credits) times the estimated hop count (usually 1 plus the distance from next router to target router) This was initially proposed for the UGAL routing. parameters=(extra_congestion,extra_distance,aggregate_buffers), which are added in the formula to allow tuning. Firth two default to 0. aggregate_buffers indicates to use all buffers instead of just the selected one.
Apply a different policy to candidates from each entry virtual channel.
Apply a different policy to each hop.
Apply a different policy to candidates with each label.
New label = -old_label Just until I fix the grammar to accept preceding minuses.
Transform (l,q) into new label al+bq+clq+d where l is the label and q is the occupancy.
Request a port+virtual channel at random from all available.
Extra information to be used by the policies of virtual channels.
Only allows those candidates whose vc equals their entry vc plus some s
in shifts
.
Request the port+virtual channel with more credits. Does not solve ties, so it needs to be followed by Random or something.
Vector of labels
new_label = vector[old_label]
Select virtual channel in (widthpacket.hops..width(packet.hops+1)).
Traits
How virtual channels are selected for a packet
They provide the function filter(Vec
Functions
Build a new virtual channel policy. These policies are successive refinements over the available ones as returned by the routing function, to determine to which exit a request is done.