spinnman.model package

Subpackages

Module contents

class spinnman.model.ADCInfo(adc_data: bytes, offset: int)

Bases: object

Container for the ADC data that’s been retrieved from an FPGA.

Parameters:

adc_data (bytes) – bytes from an SCP packet containing ADC information

Raises:

SpinnmanInvalidParameterException – If the message does not contain valid ADC information

property fan_0: float | None

Fan 0.

Return type:

float or None

property fan_1: float | None

Fan 1.

Return type:

float or None

property temp_btm: float

Temperature bottom.

Return type:

float

property temp_ext_0: float | None

Temperature external 0.

Return type:

float or None

property temp_ext_1: float | None

Temperature external 1.

Return type:

float or None

property temp_top: float

Temperature top.

Return type:

float

property voltage_1_2a: float

Actual voltage of the 1.2V a supply rail.

Return type:

float

property voltage_1_2b: float

Actual voltage of the 1.2V b supply rail.

Return type:

float

property voltage_1_2c: float

Actual voltage of the 1.2V c supply rail.

Return type:

float

property voltage_1_8: float

Actual voltage of the 1.8V supply rail.

Return type:

float

property voltage_3_3: float

Actual voltage of the 3.3V supply rail.

Return type:

float

property voltage_supply: float

Actual voltage of the main power supply (nominally 12V).

Return type:

float

class spinnman.model.BMPConnectionData(ip_address: str, boards: Sequence[int], port_num: int | None)

Bases: object

Contains the details of a BMP connection.

property boards: Sequence[int]

The boards to be addressed.

Return type:

iterable(int)

property ip_address: str

The IP address of the BMP.

Return type:

str

property port_num: int | None

The port number associated with this BMP connection.

Returns:

The port number

class spinnman.model.CPUInfo(x: int, y: int, p: int, cpu_data: Tuple[bytes, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, bytes, int, int, int, int, int, int])

Bases: object

Represents information about the state of a CPU.

This is the content of the vcpu_t for the processor, maintained by SARK.

Parameters:
  • x (int) – The x-coordinate of a chip

  • y (int) – The y-coordinate of a chip

  • p (int) – The ID of a core on the chip

  • cpu_data (tuple) – A byte-string received from SDRAM on the board

property application_id: int

The ID of the application running on the core.

Returns:

The ID of the application

Return type:

int

property application_mailbox_command: MailboxCommand

The command currently in the mailbox being sent from the monitor processor to the application.

Returns:

The command

Return type:

MailboxCommand

property application_mailbox_data_address: int

The address of the data in SDRAM for the application mailbox.

Returns:

The address of the data

Return type:

int

property application_name: str

The name of the application running on the core.

Returns:

The name of the application

Return type:

str

get_status_string() str[source]

Get a string indicating the status of the given core.

Return type:

str

property iobuf_address: int

The address of the IOBUF buffer in SDRAM.

Returns:

The address

Return type:

int

The current link register value.

Returns:

The link register value

Return type:

int

static mock_info(x: int, y: int, p: int, physical_cpu_id: int, state: CPUState)[source]

Makes a CPU_info object for Testing purposes

Parameters:
property monitor_mailbox_command: MailboxCommand

The command currently in the mailbox being sent from the application to the monitor processor.

Returns:

The command

Return type:

MailboxCommand

property monitor_mailbox_data_address: int

The address of the data in SDRAM of the monitor mailbox.

Returns:

The address of the data

Return type:

int

property p: int

The ID of the core on the chip.

Returns:

The ID of the core

Return type:

int

property physical_cpu_id: int

The physical ID of this processor.

Returns:

The physical ID of the processor

Return type:

int

property processor_state_register: int

The value in the processor state register.

Returns:

The processor state register value

Return type:

int

property registers: Sequence[int]

The current register values (r0 - r7).

Returns:

An array of 8 values, one for each register

Return type:

list(int)

property run_time_error: RunTimeError

The reason for a run time error.

Returns:

The run time error

Return type:

RunTimeError

property software_error_count: int

The number of software errors counted. Saturating.

Returns:

The number of software errors

Return type:

int

property software_source_filename_address: int

The address of the filename of the software source.

Returns:

The filename address

Return type:

int

property software_source_line_number: int

The line number of the software source.

Returns:

The line number

Return type:

int

property software_version: int

The software version.

Returns:

The software version

Return type:

int

property stack_pointer: int

The current stack pointer value.

Returns:

The stack pointer value

Return type:

int

property state: CPUState

The current state of the core.

Returns:

The state of the core

Return type:

CPUState

