spinnman.messages.spinnaker_boot package

Module contents

class spinnman.messages.spinnaker_boot.SpinnakerBootMessage(opcode: SpinnakerBootOpCode, operand_1: int, operand_2: int, operand_3: int, data: bytes | None = None, offset: int = 0)

Bases: object

A message used for booting the board.

Parameters:
  • opcode (SpinnakerBootOpCode) – The operation of this packet

  • operand_1 (int) – The first operand

  • operand_2 (int) – The second operand

  • operand_3 (int) – The third operand

  • data (bytes or bytearray) – The optional data, up to 256 words

  • offset (int) – The offset of the valid data

Raises:

SpinnmanInvalidParameterException – If the opcode is not a valid value

property bytestring: bytes

The message as a byte-string.

Return type:

bytes

property data: bytes | None

The data, or None if no data.

Return type:

bytes or bytearray

static from_bytestring(data: bytes, offset: int) SpinnakerBootMessage[source]
Parameters:
Return type:

SpinnakerBootMessage

property opcode: SpinnakerBootOpCode

The operation of this packet.

Return type:

SpinnakerBootOpCode

property operand_1: int

The first operand.

Return type:

int

property operand_2: int

The second operand.

Return type:

int

property operand_3: int

The third operand.

Return type:

int

class spinnman.messages.spinnaker_boot.SpinnakerBootMessages(extra_boot_values: Dict[SystemVariableDefinition, Any] | None = None)

Bases: object

A set of boot messages to be sent to boot the board.

Parameters:

extra_boot_values (dict(SystemVariableDefinition, object)) – Any additional or overwrite values to set during boot. This should only be used for values which are not standard based on the board version. for example this may include an Led_0 value.

Raises:
property messages: Iterable[SpinnakerBootMessage]

An iterable of message to be sent.

Return type:

iterable(SpinnakerBootMessage)

