spinn_front_end_common.utilities package


spinn_front_end_common.utilities.constants module

spinn_front_end_common.utilities.constants.BIT_FIELD_COMMS_SDRAM_TAG = 2

SDRAM Tags used for bitfield compressor

class spinn_front_end_common.utilities.constants.BUFFERING_OPERATIONS[source]

Bases: enum.Enum

A listing of what SpiNNaker specific EIEIO commands there are.


Database handshake with external program


Host confirming data being read form SpiNNaker memory

spinn_front_end_common.utilities.constants.CLOCKS_PER_US = 200

The number of clock cycles per micro-second (at 200Mhz)

spinn_front_end_common.utilities.constants.COMPRESSOR_SDRAM_TAG = 1

SDRAM Tag used by the compressor to find the routing tables

spinn_front_end_common.utilities.constants.CORE_DATA_SDRAM_BASE_TAG = 200

Base SDRAM tag used by cores when loading data (tags 201-217 will be used by cores 1-17)

spinn_front_end_common.utilities.constants.DATA_SPECABLE_BASIC_SETUP_INFO_N_BYTES = 400

The number of words in the AbstractDataSpecable basic setup information. This is the amount required by the pointer table plus a SARK allocation.

spinn_front_end_common.utilities.constants.DEFAULT_BUFFER_SIZE_BEFORE_RECEIVE = 16384

The default size of a recording buffer before receive request is sent

spinn_front_end_common.utilities.constants.DSE_DATA_STRUCT_SIZE = 16

size of the on-chip DSE data structure required, in bytes

spinn_front_end_common.utilities.constants.MAX_DATABASE_PATH_LENGTH = 50000

Database file path maximum length for database notification messages. Note that this is not sent to SpiNNaker and so is not subject to the usual SDP limit.

spinn_front_end_common.utilities.constants.MAX_POSSIBLE_BINARY_SIZE = 33792

the ITCM max limit for a binary

spinn_front_end_common.utilities.constants.MAX_SAFE_BINARY_SIZE = 32768

the ITCM max safe limit for a binary

spinn_front_end_common.utilities.constants.MAX_SIZE_OF_BUFFERED_REGION_ON_CHIP = 1048576

max size expected to be used by the reverse ip_tag multicast source during buffered operations.

spinn_front_end_common.utilities.constants.NOTIFY_PORT = 19999

The default local port that the toolchain listens on for the notification protocol.

spinn_front_end_common.utilities.constants.PARTITION_ID_FOR_MULTICAST_DATA_SPEED_UP = 'DATA_SPEED_UP_ROAD'

partition IDs preallocated to functionality

spinn_front_end_common.utilities.constants.SARK_PER_MALLOC_SDRAM_USAGE = 8

The number of bytes used by SARK per memory allocation

class spinn_front_end_common.utilities.constants.SDP_PORTS[source]

Bases: enum.Enum

SDP port handling output buffering data streaming.


Extra monitor core inbound data transfer protocol See SpeedupInSCPCommands


Extra monitor core outbound data transfer protocol


Extra monitor core reinjection control protocol. See ReinjectorSCPCommands


Command port for the buffered in functionality.


Command port for the buffered out functionality.


Command port for resetting runtime, etc. See SDP_RUNNING_MESSAGE_CODES

class spinn_front_end_common.utilities.constants.SDP_RUNNING_MESSAGE_CODES[source]

Bases: enum.Enum

Codes for sending control messages to spin1_api.

spinn_front_end_common.utilities.constants.SDRAM_BASE_ADDR = 1879048192

start of where SDRAM starts (either unbuffered or buffered)

spinn_front_end_common.utilities.constants.SDRAM_EDGE_BASE_TAG = 100

Base SDRAM tag used by SDRAM edges when allocating (allows up to 100 edges per chip)

spinn_front_end_common.utilities.constants.SIMULATION_N_BYTES = 12

The number of bytes used by the simulation interface. This is one word for the machine_time_step, one for the SDP port, and one for the application hash.

spinn_front_end_common.utilities.constants.SYSTEM_BYTES_REQUIREMENT = 412

The number of bytes used by the DSG and simulation interfaces

spinn_front_end_common.utilities.exceptions module