property time: int

The time at which the application started.

Returns:

The time in seconds since 00:00:00 on the 1st January 1970

Return type:

int

property user: Sequence[int]

The current user values (user0 - user3).

Returns:

An array of 4 values, one for each user value

Return type:

list(int)

property x: int

The X-coordinate of the chip containing the core.

Returns:

The x-coordinate of the chip

Return type:

int

property y: int

The y-coordinate of the chip containing the core.

Returns:

The y-coordinate of the chip

Return type:

int

class spinnman.model.CPUInfos

Bases: object

A set of CPU information objects.

add_info(cpu_info: CPUInfo)[source]

Add a info on using its core coordinates.

Parameters:

cpu_info (CPUInfo)

add_infos(other, states: Iterable[CPUState])[source]

Adds all the infos in the other CPUInfos if the have one of the required states

mainly a support method for Transceiver.add_cpu_information_from_core

Parameters:
  • other (CPUInfos) – Another Infos object to merge in

  • states (list(CPUState)) – Only add if the Info has this state

get_cpu_info(x: int, y: int, p: int) CPUInfo[source]

Get the information for the given core on the given core

Return type:

CpuInfo

get_status_string() str[source]

Get a string indicating the status of the given cores.

Return type:

str

infos_for_state(state: CPUState) CPUInfos[source]

Creates a new CpuInfos object with Just the Infos that match the state.

Parameters:

state (CPUState)

Returns:

New Infos object with the filtered infos if any

Return type:

CPUInfos

infos_not_in_states(states: Iterable[CPUState]) CPUInfos[source]

Creates a new CpuInfos object with Just the Infos that match the state.

Parameters:

states (iterable(CPUState))

Returns:

New Infos object with the filtered infos if any

Return type:

CPUInfos

is_core(x: int, y: int, p: int) bool[source]

Determine if there is a CPU Info for x, y, p.

class spinnman.model.ChipInfo(system_data: bytes, offset: int)

Bases: object

Represents the system variables for a chip, received from the chip SDRAM.

Parameters:
  • system_data (bytes) – A byte-string retrieved from SDRAM on the board

  • offset (int) – The offset into the byte-string where the actual data starts

Raises:

SpinnmanInvalidParameterException – If the data doesn’t contain valid system data information

property cpu_clock_mhz: int

The speed of the CPU clock in MHz.

Return type:

int

property cpu_information_base_address: int

The base address of the CPU information structure.

Return type:

int

property first_free_router_entry: int

The ID of the first free routing entry on the chip.

Return type:

int

property iobuf_size: int

The size of the IOBUF buffers in bytes.

Return type:

int

property ip_address: str | None

The IP address of the chip, or None if no Ethernet.

Return type:

str

property is_ethernet_available: bool

Whether the Ethernet is running on this chip.

Return type:

bool

The links that are available on the chip.

Return type:

iterable(int)

property nearest_ethernet_x: int

The X-coordinate of the nearest chip with Ethernet.

Return type:

int

property nearest_ethernet_y: int

The Y-coordinate of the nearest chip with Ethernet.

Return type:

int

property physical_to_virtual_core_map: bytes

The physical core ID to virtual core ID map; entries with a value of 0xFF are non-operational cores.

Return type:

bytearray

router_table_copy_address() int[source]

The address of the copy of the router table.

Return type:

int

property sdram_base_address: int

The base address of the user region of SDRAM on the chip.

Return type:

int

property sdram_heap_address: int

The address of the base of the heap in SDRAM.

Return type:

int

property system_ram_heap_address: int

The address of the base of the heap in system RAM.

Return type:

int

property system_sdram_base_address: int

The base address of the System SDRAM region on the chip.

Return type:

int

property virtual_core_ids: Iterable[int]

A list of available cores by virtual core ID (including the monitor).

Return type:

iterable(int)

property virtual_to_physical_core_map: bytes

The virtual core ID to physical core ID map; entries with a value of 0xFF are non-operational cores.

Return type:

bytearray

property x: int

The X-coordinate of the chip.

Return type:

int

property x_size: int

The number of chips in the X-dimension.

Return type:

int

property y: int

The Y-coordinate of the chip.

Return type:

int

property y_size: int

The number of chips in the Y-dimension.

Return type:

int

class spinnman.model.ChipSummaryInfo(chip_summary_data: bytes, offset: int, x: int, y: int)

Bases: object

Represents the chip summary information read via an SCP command.

Parameters:
  • chip_summary_data (bytes) – The data from the SCP response

  • offset (int) – The offset into the data where the data starts

  • x (int) – The x-coordinate of the chip that this data is from

  • y (int) – The y-coordinate of the chip that this data is from

