spinnman.model package

Module contents

class spinnman.model.ADCInfo(adc_data, offset)[source]

Bases: object

Container for the ADC data thats 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
fan_0

Fan 0.

Return type:float or None
fan_1

Fan 1.

Return type:float or None
temp_btm

Temperature bottom.

Return type:float
temp_ext_0

Temperature external 0.

Return type:float or None
temp_ext_1

Temperature external 1.

Return type:float or None
temp_top

Temperature top.

Return type:float
voltage_1_2a

Actual voltage of the 1.2V a supply rail.

Return type:float
voltage_1_2b

Actual voltage of the 1.2V b supply rail.

Return type:float
voltage_1_2c

Actual voltage of the 1.2V c supply rail.

Return type:float
voltage_1_8

Actual voltage of the 1.8V supply rail.

Return type:float
voltage_3_3

Actual voltage of the 3.3V supply rail.

Return type:float
voltage_supply

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

Return type:float
class spinnman.model.BMPConnectionData(cabinet, frame, ip_address, boards, port_num)[source]

Bases: object

Contains the details of a BMP connection.

boards

The boards to be addressed.

Return type:iterable(int)
cabinet

The cabinet number.

Return type:int
frame

The frame number.

Return type:int
ip_address

The IP address of the BMP.

Return type:str
port_num

The port number associated with this BMP connection.

Returns:The port number
class spinnman.model.ChipInfo(system_data, offset)[source]

Bases: object

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

Parameters:
  • system_data (bytes) – An bytestring retrieved from SDRAM on the board
  • offset (int) – The offset into the bytestring where the actual data starts
Raises:

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

cpu_clock_mhz

The speed of the CPU clock in MHz.

Return type:int
cpu_information_base_address

The base address of the CPU information structure.

Return type:int
first_free_router_entry

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

Return type:int
iobuf_size

The size of the IOBUF buffers in bytes.

Return type:int
ip_address

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

Return type:str
is_ethernet_available

Whether the Ethernet is running on this chip.

Return type:bool

The links that are available on the chip.

Return type:iterable(int)
nearest_ethernet_x

The X-coordinate of the nearest chip with Ethernet.

Return type:int
nearest_ethernet_y

The Y-coordinate of the nearest chip with Ethernet.

Return type:int
physical_to_virtual_core_map

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()[source]

The address of the copy of the router table.

Return type:int
sdram_base_address

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

Return type:int
sdram_heap_address

The address of the base of the heap in SDRAM.

Return type:int
system_ram_heap_address

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

Return type:int
system_sdram_base_address

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

Return type:int
virtual_core_ids

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

Return type:iterable(int)
virtual_to_physical_core_map

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

Return type:bytearray
x

The X-coordinate of the chip.

Return type:int
x_size

The number of chips in the X-dimension.

Return type:int
y

The Y-coordinate of the chip.

Return type:int
y_size

The number of chips in the Y-dimension.

Return type:int
class spinnman.model.ChipSummaryInfo(chip_summary_data, offset, x, y)[source]

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()[source]

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

core_states

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

Return type:list(CPUState)
ethernet_ip_address

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

Return type:str
is_ethernet_available

Whether the Ethernet connection is available on this chip.

Return type:bool
largest_free_sdram_block

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

Return type:int
largest_free_sram_block

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

Return type:int
n_cores

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

Return type:int
n_free_multicast_routing_entries

The number of multicast routing entries free on this chip.

Return type:int
nearest_ethernet_x

The X-coordinate of the nearest Ethernet chip.

Return type:int
nearest_ethernet_y

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)
x

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

Return type:int
y

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

Return type:int
class spinnman.model.CPUInfo(x, y, p, cpu_data, offset)[source]

Bases: object

Represents information about the state of a CPU.

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 (bytes) – A bytestring received from SDRAM on the board
  • offset (int) –
application_id

The ID of the application running on the core.

Returns:The ID of the application
Return type:int
application_mailbox_command

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

Returns:The command
Return type:MailboxCommand
application_mailbox_data_address

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

Returns:The address of the data
Return type:int
application_name

The name of the application running on the core.

Returns:The name of the application
Return type:str
iobuf_address

The address of the IOBUF buffer in SDRAM.

Returns:The address
Return type:int

The current link register value (LR).

Returns:The LR value
Return type:int
monitor_mailbox_command

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

Returns:The command
Return type:MailboxCommand
monitor_mailbox_data_address

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

Returns:The address of the data
Return type:int
p

The ID of the core on the chip.

Returns:The ID of the core
Return type:int
physical_cpu_id

The physical ID of this processor.

Returns:The physical ID of the processor
Return type:int
processor_state_register

The value in the processor state register (PSR).

Returns:The PSR value
Return type:int
registers

The current register values (r0 - r7).

Returns:An array of 8 values, one for each register
Return type:list(int)
run_time_error

The reason for a run time error.

Returns:The run time error
Return type:RunTimeError
software_error_count

The number of software errors counted.

Returns:The number of software errors
Return type:int
software_source_filename_address

The address of the filename of the software source.

Returns:The filename
Return type:str
software_source_line_number

The line number of the software source.

Returns:The line number
Return type:int
software_version

The software version.

Returns:The software version
Return type:int
stack_pointer

The current stack pointer value (SP).

Returns:The SP value
Return type:int
state

The current state of the core.

Returns:The state of the core
Return type:CPUState
time

The time at which the application started.

Returns:The time in seconds since 00:00:00 on the 1st January 1970
Return type:int
user