exception spinn_front_end_common.utilities.exceptions.BufferableRegionTooSmall[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when the SDRAM space of the region for buffered packets is too small to contain any packet at all.

exception spinn_front_end_common.utilities.exceptions.BufferedRegionNotPresent[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when trying to issue buffered packets for a region not managed.

exception spinn_front_end_common.utilities.exceptions.CantFindSDRAMToUseException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when malloc and sdram stealing cannot occur.

exception spinn_front_end_common.utilities.exceptions.ConfigurationException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when the front end determines a input parameter is invalid.

exception spinn_front_end_common.utilities.exceptions.DsDatabaseException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raise when a query in the DataSpec database failed.

exception spinn_front_end_common.utilities.exceptions.ExecutableFailedToStartException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when an executable has not entered the expected state during start up.

exception spinn_front_end_common.utilities.exceptions.ExecutableFailedToStopException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when an executable has not entered the expected state during execution.

exception spinn_front_end_common.utilities.exceptions.ExecutableNotFoundException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when a specified executable could not be found.

exception spinn_front_end_common.utilities.exceptions.RallocException[source]

Bases: spinn_front_end_common.utilities.exceptions.SpinnFrontEndException

Raised when there are not enough routing table entries.

exception spinn_front_end_common.utilities.exceptions.SpinnFrontEndException[source]

Bases: Exception

Raised when the front end detects an error.

spinn_front_end_common.utilities.helpful_functions module


Translate a string list of cores into a core subset.

Parameters:cores (str or None) – string representing down cores formatted as x,y,p[:x,y,p]*
Return type:CoreSubsets

Converts vertices into core subsets.

Parameters:vertices (iterable(MachineVertex)) – the vertices to convert to core subsets
Returns:the CoreSubSets of the vertices
Return type:CoreSubsets
spinn_front_end_common.utilities.helpful_functions.determine_flow_states(executable_types, no_sync_changes)[source]

Get the start and end states for these executable types.

  • executable_types (dict(ExecutableType,any)) – the execute types to locate start and end states from
  • no_sync_changes (int) – the number of times sync signals been sent

dict of executable type to states.

Return type:

tuple(dict(ExecutableType,CPUState), dict(ExecutableType,CPUState))


Flood fills a binary to SpiNNaker.

Parameters:binary (str) – The name of the file containing the APLX binary to load
Returns:the number of cores it was loaded onto
Return type:int
spinn_front_end_common.utilities.helpful_functions.generate_unique_folder_name(folder, filename, extension)[source]

Generate a unique file name with a given extension in a given folder.

  • folder (str) – where to put this unique file
  • filename (str) – the name of the first part of the file without extension
  • extension (str) – extension of the file

file path with a unique addition

Return type:



Hack to support the source requirement for the router compressor on chip.

Parameters:entry (MulticastRoutingEntry) – the multicast router table entry.
Returns:return the source value
Return type:int
spinn_front_end_common.utilities.helpful_functions.get_ethernet_chip(machine, board_address)[source]

Locate the chip with the given board IP address.

  • machine (Machine) – the SpiNNaker machine
  • board_address (str) – the board address to locate the chip of.

The chip that supports that board address

Return type:



ConfigurationException – when that board address has no chip associated with it

spinn_front_end_common.utilities.helpful_functions.get_region_base_address_offset(app_data_base_address, region)[source]

Find the address of the of a given region for the DSG.

  • app_data_base_address (int) – base address for the core
  • region (int) – the region ID we’re looking for
spinn_front_end_common.utilities.helpful_functions.locate_extra_monitor_mc_receiver(placement_x, placement_y)[source]

Get the data speed up gatherer that can be used to talk to a particular chip. This will be on the same board.

  • placement_x (int) – The X coordinate of the reference chip
  • placement_y (int) – The Y coordinate of the reference chip
Return type:


spinn_front_end_common.utilities.helpful_functions.locate_memory_region_for_placement(placement, region)[source]

Get the address of a region for a placement.

  • region (int) – the region to locate the base address of
  • placement (Placement) – the placement object to get the region address of
  • transceiver (Transceiver) – the python interface to the SpiNNaker machine

the address

Return type:



Manages a precompiled cache of structs for parsing blocks of words. Thus, this:

data = n_word_struct(n_words).unpack(data_blob)

Is much like doing this:

data = struct.unpack(f"<{n_words}I", data_blob)

except quite a bit more efficient because things are shared including the cost of parsing the format.

Parameters:n_words (int) – The number of SpiNNaker words to be handled.
Returns:A struct for working with that many words.
Return type:Struct
spinn_front_end_common.utilities.helpful_functions.read_data(x, y, address, length, data_format)[source]

Reads and converts a single data item from memory.

  • x (int) – chip x
  • y (int) – chip y
  • address (int) – base address of the SDRAM chip to read
  • length (int) – length to read
  • data_format (str) – the format to read memory (see struct.pack())

whatever is produced by unpacking the data

Return type:


spinn_front_end_common.utilities.helpful_functions.write_address_to_user0(x, y, p, address)[source]

Writes the given address into the user_0 register of the given core.

  • x (int) – Chip coordinate.
  • y (int) – Chip coordinate.
  • p (int) – Core ID on chip.
  • address (int) – Value to write (32-bit integer)
spinn_front_end_common.utilities.helpful_functions.write_address_to_user1(x, y, p, address)[source]

Writes the given address into the user_1 register of the given core.

  • x (int) – Chip coordinate.
  • y (int) – Chip coordinate.
  • p (int) – Core ID on chip.
  • address (int) – Value to write (32-bit integer)

spinn_front_end_common.utilities.system_control_logic module

spinn_front_end_common.utilities.system_control_logic.run_system_application(executable_cores, app_id, read_algorithm_iobuf, check_for_success_function, cpu_end_states, needs_sync_barrier, filename_template, binaries_to_track=None, progress_bar=None, logger=None, timeout=None)[source]

Executes the given _system_ application. Used for on-chip expanders, compressors, etc.

  • executable_cores (ExecutableTargets) – the cores to run the executable on.
  • app_id (int) – the app-id for the executable
  • read_algorithm_iobuf (bool) – whether to report IOBUFs
  • check_for_success_function (callable) – function used to check success; expects executable_cores, transceiver as inputs
  • cpu_end_states (set(CPUState)) – the states that a successful run is expected to terminate in
  • needs_sync_barrier (bool) – whether a sync barrier is needed
  • filename_template (str) – the IOBUF filename template.
  • binaries_to_track (list(str)) – A list of binary names to check for exit state. Or None for all binaries
  • progress_bar (ProgressBar or None) – Possible progress bar to update. end() will be called after state checked
  • logger (Logger) – If provided and IOBUF is extracted, will be used to log errors and warnings
  • timeout (float or None) – Number of seconds to wait before force stopping, or None to wait forever

SpinnmanException – If one should arise from the underlying SpiNNMan calls

Module contents