clear_ethernet_ip_address() None[source]

Forces the Ethernet IP address to None, in case of an errant chip.

property core_states: List[CPUState]

The state of the cores on the chip (list of one per core).

Return type:

list(CPUState)

property ethernet_ip_address: str | None

The IP address of the Ethernet if up, or None if not.

Return type:

str

property is_ethernet_available: bool

Whether the Ethernet connection is available on this chip.

Return type:

bool

property largest_free_sdram_block: int

The size of the largest block of free SDRAM in bytes.

Return type:

int

property largest_free_sram_block: int

The size of the largest block of free SRAM in bytes.

Return type:

int

property n_cores: int

The number of cores working on the chip (including monitors).

Return type:

int

property n_free_multicast_routing_entries: int

The number of multicast routing entries free on this chip.

Return type:

int

property nearest_ethernet_x: int

The X-coordinate of the nearest Ethernet chip.

Return type:

int

property nearest_ethernet_y: int

The Y-coordinate of the nearest Ethernet chip.

Return type:

int

The link to the parent of the chip in the tree of chips from root.

Return type:

int

The IDs of the working links outgoing from this chip.

Return type:

list(int)

property x: int

The X-coordinate of the chip that this data is from.

Return type:

int

property y: int

The Y-coordinate of the chip that this data is from.

Return type:

int

class spinnman.model.DiagnosticFilter(enable_interrupt_on_counter_event: bool, match_emergency_routing_status_to_incoming_packet: bool, destinations: List[DiagnosticFilterDestination], sources: List[DiagnosticFilterSource], payload_statuses: List[DiagnosticFilterPayloadStatus], default_routing_statuses: List[DiagnosticFilterDefaultRoutingStatus], emergency_routing_statuses: List[DiagnosticFilterEmergencyRoutingStatus], packet_types: List[DiagnosticFilterPacketType])

Bases: object

A router diagnostic counter filter, which counts packets passing through the router with certain properties. The counter will be incremented so long as the packet matches one of the values in each field i.e. one of each of the destinations, sources, payload_statuses, default_routing_statuses, emergency_routing_statuses and packet_types.

Parameters:
  • enable_interrupt_on_counter_event (bool) – Indicates whether an interrupt should be raised when this rule matches

  • match_emergency_routing_status_to_incoming_packet (bool) – Indicates whether the emergency routing statuses should be matched against packets arriving at this router (if True), or if they should be matched against packets leaving this router (if False)

  • destinations (list(DiagnosticFilterDestination)) – Increment the counter if one or more of the given destinations match

  • sources (list(DiagnosticFilterSource)) – Increment the counter if one or more of the given sources match (or None or empty list to match all)

  • payload_statuses (list(DiagnosticFilterPayloadStatus)) – Increment the counter if one or more of the given payload statuses match (or None or empty list to match all)

  • default_routing_statuses (list(DiagnosticFilterDefaultRoutingStatus)) – Increment the counter if one or more of the given default routing statuses match (or None or empty list to match all)

  • emergency_routing_statuses (list(DiagnosticFilterEmergencyRoutingStatus)) – Increment the counter if one or more of the given emergency routing statuses match (or None or empty list to match all)

  • packet_types (list(DiagnosticFilterPacketType)) – Increment the counter if one or more of the given packet types match (or None or empty list to match all)

property default_routing_statuses: List[DiagnosticFilterDefaultRoutingStatus]

Returns the default routing statuses passed into the init unchanged

Currently unused

property destinations: List[DiagnosticFilterDestination]

Returns the destinations passed into the init unchanged

Currently unused

property emergency_routing_statuses: List[DiagnosticFilterEmergencyRoutingStatus]

Returns the emergency routing statuses passed into the init unchanged

Currently unused

property enable_interrupt_on_counter_event: bool

Returns the enable interrupt on counter event passed into the init unchanged

Currently unused

property filter_word: int

A word of data that can be written to the router to set up the filter.

property match_emergency_routing_status_to_incoming_packet: bool

Returns the match emergency routing status to incoming packet passed into the init unchanged

Currently unused

property packet_types: List[DiagnosticFilterPacketType]

Returns the packet types passed into the init unchanged

Currently unused

property payload_statuses: List[DiagnosticFilterPayloadStatus]

Returns the payload statuses passed into the init unchanged

Currently unused

static read_from_int(int_value: int) DiagnosticFilter[source]

Claims to returns a filter that reads an int

Currently only called by unused Transceiver methods