class spinnman.messages.spinnaker_boot.SpinnakerBootOpCode(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: Enum

Boot message Operation Codes.

FLOOD_FILL_BLOCK = 3
FLOOD_FILL_CONTROL = 5
FLOOD_FILL_START = 1
HELLO = 65
class spinnman.messages.spinnaker_boot.SystemVariableDefinition(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: Enum

Defines the system variables available.

Parameters:
  • data_type (_DataType) – The data type of the variable

  • offset (int) – The offset from the start of the system variable structure where the variable is found

  • default (object) – The default value assigned to the variable if not overridden

  • array_size (int or None) – The length of the array, or None if not an array

allocated_tag_table_address = (_DataType.INT, 220, 0, None, 'The address of the allocated tag table')
app_data_table_address = (_DataType.INT, 228, 0, None, 'The address of the application data table')
property array_size: int | None

Gets the array size passed into the init (if applicable)

Return type:

int or None

board_info = (_DataType.INT, 248, 0, None, 'A pointer to the board information structure')
board_test_flags = (_DataType.BYTE, 103, 0, None, 'Board testing flags')
boot_signature = (_DataType.INT, 92, 0, None, 'The boot signature')
clock_divisor = (_DataType.BYTE, 14, 51, None, 'The clock divisors for system & router clocks')
clock_drift = (_DataType.INT, 56, 0, None, 'The clock drift')
clock_milliseconds = (_DataType.LONG, 16, 0, None, 'The time since startup in milliseconds')
cpu_clock_mhz = (_DataType.SHORT, 36, 200, None, 'The CPU clock frequency in MHz')
cpu_information_base_address = (_DataType.INT, 204, 0, None, 'The base address of the CPU information blocks')
property data_type: _DataType

Gets the data_type passed into the init.

Return type:

_DataType

debug_x = (_DataType.BYTE, 5, 0, None, 'The x-coordinate of the chip to send debug messages to')
debug_y = (_DataType.BYTE, 4, 0, None, 'The y-coordinate of the chip to send debug messages to')
property default: int | bytes

Gets the default Value passed into the init

Return type:

int or bytes

ethernet_ip_address = (_DataType.BYTE_ARRAY, 240, b'\x00\x00\x00\x00', 4, 'The IP address of the chip')
first_free_router_entry = (_DataType.SHORT, 224, 0, None, 'The ID of the first free router entry')
fixed_route_copy = (_DataType.INT, 244, 0, None, 'A (virtual) copy of the router FR register')
hardware_version = (_DataType.BYTE, 10, 0, None, 'The version of the hardware in use')
iobuf_size = (_DataType.INT, 80, 16384, None, 'The size of the iobuf buffer in bytes')
is_ethernet_available = (_DataType.BYTE, 11, 0, None, 'Indicates if Ethernet is available on this chip')
is_peer_to_peer_available = (_DataType.BYTE, 6, 0, None, 'Indicates if peer-to-peer is working on the chip')
is_root_chip = (_DataType.BYTE, 64, 0, None, 'Indicates if this is the root chip')
last_biff_id = (_DataType.BYTE, 102, 0, None, 'Last ID used in BIFF packet')
led_0 = (_DataType.INT, 48, 1, None, 'The first part of the LED definitions')
led_1 = (_DataType.INT, 52, 0, None, 'The last part of the LED definitions')
led_half_period_10_ms = (_DataType.BYTE, 43, 1, None, 'The LED half-period in 10 ms units, or 1 to show load')
lock = (_DataType.BYTE, 100, 0, None, 'The lock')
log_peer_to_peer_sequence_length = (_DataType.BYTE, 13, 4, None, 'Log (base 2) of the peer-to-peer sequence length')
ltpc_period = (_DataType.SHORT, 26, 0, None, '')
monitor_mailbox_flags = (_DataType.INT, 236, 0, None, 'The monitor incoming mailbox flags')
n_active_peer_to_peer_addresses = (_DataType.SHORT, 226, 0, None, 'The number of active peer-to-peer addresses')
n_scamp_working_cores = (_DataType.BYTE, 189, 0, None, 'The number of SCAMP working cores')
n_shared_message_buffers = (_DataType.BYTE, 65, 7, None, 'The number of shared message buffers')
n_working_cores = (_DataType.BYTE, 188, 0, None, 'The number of working cores')
nearest_ethernet_x = (_DataType.BYTE, 9, 0, None, 'The y-coordinate of the nearest chip with Ethernet')
nearest_ethernet_y = (_DataType.BYTE, 8, 0, None, 'The x-coordinate of the nearest chip with Ethernet')
nearest_neighbour_delay_us = (_DataType.BYTE, 66, 20, None, 'The delay between nearest-neighbour packets in microseconds')
nearest_neighbour_forward = (_DataType.BYTE, 40, 63, None, 'Nearest-Neighbour forward parameter')
nearest_neighbour_last_id = (_DataType.BYTE, 7, 0, None, 'The last ID used in nearest neighbour transaction')
nearest_neighbour_memory_pointer = (_DataType.INT, 96, 0, None, 'The memory pointer for nearest neighbour global operations')
nearest_neighbour_retry = (_DataType.BYTE, 41, 0, None, 'Nearest-Neighbour retry parameter')
netinit_bc_wait_time = (_DataType.BYTE, 44, 50, None, 'The time to wait after last BC during network initialisation in 10 ms units')
netinit_phase = (_DataType.BYTE, 45, 0, None, 'The phase of boot process (see enum netinit_phase_e)')
property offset: int

Gets the Offset passed into the init

Return type:

int

p2p_b_repeats = (_DataType.BYTE, 12, 4, None, 'Number of times to send out P2PB packets')
p2p_root_x = (_DataType.BYTE, 47, 0, None, 'The x-coordinate of the chip from which the system was booted')
p2p_root_y = (_DataType.BYTE, 46, 0, None, 'The y-coordinate of the chip from which the system was booted')
padding_2 = (_DataType.INT, 68, 0, None, 'A word of padding')
padding_3 = (_DataType.SHORT, 190, 0, None, 'A short of padding')
padding_4 = (_DataType.INT, 252, 0, None, 'A word of padding')
peer_to_peer_hop_table_address = (_DataType.INT, 216, 0, None, 'The address of the peer-to-peer hop tables')
physical_to_virtual_core_map = (_DataType.BYTE_ARRAY, 148, b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 20, 'The physical core ID to virtual core ID map')
random_seed = (_DataType.INT, 60, 0, None, 'The random seed')
router_table_copy_address = (_DataType.INT, 212, 0, None, 'The address of the copy of the routing tables')
router_time_phase_timer = (_DataType.INT, 32, 0, None, 'The router time-phase timer')
sdram_base_address = (_DataType.INT, 192, 0, None, 'The base address of SDRAM')
sdram_clock_frequency_mhz = (_DataType.SHORT, 38, 130, None, 'The SDRAM clock frequency in MHz')
sdram_heap_address = (_DataType.INT, 76, 0, None, 'The base address of the user SDRAM heap')
shared_message_buffer_address = (_DataType.INT, 232, 0, None, 'The address of the shared message buffers')
shared_message_count_in_use = (_DataType.SHORT, 108, 0, None, 'The number of shared message buffers in use')
shared_message_first_free_address = (_DataType.INT, 104, 0, None, 'Pointer to the first free shared message buffer')
shared_message_maximum_used = (_DataType.SHORT, 110, 0, None, 'The maximum number of shared message buffers used')
software_watchdog_count = (_DataType.BYTE, 67, 0, None, 'The number of watch dog timeouts before an error is raised')
status_map = (_DataType.BYTE_ARRAY, 128, b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 20, 'The status map set during SCAMP boot')
system_buffer_words = (_DataType.INT, 88, 32768, None, 'The size of the system buffer in words')
system_ram_base_address = (_DataType.INT, 196, 0, None, 'The base address of System RAM')
system_ram_heap_address = (_DataType.INT, 72, 1024, None, 'The base address of the system SDRAM heap')
system_sdram_base_address = (_DataType.INT, 200, 0, None, 'The base address of System SDRAM')
system_sdram_bytes = (_DataType.INT, 84, 8388608, None, 'The size of the system SDRAM in bytes')
system_sdram_heap_address = (_DataType.INT, 208, 0, None, 'The base address of the system SDRAM heap')
time_milliseconds = (_DataType.SHORT, 24, 0, None, 'The number of milliseconds in the current second')
time_phase_scale = (_DataType.BYTE, 15, 0, None, 'The time-phase scaling factor')
unix_timestamp = (_DataType.INT, 28, 0, None, 'The time in seconds since midnight, 1st January 1970')
user_temp_0 = (_DataType.INT, 112, 0, None, 'The first user variable')
user_temp_1 = (_DataType.INT, 116, 0, None, 'The second user variable')
user_temp_2 = (_DataType.INT, 120, 0, None, 'The third user variable')
user_temp_4 = (_DataType.INT, 124, 0, None, 'The fourth user variable')
virtual_to_physical_core_map = (_DataType.BYTE_ARRAY, 168, b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 20, 'The virtual core ID to physical core ID map')
x = (_DataType.BYTE, 1, 0, None, 'The x-coordinate of the chip')
x_size = (_DataType.BYTE, 3, 0, None, 'The number of chips in the x-dimension')
y = (_DataType.BYTE, 0, 0, None, 'The y-coordinate of the chip')
y_size = (_DataType.BYTE, 2, 0, None, 'The number of chips in the y-dimension')