[][src]Module caminos_lib::policies

Structs

EnforceFlowControl
Hops

Select virtual channel=packet.hops.

LabelSaturate

New label = min{old_label,value} or max{old_label,value} (value,bottom)

LabelTransform

New label = old_label*multplier+summand. (multiplier,summand,saturate_bottom,saturate_top,minimum,maximum)

LowestLabel

Select the egresses with lowest label.

LowestSinghWeight

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.

NegateLabel

New label = -old_label Just until I fix the grammar to accept preceding minuses.

OccupancyFunction

Transform (l,q) into new label al+bq+clq+d where l is the label and q is the occupancy.

Random

Request a port+virtual channel at random from all available.

RequestInfo

Extra information to be used by the policies of virtual channels.

Shortest

Request the port+virtual channel with more credits. Does not solve ties, so it needs to be followed by Random or something.

VCPolicyBuilderArgument
VecLabel

Vector of labels new_label = vector[old_label]

WideHops

Select virtual channel in (widthpacket.hops..width(packet.hops+1)).

Traits

VirtualChannelPolicy

How virtual channels are selected for a packet They provide the function filter(Vec) -> Vec It needs: rng, self.virtual_ports(credits and length), phit.packet.routing_info.borrow().hops, server_ports, topology.{distance,neighbour}, port_average_neighbour_queue_length, port_last_transmission We could also provide functions to declare which aspects must be computed. Thus allowing to both share when necessary and to not computing ti when unnecessary.

Functions

new_virtual_channel_policy