Parameters:

int_value (int)

Return type:

DiagnosticFilter

property sources: List[DiagnosticFilterSource]

Returns the sources passed into the init unchanged

Currently unused

class spinnman.model.ExecutableTargets

Bases: object

Encapsulate the binaries and cores on which to execute them.

add_processor(binary: str, chip_x: int, chip_y: int, chip_p: int, executable_type: ExecutableType | None = None)[source]

Add a processor to the executable targets

Parameters:
  • binary (str) – the binary path for executable

  • chip_x (int) – the coordinate on the machine in terms of x for the chip

  • chip_y (int) – the coordinate on the machine in terms of y for the chip

  • chip_p (int) – the processor ID to place this executable on

  • executable_type (ExecutableType) – the executable type for locating n cores of

add_subsets(binary: str, subsets: CoreSubsets, executable_type: ExecutableType | None = None)[source]

Add core subsets to a binary.

Parameters:
  • binary (str) – the path to the binary needed to be executed

  • subsets (CoreSubsets) – the subset of cores that the binary needs to be loaded on

  • executable_type (ExecutableType) – The type of this executable. None means don’t record it.

property all_core_subsets: CoreSubsets

All the core subsets for all the binaries.

Return type:

CoreSubsets

property binaries: Collection[str]

The binaries of the executables.

Return type:

iterable(str)

executable_types_in_binary_set() Iterable[ExecutableType][source]

Get the executable types in the set of binaries.

Returns:

iterable of the executable types in this binary set.

Return type:

iterable(ExecutableType)

get_binaries_of_executable_type(executable_type: ExecutableType) Iterable[str][source]

Get the binaries of a given a executable type.

Parameters:

executable_type (ExecutableType) – the executable type enum value

Returns:

iterable of binaries with that executable type

Return type:

iterable(str)

get_cores_for_binary(binary: str) CoreSubsets[source]

Get the cores that a binary is to run on.

Parameters:

binary (str) – The binary to find the cores for

Return type:

CoreSubsets

get_n_cores_for_executable_type(executable_type: ExecutableType) int[source]

Get the number of cores that the executable type is using.

Parameters:

executable_type (ExecutableType)

Returns:

the number of cores using this executable type

Return type:

int

known(binary, chip_x, chip_y, chip_p) bool[source]
Parameters:
Return type:

bool

property total_processors: int

The total number of cores to be loaded.

Return type:

int

class spinnman.model.HeapElement(block_address: int, next_address: int, free: int)

Bases: object

An element of one of the heaps on SpiNNaker.

Parameters:
  • block_address (int) – The address of this element on the heap

  • next_address (int) – The address of the next element on the heap

  • free (int) – The “free” element of the block as read from the heap

property app_id: int | None

The application ID of the block if allocated, or None if not.

Return type:

int or None

property block_address: int

The address of the block.

Return type:

int

property is_free: bool

Whether this block is a free block.

Return type:

bool

property next_address: int

The address of the next block, or 0 if none.

Return type:

int

property size: int

The usable size of this block (not including the header).

Return type:

int

property tag: int | None

The tag of the block if allocated, or None if not.

Return type:

int or None

class spinnman.model.IOBuffer(x: int, y: int, p: int, iobuf: str)

Bases: object

The contents of IOBUF for a core.

Parameters:
  • x (int) – The x-coordinate of a chip

  • y (int) – The y-coordinate of a chip

  • p (int) – The p-coordinate of a chip

  • iobuf (str) – The contents of the buffer for the chip

property iobuf: str

The contents of the buffer.

Return type:

str

property p: int

The ID of the core on the chip.

Return type:

int

property x: int

The X-coordinate of the chip containing the core.

Return type:

int

property y: int

The Y-coordinate of the chip containing the core.

Return type:

int

class spinnman.model.MachineDimensions(width: int, height: int)

Bases: object

Represents the size of a machine in chips.

Parameters:
  • width (int) – The width of the machine in chips

  • height (int) – The height of the machine in chips

property height: int

The height of the machine in chips.

Return type:

int

property width: int

The width of the machine in chips.

Return type:

int

class spinnman.model.P2PTable(width: int, height: int, column_data: List[Tuple[bytes, int]])

Bases: object

Represents a P2P routing table read from the machine.

Parameters:
static get_column_offset(column: int) int[source]

Get the offset of the next column in the table from the P2P base address.

Parameters:

column (int) – The column to be read

static get_n_column_bytes(height: int) int[source]

Get the number of bytes to be read for each column of the table.

Parameters:

height (int) – The height of the machine