The current user values (user0 - user3).

Returns:An array of 4 values, one for each user value
Return type:list(int)
x

The x-coordinate of the chip containing the core.

Returns:The x-coordinate of the chip
Return type:int
y

The y-coordinate of the chip containing the core.

Returns:The y-coordinate of the chip
Return type:int
class spinnman.model.CPUInfos[source]

Bases: object

A set of CPU information objects.

add_processor(x, y, processor_id, cpu_info)[source]

Add a processor on a given chip to the set.

Parameters:
  • x (int) – The x-coordinate of the chip
  • y (int) – The y-coordinate of the chip
  • processor_id (int) – A processor ID
  • cpu_info (CPUInfo) – The CPU information for the core
cpu_infos

The one per core core info.

Returns:iterable of x,y,p core info
get_cpu_info(x, y, p)[source]

Get the information for the given core on the given chip.

is_core(x, y, p)[source]

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

items()[source]
iteritems()[source]

Get an iterable of (x, y, p), cpu_info.

iterkeys()[source]

Get an iterable of (x, y, p).

itervalues()[source]

Get an iterable of cpu_info.

keys()[source]
values()[source]
class spinnman.model.DiagnosticFilter(enable_interrupt_on_counter_event, match_emergency_routing_status_to_incoming_packet, destinations, sources, payload_statuses, default_routing_statuses, emergency_routing_statuses, packet_types)[source]

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)
default_routing_statuses
destinations
emergency_routing_statuses
enable_interrupt_on_counter_event
filter_word

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

match_emergency_routing_status_to_incoming_packet
packet_types
payload_statuses
static read_from_int(int_value)[source]
sources
class spinnman.model.ExecutableTargets[source]

Bases: object

Encapsulate the binaries and cores on which to execute them.

add_processor(binary, chip_x, chip_y, chip_p, executable_type=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, subsets, executable_type=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.
all_core_subsets

All the core subsets for all the binaries.

Return type:CoreSubsets
binaries

The binaries of the executables.

Return type:iterable(str)
executable_types_in_binary_set()[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)[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)[source]

Get the cores that a binary is to run on.

Parameters:binary (str) – The binary to find the cores for
get_n_cores_for_executable_type(executable_type)[source]

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

Parameters:executable_type (ExecutableType) – the executable type for locating n cores of
Returns:the number of cores using this executable type
Return type:int
known(binary, chip_x, chip_y, chip_p)[source]
Parameters:
  • binary (str) –
  • chip_x (int) –
  • chip_y (int) –
  • chip_p (int) –
Return type:

bool

total_processors

The total number of cores to be loaded.

Return type:int
class spinnman.model.HeapElement(block_address, next_address, free)[source]

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
app_id

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

Return type:int or None
block_address

The address of the block.

Return type:int
is_free

Whether this block is a free block.

Return type:bool
next_address

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

Return type:int
size

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

Return type:int
tag

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

Return type:int or None
class spinnman.model.IOBuffer(x, y, p, iobuf)[source]

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
iobuf

The contents of the buffer.

Return type:str
p

The ID of the core on the chip.

Return type:int
x

The X-coordinate of the chip containing the core.

Return type:int
y

The Y-coordinate of the chip containing the core.

Return type:int
class spinnman.model.MachineDimensions(width, height)[source]

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
height

The height of the machine in chips.

Return type:int
width

The width of the machine in chips.

Return type:int
class spinnman.model.P2PTable(width, height, column_data)[source]

Bases: object

Represents a P2P routing table read from the machine.

Parameters:
  • width (int) –
  • height (int) –
  • column_data (bytes) –
static get_column_offset(column)[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)[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, y)[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

height

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))
width

The width of the machine that this table represents.

Return type:int
class spinnman.model.RouterDiagnostics(control_register, error_status, register_values)[source]

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

error_count

The count of errors.

Return type:int
error_status

The error status.

Return type:int
errors_set

A list of errors that have been detected.

Return type:list(RouterError)
mon

The “mon” part of the control register.

Return type:int
n_dropped_fixed_route_packets

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

Return type:int
n_dropped_multicast_packets

The number of multicast packets received that were dropped.

Return type:int
n_dropped_nearest_neighbour_packets

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

Return type:int
n_dropped_peer_to_peer_packets

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

Return type:int
n_external_fixed_route_packets

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

Return type:int
n_external_multicast_packets

The number of multicast packets received from external links.

Return type:int
n_external_nearest_neighbour_packets

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

Return type:int
n_external_peer_to_peer_packets

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

Return type:int
n_local_fixed_route_packets

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

Return type:int
n_local_multicast_packets

The number of multicast packets received from local cores.

Return type:int
n_local_nearest_neighbour_packets

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

Return type:int
n_local_peer_to_peer_packets

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

Return type:int
registers

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)
user_0

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

Return type:int
user_1

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

Return type:int
user_2

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

Return type:int
user_3

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

Return type:int
user_registers

The values in the user control registers.

Returns:An array of 4 values
Return type:list(int)
wait_1

The “wait_1” part of the control register.

Return type:int
wait_2

The “wait_2” part of the control register.

Return type:int
class spinnman.model.VersionInfo(version_data, offset=0)[source]

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

build_date

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

Return type:int
hardware

The hardware being run on.

Return type:str
name

The name of the software.

Return type:str
p

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

Return type:int
version_number

The version number of the software.

Return type:tuple(int, int, int)
version_string

The version information as text.

Return type:str
x

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

Return type:int
y

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

Return type:int