get_route(x: int, y: int) P2PTableRoute[source]

Get the route to follow from this chip to the given chip.

Parameters:
  • x (int) – The x-coordinate of the chip to find the route to

  • y (int) – The y-coordinate of the chip to find the route to

Return type:

P2PTableRoute

property height: int

The height of the machine that this table represents.

Return type:

int

is_route(x, y)[source]

Determines if there is a route in the P2P table to the given chip.

Parameters:
  • x (int) – The x-coordinate of the chip to look up

  • y (int) – The y-coordinate of the chip to look up

Return type:

bool

iterchips()[source]

Get an iterator of tuples of (x, y) coordinates in the table.

Return type:

iterable(tuple(int,int))

property n_routes

The number of routes in the table

Return type:

int

property width: int

The width of the machine that this table represents.

Return type:

int

class spinnman.model.RouterDiagnostics(control_register: int, error_status: int, register_values: Sequence[int])

Bases: object

Represents a set of diagnostic information available from a chip router.

Parameters:
  • control_register (int) – The value of the control register

  • error_status (int) – The value of the error_status

  • register_values (list(int)) – The values of the 16 router registers

Raises:

SpinnmanInvalidParameterException – If the number of register values is not 16

property error_count: int

The count of errors.

Return type:

int

property error_status: int

The error status.

Return type:

int

property errors_set: Sequence[RouterError]

A list of errors that have been detected.

Return type:

list(RouterError)

property mon: int

The “mon” part of the control register.

Return type:

int

property n_dropped_fixed_route_packets: int

The number of fixed-route packets received that were dropped.

Return type:

int

property n_dropped_multicast_packets: int

The number of multicast packets received that were dropped.

Return type:

int

property n_dropped_nearest_neighbour_packets: int

The number of nearest-neighbour packets received that were dropped.

Return type:

int

property n_dropped_peer_to_peer_packets: int

The number of peer-to-peer packets received that were dropped.

Return type:

int

property n_external_fixed_route_packets: int

The number of fixed-route packets received from external links.

Return type:

int

property n_external_multicast_packets: int

The number of multicast packets received from external links.

Return type:

int

property n_external_nearest_neighbour_packets: int

The number of nearest-neighbour packets received from external links.

Return type:

int

property n_external_peer_to_peer_packets: int

The number of peer-to-peer packets received from external links.

Return type:

int

property n_local_fixed_route_packets: int

The number of fixed-route packets received from local cores.

Return type:

int

property n_local_multicast_packets: int

The number of multicast packets received from local cores.

Return type:

int

property n_local_nearest_neighbour_packets: int

The number of nearest-neighbour packets received from local cores.

Return type:

int

property n_local_peer_to_peer_packets: int

The number of peer-to-peer packets received from local cores.

Return type:

int

property registers: Sequence[int]

The values in all of the registers. Can be used to directly access the registers if they have been programmed to give different values.

Returns:

An array of 16 values

Return type:

array(int)

property user_0: int

The number of packets counted by the user 0 router diagnostic filter.

Return type:

int

property user_1: int

The number of packets counted by the user 1 router diagnostic filter.

Return type:

int

property user_2: int

The number of packets counted by the user 2 router diagnostic filter.

Return type:

int

property user_3: int

The number of packets counted by the user 3 router diagnostic filter.

Return type:

int

property user_registers: Sequence[int]

The values in the user control registers.

Returns:

An array of 4 values

Return type:

list(int)

property wait_1: int

The “wait_1” part of the control register.

Return type:

int

property wait_2: int

The “wait_2” part of the control register.

Return type:

int

class spinnman.model.VersionInfo(version_data: bytes, offset: int = 0)

Bases: object

Decodes SC&MP/SARK version information as returned by the SVER command.

Parameters:
  • version_data (bytes) – bytes from an SCP packet containing version information

  • offset (int) – the offset in the bytes from an SCP packet containing version information

Raises:

SpinnmanInvalidParameterException – If the message does not contain valid version information

property build_date: int

The build date of the software, in seconds since 1st January 1970.

Return type:

int

property hardware: str

The hardware being run on.

Return type:

str

property name: str

The name of the software.

Return type:

str

property p: int

The processor ID of the processor where the information was obtained.

Return type:

int

property version_number: Tuple[int, int, int]

The version number of the software.

Return type:

tuple(int, int, int)

property version_string: str

The version information as text.

Return type:

str

property x: int

The X-coordinate of the chip where the information was obtained.

Return type:

int

property y: int

The Y-coordinate of the chip where the information was obtained.

Return type:

int