SpiNNFrontEndCommon  development
Common support code for user-facing front end systems.
spinn_extra.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2019 The University of Manchester
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * https://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 // ------------------------------------------------------------------------
29 // ------------------------------------------------------------------------
30 
31 #ifndef __SPINN_EXTRA_H__
32 #define __SPINN_EXTRA_H__
33 
34 #include <spinnaker.h>
35 #include <stdbool.h>
36 
37 #ifndef DOXYGEN
38 // Hack for better naming in doxygen while avoiding warnings when building
39 #define DOXYNAME(x) /* nothing */
40 #endif
41 
42 #if defined(__GNUC__) && __GNUC__ < 6
43 // This particular warning (included in -Wextra) is retarded wrong for client
44 // code of this file. Only really a problem on Travis.
45 #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
46 #endif // __GNUC__
47 
60 #define ASSERT_WORD_SIZED(type_ident) \
61  static inline void __static_word_sized_assert_ ## type_ident (void) { \
62  _Static_assert(sizeof(type_ident) == sizeof(uint), \
63  #type_ident " must be the same size as a word"); \
64  }
65 
66 // ---------------------------------------------------------------------
67 // 1. Chip Organization
68 
69 // No registers
70 
71 // ---------------------------------------------------------------------
72 // 2. System Architecture
73 
74 // No registers
75 
76 // ---------------------------------------------------------------------
77 // 3. ARM968 Processing Subsystem
78 
79 // No registers
80 
81 // ---------------------------------------------------------------------
82 // 4. ARM 968
83 
84 // No special registers here
85 
86 // ---------------------------------------------------------------------
100 
102 typedef void (*vic_interrupt_handler_t) (void);
103 
105 typedef union {
107  struct DOXYNAME(interrupt_bits) {
109  uint watchdog : 1;
111  uint software : 1;
113  uint comm_rx : 1;
115  uint comm_tx : 1;
117  uint timer1 : 1;
119  uint timer2 : 1;
121  uint cc_rx_ready : 1;
127  uint cc_tx_full : 1;
129  uint cc_tx_overflow : 1;
131  uint cc_tx_empty : 1;
133  uint dma_done : 1;
135  uint dma_error : 1;
137  uint dma_timeout : 1;
141  uint router_dump : 1;
143  uint router_error : 1;
145  uint cpu : 1;
147  uint ethernet_tx : 1;
149  uint ethernet_rx : 1;
151  uint ethernet_phy : 1;
153  uint slow_clock : 1;
155  uint cc_tx_not_full : 1;
157  uint cc_rx_mc : 1;
159  uint cc_rx_p2p : 1;
161  uint cc_rx_nn : 1;
163  uint cc_rx_fr : 1;
165  uint int0 : 1;
167  uint int1 : 1;
169  uint gpio8 : 1;
171  uint gpio9 : 1;
172  };
174  uint value;
175 } vic_mask_t;
176 
178 typedef struct {
197  // padding
198  const uint _padding[3];
203 } vic_control_t;
204 
206 typedef struct {
208  uint source : 5;
210  uint enable : 1;
211  // padding
212  uint : 26;
214 
218 
220 static volatile vic_control_t *const vic_control =
221  // NB unbuffered!
222  (vic_control_t *) VIC_BASE_UNBUF;
225  (vic_interrupt_handler_t *) (VIC_BASE + 0x100);
228  (vic_vector_control_t *) (VIC_BASE + 0x200);
229 
231 
232 // ---------------------------------------------------------------------
242 
244 typedef struct {
246  uint one_shot : 1;
248  uint size : 1;
250  uint pre_divide : 2;
251  // padding
252  uint : 1;
256  uint periodic_mode : 1;
258  uint enable : 1;
259  // padding
260  uint : 24;
262 
271 };
272 
274 typedef struct {
276  uint status : 1;
277  // padding
278  uint : 31;
280 
282 typedef struct {
286  const uint current_value;
297  // padding
298  uint _dummy;
300 
303 
305 static volatile timer_controller_t *const timer1_control =
306  (timer_controller_t *) TIMER1_BASE;
308 static volatile timer_controller_t *const timer2_control =
309  (timer_controller_t *) TIMER2_BASE;
310 
312 
313 // ---------------------------------------------------------------------
328 
330 typedef struct {
332  uint _zeroes : 2;
334  uint length_words : 15;
335  // padding
336  uint : 2;
338  uint direction : 1;
340  uint crc : 1;
342  uint burst : 3;
344  uint width : 1;
346  uint privilege : 1;
348  uint transfer_id : 6;
350 
357 };
358 
365 };
366 
368 typedef struct {
370  uint uncommit : 1;
372  uint abort : 1;
374  uint restart : 1;
376  uint clear_done_int : 1;
381  // padding
382  uint : 26;
383 } dma_control_t;
384 
386 typedef struct {
388  uint transferring : 1;
390  uint paused : 1;
392  uint queued : 1;
397  // padding
398  uint : 5;
400  uint transfer_done : 1;
402  uint transfer2_done : 1;
404  uint timeout : 1;
406  uint crc_error : 1;
408  uint tcm_error : 1;
410  uint axi_error : 1;
412  uint user_abort : 1;
414  uint soft_reset : 1;
415  // not allocated
416  uint : 2;
419  // padding
420  uint : 3;
422  uint processor_id : 8;
423 } dma_status_t;
424 
426 typedef struct {
429  // padding
430  uint : 9;
447  // not allocated
448  uint : 2;
451  // padding
452  uint : 10;
454  uint timer : 1;
456 
458 typedef struct {
460  uint _zeroes : 5;
462  uint value : 5;
463  // padding
464  uint : 22;
465 } dma_timeout_t;
466 
468 typedef struct {
470  uint enable : 1;
472  uint clear : 1;
473  // padding
474  uint : 30;
476 
478 typedef struct {
479  // padding
480  const uint _unused1[1];
484  void *tcm_address;
494  const uint crcc;
496  const uint crcr;
501  // padding
502  const uint _unused2[5];
504  const uint statistics[8];
505  // padding
506  const uint _unused3[41];
510  const void *current_tcm_address;
513  // padding
514  const uint _unused4[29];
516  uint crc_polynomial[32];
517 } dma_t;
518 
525 
527 static volatile dma_t *const dma_control = (dma_t *) DMA_BASE;
528 
530 
531 // ---------------------------------------------------------------------
537 
539 typedef union {
541  struct DOXYNAME(common) {
543  uchar parity : 1;
545  uchar payload : 1;
547  uchar timestamp : 2;
548  // padding
549  uchar : 2;
551  uchar type : 2;
552  };
554  struct DOXYNAME(mc) {
555  // padding
556  uchar : 4;
558  uchar emergency_routing : 2;
559  // padding
560  uchar : 2;
561  } mc;
563  struct DOXYNAME(p2p) {
564  // padding
565  uchar : 4;
567  uchar seq_code : 2;
568  // padding
569  uchar : 2;
570  } p2p;
572  struct DOXYNAME(nn) {
573  // padding
574  uchar : 2;
576  uchar route : 3;
578  uchar mem_or_normal : 1;
579  // padding
580  uchar : 2;
581  } nn;
583  struct DOXYNAME(fr) {
584  // padding
585  uchar : 4;
587  uchar emergency_routing : 2;
588  // padding
589  uchar : 2;
590  } fr;
591  uchar value;
593 
604 };
605 
607 typedef struct {
608  // padding
609  uint : 16;
611  uint control_byte : 8;
612  // padding
613  uint : 4;
615  uint not_full : 1;
617  uint overrun : 1;
619  uint full : 1;
621  uint empty : 1;
623 
625 typedef struct {
627  uint multicast : 1;
629  uint point_to_point : 1;
633  uint fixed_route : 1;
634  // padding
635  uint : 12;
637  uint control_byte : 8;
639  uint route : 3;
640  // padding
641  uint : 1;
643  uint error_free : 1;
645  uint framing_error : 1;
647  uint parity_error : 1;
649  uint received : 1;
651 
653 typedef struct {
655  uint p2p_source_id : 16;
656  // padding
657  uint : 8;
659  uint route : 3;
660  // padding
661  uint : 5;
663 
665 typedef struct {
669  uint tx_data;
671  uint tx_key;
675  const uint rx_data;
678  const uint rx_key;
682  const uint _test;
683 } comms_ctl_t;
684 
688 
690 static volatile comms_ctl_t *const comms_control = (comms_ctl_t *) CC_BASE;
691 
693 
694 // ---------------------------------------------------------------------
695 // 9. Communications NoC
696 
697 // No registers
698 
699 // ---------------------------------------------------------------------
715 
717 typedef struct {
731  uint time_phase : 2;
734  // padding
735  uint : 2;
741  uint drop_wait_time : 8;
743 
745 typedef struct {
749  uint busy : 1;
750  // padding
751  uint : 7;
753  uint output_stage : 2;
754  // padding
755  uint : 3;
763 
774 };
775 
777 typedef union {
779  struct DOXYNAME(flags) {
780  // padding
781  uint : 6;
783  uint time_phase : 2;
784  // padding
785  uint : 8;
787  uint control : 8;
789  uint route : 3;
793  uint framing_error : 1;
795  uint parity_error : 1;
796  // padding
797  uint : 2;
798  };
800  struct DOXYNAME(control_field_bits) {
801  // padding
802  uint : 17;
804  uint payload : 1;
805  // padding
806  uint : 4;
808  uint type : 2;
809  };
811  uint word;
813 
815 typedef struct {
817  uint error_count : 16;
818  // padding
819  uint : 11;
823  uint framing_error : 1;
825  uint parity_error : 1;
827  uint overflow : 1;
829  uint error : 1;
831 
833 typedef struct {
835  uint link : NUM_LINKS;
837  uint processor : NUM_CPUS;
838  // padding
839  uint : 8;
841 
843 typedef struct {
845  uint link : NUM_LINKS;
847  uint processor : NUM_CPUS;
848  // padding
849  uint : 6;
851  uint overflow : 1;
853  uint dumped : 1;
855 
857 typedef struct {
859  ushort enable;
861  ushort reset;
863 
865 typedef struct {
872  // padding
873  uint : 13;
879  uint reset_histogram : 1;
880  // padding
881  uint : 13;
883 
885 typedef struct {
887  uint L0 : 2;
889  uint L1 : 2;
891  uint L2 : 2;
893  uint L3 : 2;
895  uint L4 : 2;
897  uint L5 : 2;
898  // padding
899  uint : 20;
901 
910 };
911 
913 typedef struct {
915  uint fr_links : NUM_LINKS;
917  uint fr_processors : NUM_CPUS;
918  // padding
919  uint : 2;
921  uint nn_broadcast_links : NUM_LINKS;
923 
925 typedef struct {
931  struct DOXYNAME(error) {
935  const uint key;
937  const uint payload;
940  } error;
942  struct DOXYNAME(dump) {
946  const uint key;
948  const uint payload;
953  } dump;
959  const uint cycle_count;
963  const uint unblocked_count;
965  const uint delay_histogram[16];
970 } router_t;
971 
973 typedef struct {
975  uint type : 4;
980  // padding
981  uint : 1;
983  uint pattern_default : 2;
985  uint pattern_payload : 2;
987  uint pattern_local : 2;
990  // padding
991  uint : 4;
999 
1001 typedef union {
1003  struct DOXYNAME(routes) {
1005  uint links : NUM_LINKS;
1007  uint processors : NUM_CPUS;
1008  };
1010  uint value;
1012 
1014 typedef enum {
1033 
1035 typedef union {
1037  struct DOXYNAME(routes) {
1054  };
1056  uint value;
1058 
1071 
1073 static volatile router_t *const router_control = (router_t *) RTR_BASE;
1076  (router_diagnostic_filter_t *) (RTR_BASE + 0x200);
1078 static volatile uint *const router_diagnostic_counter =
1079  (uint *) (RTR_BASE + 0x300);
1082  (router_multicast_route_t *) RTR_MCRAM_BASE;
1084 static volatile uint *const router_key_table = (uint *) RTR_MCKEY_BASE;
1086 static volatile uint *const router_mask_table = (uint *) RTR_MCMASK_BASE;
1089  (router_p2p_table_entry_t *) RTR_P2P_BASE;
1090 
1092 
1093 // ---------------------------------------------------------------------
1094 // 11. Inter-chip transmit and receive interfaces
1095 
1096 // No registers
1097 
1098 // ---------------------------------------------------------------------
1099 // 12. System NoC
1100 
1101 // No registers
1102 
1103 // ---------------------------------------------------------------------
1111 
1113 typedef struct {
1115  uint status : 2;
1117  uint width : 2;
1119  uint ddr : 3;
1121  uint chips : 2;
1123  uint banks : 1;
1125  uint monitors : 2;
1126  // padding
1127  uint : 20;
1128 } sdram_status_t;
1129 
1131 typedef struct {
1133  uint command : 3;
1134 } sdram_command_t;
1135 
1151 };
1152 
1156 typedef struct {
1158  uint address : 14;
1159  // padding
1160  uint : 2;
1162  uint bank : 2;
1164  uint cmd : 2;
1166  uint chip : 2;
1167  // padding
1168  uint : 10;
1170 
1182 };
1183 
1185 typedef struct {
1187  uint column : 3;
1189  uint row : 3;
1197  uint stop_clock : 1;
1199  uint burst : 3;
1201  uint qos : 3;
1203  uint active : 2;
1204  // padding
1205  uint : 9;
1207 
1209 typedef struct {
1211  uint period : 15;
1212  // padding
1213  uint : 17;
1214 } sdram_refresh_t;
1215 
1217 typedef struct {
1219  uint half_cycle : 1;
1221  uint cas_lat : 3;
1222  // padding
1223  uint : 28;
1225 
1228 typedef struct {
1230  uint t_dqss;
1232  uint t_mrd;
1234  uint t_ras;
1236  uint t_rc;
1238  uint t_rcd;
1240  uint t_rfc;
1242  uint t_rp;
1244  uint t_rrd;
1246  uint t_wr;
1248  uint t_wtr;
1250  uint t_xp;
1252  uint t_xsr;
1254  uint t_esr;
1256 
1258 typedef struct {
1274 
1276 typedef struct {
1278  uint enable : 1;
1280  uint minimum : 1;
1282  uint maximum : 8;
1283  // padding
1284  uint : 22;
1285 } sdram_qos_t;
1286 
1288 typedef struct {
1290  uint mask : 8;
1292  uint match : 8;
1294  uint orientation : 1;
1295  // padding
1296  uint : 15;
1297 } sdram_chip_t;
1298 
1304  SDRAM_CHIP_MAX = 3
1305 };
1306 
1308 typedef struct {
1310  uint meter : 7;
1311  // padding
1312  uint : 1;
1314  uint s0 : 1;
1316  uint c0 : 1;
1318  uint s1 : 1;
1320  uint c1 : 1;
1322  uint s2 : 1;
1324  uint c2 : 1;
1326  uint s3 : 1;
1328  uint c3 : 1;
1330  uint decing : 1;
1332  uint incing : 1;
1334  uint locked : 1;
1335  // padding
1336  uint : 1;
1338  uint R : 1;
1340  uint M : 1;
1342  uint L : 1;
1343  // padding
1344  uint : 9;
1346 
1348 typedef struct {
1350  uint s0 : 2;
1352  uint s1 : 2;
1354  uint s2 : 2;
1356  uint s3 : 2;
1358  uint s4 : 2;
1360  uint s5 : 2;
1361  // padding
1362  uint : 4;
1364  uint test_decing : 1;
1366  uint test_incing : 1;
1370  uint test_5 : 1;
1372  uint R : 1;
1374  uint M : 1;
1376  uint L : 1;
1380  uint enable : 1;
1381  // padding
1382  uint : 7;
1384 
1386 typedef union {
1388  struct DOXYNAME(tuning) {
1390  uint tune_0 : 4;
1392  uint tune_1 : 4;
1394  uint tune_2 : 4;
1396  uint tune_3 : 4;
1398  uint tune_4 : 4;
1400  uint tune_5 : 4;
1401  // padding
1402  uint : 8;
1403  };
1405  uint word;
1407 
1409 typedef struct {
1416 } sdram_dll_t;
1417 
1429 
1431 static volatile sdram_controller_t *const sdram_control =
1432  (sdram_controller_t *) PL340_BASE;
1434 static volatile sdram_qos_t *const sdram_qos_control =
1435  (sdram_qos_t *) (PL340_BASE + 0x100);
1437 static volatile sdram_chip_t *const sdram_chip_control =
1438  (sdram_chip_t *) (PL340_BASE + 0x200);
1440 static volatile sdram_dll_t *const sdram_dll_control =
1441  (sdram_dll_t *) (PL340_BASE + 0x300);
1442 
1444 
1445 // ---------------------------------------------------------------------
1462 
1464 typedef struct {
1466  uint select : NUM_CPUS;
1467  // padding
1468  uint : 2;
1470  uint security_code : 12;
1472 
1474 typedef struct {
1476  uint router : 1;
1478  uint sdram : 1;
1480  uint system_noc : 1;
1482  uint comms_noc : 1;
1484  uint tx_links : NUM_LINKS;
1486  uint rx_links : NUM_LINKS;
1488  uint clock_gen : 1;
1490  uint entire_chip : 1;
1491  // padding
1492  uint : 2;
1494  uint security_code : 12;
1496 
1498 typedef struct {
1500  uint reset_code : 3;
1501  // padding
1502  uint : 29;
1503 } sc_reset_code_t;
1504 
1517 };
1518 
1520 typedef struct {
1522  uint monitor_id : 5;
1523  // padding
1524  uint : 3;
1527  // padding
1528  uint : 7;
1531  // padding
1532  uint : 3;
1534  uint security_code : 12;
1535 } sc_monitor_id_t;
1536 
1538 typedef struct {
1540  uint boot_area_map : 1;
1541  // padding
1542  uint : 14;
1544  uint jtag_on_chip : 1;
1546  uint test : 1;
1548  uint ethermux : 1;
1550  uint clk32 : 1;
1552  uint jtag_tdo : 1;
1554  uint jtag_rtck : 1;
1555  // padding
1556  uint : 11;
1558 
1560 typedef union {
1562  struct DOXYNAME(io_bits) {
1563  // padding
1564  uint : 16;
1570  uint jtag : 4;
1571  // padding
1572  uint : 1;
1574  uint sdram : 3;
1575  };
1577  uint gpio;
1578 } sc_io_t;
1579 
1581 typedef struct {
1584  // padding
1585  uint : 2;
1587  uint output_divider : 6;
1588  // padding
1589  uint : 2;
1591  uint freq_range : 2;
1593  uint power_up : 1;
1594  // padding
1595  uint : 5;
1597  uint _test : 1;
1598  // padding
1599  uint : 7;
1601 
1611  FREQ_200_400
1612 };
1613 
1615 typedef struct {
1617  uint pa : 2;
1619  uint adiv : 2;
1620  // padding
1621  uint : 1;
1623  uint pb : 2;
1625  uint bdiv : 2;
1626  // padding
1627  uint : 1;
1629  uint mem : 2;
1631  uint mdiv : 2;
1632  // padding
1633  uint : 1;
1635  uint rtr : 2;
1637  uint rdiv : 2;
1638  // padding
1639  uint : 1;
1641  uint sys : 2;
1643  uint sdiv : 2;
1644  // padding
1645  uint : 7;
1647  uint invert_b : 1;
1648 } sc_clock_mux_t;
1649 
1662 };
1663 
1665 typedef struct {
1667  uint status : NUM_CPUS;
1668  // padding
1669  uint : 14;
1671 
1673 typedef struct {
1675  uint temperature : 24;
1678  // padding
1679  uint : 6;
1681  uint start : 1;
1683 
1685 typedef struct {
1686  // padding
1687  uint : 31;
1689  uint bit : 1;
1690 } sc_mutex_bit_t;
1691 
1693 typedef struct {
1695  uint rx_disable : NUM_LINKS;
1696  // padding
1697  uint : 2;
1699  uint tx_disable : NUM_LINKS;
1700  // padding
1701  uint : 2;
1703  uint parity_control : 1;
1704  // padding
1705  uint : 3;
1707  uint security_code : 12;
1709 
1710 #define _NUM_TEMPS 3
1711 #define _NUM_ARBITERS 32
1712 #define _NUM_LOCK_REGISTERS 32
1713 
1715 typedef struct {
1717  const uint chip_id;
1769  sc_temperature_t temperature[_NUM_TEMPS];
1770  // padding
1771  const uint _padding[3];
1773  const sc_mutex_bit_t monitor_arbiter[_NUM_ARBITERS];
1775  const sc_mutex_bit_t test_and_set[_NUM_LOCK_REGISTERS];
1777  const sc_mutex_bit_t test_and_clear[_NUM_LOCK_REGISTERS];
1781 
1783 enum sc_magic {
1786 };
1787 
1799 
1801 static volatile system_controller_t *const system_control =
1802  (system_controller_t *) SYSCTL_BASE;
1803 
1805 
1806 // ---------------------------------------------------------------------
1816 
1818 typedef struct {
1820  uint transmit : 1;
1822  uint receive : 1;
1824  uint loopback : 1;
1836  uint receive_vlan : 1;
1841  // padding
1842  uint : 21;
1844 
1846 typedef struct {
1850  uint unread_counter : 6;
1851  // padding
1852  uint : 9;
1854  uint drop_counter : 16;
1856 
1858 typedef struct {
1860  uint tx_length : 11;
1862 
1868  ETHERNET_TX_LENGTH_MAX = 1514
1869 };
1870 
1872 typedef struct {
1874  uint reset : 1;
1876  uint smi_input : 1;
1878  uint smi_output : 1;
1880  uint smi_out_enable : 1;
1882  uint smi_clock : 1;
1885  // padding
1886  uint : 26;
1888 
1890 typedef struct {
1892  uint transmit : 1;
1893  // padding
1894  uint : 3;
1896  uint receive : 1;
1897  // padding
1898  uint : 27;
1900 
1902 typedef struct {
1904  uint ptr : 12;
1906  uint rollover : 1;
1907  // padding
1908  uint : 19;
1910 
1912 typedef struct {
1914  uint ptr : 6;
1916  uint rollover : 1;
1917  // padding
1918  uint : 25;
1920 
1922 typedef struct {
1934  uint64 mac_address;
1948  uint _test[3];
1950 
1954 typedef struct {
1956  uint length : 11;
1957  // unknown; might be padding or status bits?
1958  uint : 21;
1960 
1969 
1971 static volatile uchar *const ethernet_tx_buffer = (uchar *) ETH_TX_BASE;
1973 static volatile uchar *const ethernet_rx_buffer = (uchar *) ETH_RX_BASE;
1976  (ethernet_receive_descriptor_t *) ETH_RX_DESC_RAM;
1978 static volatile ethernet_controller_t *const ethernet_control =
1979  (ethernet_controller_t *) ETH_REGS;
1980 
1982 
1983 // ---------------------------------------------------------------------
1993 
1995 typedef struct {
1999  uint reset_enable : 1;
2000  // padding
2001  uint : 30;
2003 
2005 typedef struct {
2007  uint interrupted : 1;
2008  // padding
2009  uint : 31;
2011 
2013 typedef union {
2015  struct DOXYNAME(fields) {
2017  uint lock : 1;
2019  uint magic : 31;
2020  };
2023 } watchdog_lock_t;
2024 
2030  WATCHDOG_LOCK_MAGIC = WD_CODE
2031 };
2032 
2034 typedef struct {
2036  uint load;
2038  const uint value;
2047  // Lots of padding!
2048  const uint _padding[0x2fa];
2052 
2056 
2058 static volatile watchdog_controller_t *const watchdog_control =
2059  (watchdog_controller_t *) WDOG_BASE;
2060 
2062 
2063 // ---------------------------------------------------------------------
2064 // 17. System RAM
2065 
2066 // No registers
2067 
2068 // ---------------------------------------------------------------------
2069 // 18. Boot ROM
2070 
2071 // No registers
2072 
2073 // ---------------------------------------------------------------------
2074 // 19. JTAG
2075 
2076 // No registers
2077 
2078 // ---------------------------------------------------------------------
2079 // 20. Input and Output Signals
2080 
2081 // No registers
2082 
2083 // ---------------------------------------------------------------------
2084 // 21. Packaging
2085 
2086 // No registers
2087 
2088 // ---------------------------------------------------------------------
2089 // 22. Application Notes
2090 
2091 // No registers
2092 
2093 // ---------------------------------------------------------------------
2094 #endif // !__SPINN_EXTRA_H__
uint reset_drop_counter
Reset receive dropped frame count (ethernet_general_status_t::drop_counter)
Definition: spinn_extra.h:1838
static volatile router_multicast_route_t *const router_multicast_table
Router multicast route table.
Definition: spinn_extra.h:1081
router_control_t control
Router control register.
Definition: spinn_extra.h:927
uint nearest_neighbour
error-free nearest-neighbour packet received
Definition: spinn_extra.h:631
uint receive_vlan
Receive VLAN enable.
Definition: spinn_extra.h:1836
uint L2
Diversion rule for link 2.
Definition: spinn_extra.h:891
uint s4
Input select for delay line 4 {def, alt, 0, 1}.
Definition: spinn_extra.h:1358
dma_stats_control_t statistics_control
Statistics counters control.
Definition: spinn_extra.h:500
uint set_flags
Set flags register.
Definition: spinn_extra.h:1761
uint cc_rx_fr
Comms controller fixed route packet received.
Definition: spinn_extra.h:163
uint clear_write_buffer_int
clear Write Buffer interrupt request
Definition: spinn_extra.h:380
uint loopback
Loopback enable.
Definition: spinn_extra.h:1824
uint load
Count load register.
Definition: spinn_extra.h:2036
uint R
3-phase bar-code control output
Definition: spinn_extra.h:1338
uint pb
clock selector for B CPUs (0 3 5 6 9 10 12 15 17); see sc_clock_source
Definition: spinn_extra.h:1623
uint transmit_command
Transmit command; any value commits transmit.
Definition: spinn_extra.h:1930
uint c1
Clock faster than strobe 1.
Definition: spinn_extra.h:1320
uint magic
Access control code.
Definition: spinn_extra.h:2019
uint value
The timeout.
Definition: spinn_extra.h:462
uint mask
address mask
Definition: spinn_extra.h:1290
const uint current_value
Current value of Timer.
Definition: spinn_extra.h:286
uint dumped
packet dumped
Definition: spinn_extra.h:853
static volatile system_controller_t *const system_control
System controller registers.
Definition: spinn_extra.h:1801
uint L4
Diversion rule for link 4.
Definition: spinn_extra.h:895
uint ethernet_receive
Ethernet MII RxD port.
Definition: spinn_extra.h:1566
uint gpio8
Signal on GPIO[8].
Definition: spinn_extra.h:169
ethernet_tx_length_limits
Limits of ethernet_tx_length_t::tx_length.
Definition: spinn_extra.h:1864
@ ETHERNET_TX_LENGTH_MIN
Minimum length of an ethernet frame.
Definition: spinn_extra.h:1866
@ ETHERNET_TX_LENGTH_MAX
Maximum length of an ethernet frame.
Definition: spinn_extra.h:1868
const router_dump_status_t status
dumped packet status
Definition: spinn_extra.h:952
sc_io_t io_direction
External I/O pin is input (1) or output (0)
Definition: spinn_extra.h:1751
uint dump_interrupt_enable
enable dump packet interrupt
Definition: spinn_extra.h:723
uint value
Overall entry packed as number.
Definition: spinn_extra.h:1056
router_fixed_route_routing_t fixed_route
fixed-route packet routing vector
Definition: spinn_extra.h:969
uint lock
Write access enabled (0) or disabled (1)
Definition: spinn_extra.h:2017
watchdog_lock_t lock
Lock register.
Definition: spinn_extra.h:2050
uint mdiv
divide SDRAM clock by Mdiv+1 (= 1-4)
Definition: spinn_extra.h:1631
uint interrupt_active_for_diagnostic_counter
diagnostic counter interrupt active
Definition: spinn_extra.h:747
uint enable_force_lmr
Enable forcing of L, M, R.
Definition: spinn_extra.h:1378
router_p2p_route route7
Seventh packed route.
Definition: spinn_extra.h:1051
const uint chip_id
Chip ID register (hardwired)
Definition: spinn_extra.h:1717
uint L
3-phase bar-code control output
Definition: spinn_extra.h:1342
uint type
packet-type field from control byte
Definition: spinn_extra.h:808
uint s2
Strobe 2 faster than Clock.
Definition: spinn_extra.h:1322
watchdog_control_t control
Control register.
Definition: spinn_extra.h:2040
uint time_phase_error
packet time stamp error (sticky)
Definition: spinn_extra.h:821
uint enable_histogram
enable histogram
Definition: spinn_extra.h:871
uint security_code
SYSTEM_CONTROLLER_MAGIC_NUMBER to enable write
Definition: spinn_extra.h:1534
uint t_xp
exit power-down command time
Definition: spinn_extra.h:1250
uint parity_error
packet parity error (sticky)
Definition: spinn_extra.h:825
uint cc_tx_not_full
Comms controller can accept new Tx packet.
Definition: spinn_extra.h:155
static volatile timer_controller_t *const timer2_control
Timer 2 control registers.
Definition: spinn_extra.h:308
uint output_stage
Router output stage status (see router_output_stage)
Definition: spinn_extra.h:753
uint ddr
DDR type: 3b’011 = Mobile DDR.
Definition: spinn_extra.h:1119
sc_link_disable_t link_disable
Disables for Tx and Rx link interfaces.
Definition: spinn_extra.h:1779
uint M
3-phase bar-code control output
Definition: spinn_extra.h:1340
uint interrupt_active_dump
dump packet interrupt active
Definition: spinn_extra.h:757
uint boot_area_map
map System ROM (0) or RAM (1) to Boot area
Definition: spinn_extra.h:1540
uint reset
PHY reset (active low)
Definition: spinn_extra.h:1874
uint enable
enable counter/timer (1 = enabled)
Definition: spinn_extra.h:258
const timer_interrupt_status_t masked_interrupt_status
Timer masked interrupt status.
Definition: spinn_extra.h:294
uint reset_cycle_count
reset cycle counter
Definition: spinn_extra.h:875
uint bdiv
divide CPU clock B by Bdiv+1 (= 1-4)
Definition: spinn_extra.h:1625
uchar type
Should be one of spinnaker_packet_type_t.
Definition: spinn_extra.h:551
uint bit
The only relevant bit in the word.
Definition: spinn_extra.h:1689
uint full
Tx buffer full (sticky)
Definition: spinn_extra.h:619
uint burst
burst length (1, 2, 4, 8, 16)
Definition: spinn_extra.h:1199
uint bank
bank passed to memory device
Definition: spinn_extra.h:1162
uint comm_rx
Debug communications receiver interrupt.
Definition: spinn_extra.h:113
static volatile uchar *const ethernet_tx_buffer
Ethernet transmit buffer.
Definition: spinn_extra.h:1971
sc_io_t io_clear
Writing a 1 clears IO register bit.
Definition: spinn_extra.h:1755
vic_interrupt_handler_t default_vector_address
default vector address register
Definition: spinn_extra.h:202
static volatile router_t *const router_control
Router controller registers.
Definition: spinn_extra.h:1073
sdram_direct_command_t direct
direct command
Definition: spinn_extra.h:1264
comms_tx_control_t tx_control
Controls packet transmission.
Definition: spinn_extra.h:667
uint transfer_done
a DMA transfer has completed without error
Definition: spinn_extra.h:400
uint p2p_source_id
16-bit chip source ID for P2P packets
Definition: spinn_extra.h:655
uint sdram
On-package SDRAM control.
Definition: spinn_extra.h:1574
uint tune_1
Fine tuning control on delay line 1.
Definition: spinn_extra.h:1392
uint parity_error
packet parity error (error only)
Definition: spinn_extra.h:795
sdram_command
Memory controller commands, for sdram_command_t::command.
Definition: spinn_extra.h:1138
@ SDRAM_CTL_WAKE
Wake.
Definition: spinn_extra.h:1144
@ SDRAM_CTL_CONFIG
Configure.
Definition: spinn_extra.h:1148
@ SDRAM_CTL_SLEEP
Sleep.
Definition: spinn_extra.h:1142
@ SDRAM_CTL_GO
Go.
Definition: spinn_extra.h:1140
@ SDRAM_CTL_ACTIVE_PAUSE
Active Pause.
Definition: spinn_extra.h:1150
@ SDRAM_CTL_PAUSE
Pause.
Definition: spinn_extra.h:1146
uint cpu
System Controller interrupt bit set for this processor.
Definition: spinn_extra.h:145
uint soft_reset_interrupt
interrupt if dma_status_t::soft_reset set
Definition: spinn_extra.h:446
uint incing
Phase comparator is increasing delay.
Definition: spinn_extra.h:1332
uint cc_tx_full
Comms controller transmit buffer full.
Definition: spinn_extra.h:127
uint rtr
clock selector for Router; see sc_clock_source
Definition: spinn_extra.h:1635
static volatile sdram_qos_t *const sdram_qos_control
SDRAM QoS control registers.
Definition: spinn_extra.h:1434
static volatile watchdog_controller_t *const watchdog_control
Watchdog timer controller registers.
Definition: spinn_extra.h:2058
uint reset_histogram
reset histogram
Definition: spinn_extra.h:879
watchdog_lock_codes
Watchdog timer lock codes, for watchdog_lock_t::whole_value.
Definition: spinn_extra.h:2026
@ WATCHDOG_LOCK_MAGIC
Unlock the watchdog timer for configuration.
Definition: spinn_extra.h:2030
@ WATCHDOG_LOCK_RESET
Put the watchdog timer into normal mode.
Definition: spinn_extra.h:2028
const vic_mask_t fiq_status
FIQ status register.
Definition: spinn_extra.h:182
uint cc_rx_framing_error
Comms controller received packet framing error.
Definition: spinn_extra.h:125
uint busy
busy - active packet(s) in Router pipeline
Definition: spinn_extra.h:749
uint direction
read from or write to system bus, see dma_direction_t
Definition: spinn_extra.h:338
const uint crcc
CRC value calculated by CRC block.
Definition: spinn_extra.h:494
uint jtag_on_chip
select on-chip (1) or off-chip (0) control of JTAG pins
Definition: spinn_extra.h:1544
uint queued
DMA transfer is queued - registers are full.
Definition: spinn_extra.h:392
uint nn_broadcast_links
Nearest-neighbour broadcast link vector.
Definition: spinn_extra.h:921
uint clear_timeout_int
clear Timeout interrupt request
Definition: spinn_extra.h:378
sc_pll_control_t pll2_freq_control
PLL2 frequency control.
Definition: spinn_extra.h:1759
uint time_phase_error
packet time stamp error (error only)
Definition: spinn_extra.h:791
uint width
transfer width, see dma_transfer_unit_t
Definition: spinn_extra.h:344
const sc_sleep_status_t cpu_sleep
CPU sleep (awaiting interrupt) status.
Definition: spinn_extra.h:1767
uint command
one of sdram_command
Definition: spinn_extra.h:1133
uint pa
clock selector for A CPUs (1 2 4 7 8 11 13 14 16); see sc_clock_source
Definition: spinn_extra.h:1617
vic_mask_t soft_int_enable
soft interrupt set register
Definition: spinn_extra.h:192
uint c3
Clock faster than strobe 3.
Definition: spinn_extra.h:1328
uint clear
Clear the statistics registers (if 1)
Definition: spinn_extra.h:472
uint unread_counter
Received unread frame count.
Definition: spinn_extra.h:1850
uint write_buffer_active
write buffer is not empty
Definition: spinn_extra.h:396
uint links
The links to route along.
Definition: spinn_extra.h:1005
router_diversion_t diversion
divert default packets
Definition: spinn_extra.h:967
uint receive_error_filter
Receive error filter enable.
Definition: spinn_extra.h:1826
sdram_ram_config_t mem_config
memory configuration
Definition: spinn_extra.h:1266
uint overflow
more than one error packet detected
Definition: spinn_extra.h:827
uint control_byte
Control byte of last Rx packet.
Definition: spinn_extra.h:637
vic_mask_t int_enable
interrupt enable set register
Definition: spinn_extra.h:188
uint overflow
more than one packet dumped
Definition: spinn_extra.h:851
uint transmit
Clear transmit interrupt request.
Definition: spinn_extra.h:1892
const ethernet_receive_descriptor_pointer_t receive_desc_write
Receive descriptor write pointer.
Definition: spinn_extra.h:1946
uint irq_invert_disable
PHY IRQn invert disable.
Definition: spinn_extra.h:1884
static volatile vic_interrupt_handler_t *const vic_interrupt_vector
VIC interrupt handlers. Array of 32 elements.
Definition: spinn_extra.h:224
uint tune_5
Fine tuning control on delay line 5.
Definition: spinn_extra.h:1400
uchar timestamp
Timestamp (not used for NN packets)
Definition: spinn_extra.h:547
uint rx_links
Rx link 0-5.
Definition: spinn_extra.h:1486
const watchdog_status_t masked_status
Masked interrupt status register.
Definition: spinn_extra.h:2046
uint decing
Phase comparator is reducing delay.
Definition: spinn_extra.h:1330
uint receive_command
Receive command; any value completes receive.
Definition: spinn_extra.h:1932
static volatile ethernet_receive_descriptor_t *const ethernet_desc_buffer
Ethernet receive descriptor buffer.
Definition: spinn_extra.h:1975
uint cc_rx_parity_error
Comms controller received packet parity error.
Definition: spinn_extra.h:123
uint match
address match
Definition: spinn_extra.h:1292
uint overrun
Tx buffer overrun (sticky)
Definition: spinn_extra.h:617
sdram_refresh_t refresh
refresh period
Definition: spinn_extra.h:1268
uint s1
Input select for delay line 1 {def, alt, 0, 1}.
Definition: spinn_extra.h:1352
router_p2p_route
The possible values of a P2P route.
Definition: spinn_extra.h:1014
@ ROUTER_P2P_ROUTE_NE
Route north-east.
Definition: spinn_extra.h:1018
@ ROUTER_P2P_ROUTE_W
Route west.
Definition: spinn_extra.h:1022
@ ROUTER_P2P_ROUTE_N
Route north.
Definition: spinn_extra.h:1020
@ ROUTER_P2P_ROUTE_MONITOR
Definition: spinn_extra.h:1031
@ ROUTER_P2P_ROUTE_S
Route south.
Definition: spinn_extra.h:1026
@ ROUTER_P2P_ROUTE_E
Route east.
Definition: spinn_extra.h:1016
@ ROUTER_P2P_ROUTE_SW
Route south-west.
Definition: spinn_extra.h:1024
@ ROUTER_P2P_ROUTE_DROP
Drop packet.
Definition: spinn_extra.h:1028
sc_magic_proc_map_t cpu_hard_reset_level
Level control of CPU node resets.
Definition: spinn_extra.h:1731
uint entire_chip
Entire chip (pulse reset only)
Definition: spinn_extra.h:1490
sc_magic_proc_map_t cpu_soft_reset_pulse
Pulse control of CPU resets.
Definition: spinn_extra.h:1735
sdram_dll_user_config1_t config1
Test: fine tune.
Definition: spinn_extra.h:1415
uint tcm_error_interrupt
interrupt if dma_status_t::tcm_error set
Definition: spinn_extra.h:440
uint pattern_payload
packets with [x1]/without [1x] payload
Definition: spinn_extra.h:985
uint error_free
Rx packet received without error.
Definition: spinn_extra.h:643
router_diagnostic_counter_ctrl_t diagnostic_counter_control
diagnostic counter enables
Definition: spinn_extra.h:955
uint size
0 = 16 bit, 1 = 32 bit
Definition: spinn_extra.h:248
uint s5
Input select for delay line 5 {def, alt, 0, 1}.
Definition: spinn_extra.h:1360
uint adiv
divide CPU clock A by Adiv+1 (= 1-4)
Definition: spinn_extra.h:1619
uint comm_tx
Debug communications transmitter interrupt.
Definition: spinn_extra.h:115
uint parity_error
Rx packet parity error (sticky)
Definition: spinn_extra.h:647
sdram_cas_latency_t cas_latency
CAS latency.
Definition: spinn_extra.h:1270
uint ethernet_rx
Ethernet receive frame interrupt.
Definition: spinn_extra.h:149
dma_global_control_t global_control
Control of the DMA device.
Definition: spinn_extra.h:492
uint output_divider
output clock divider
Definition: spinn_extra.h:1587
uint tx_links
Tx link 0-5.
Definition: spinn_extra.h:1484
uint address
address passed to memory device
Definition: spinn_extra.h:1158
sc_frequency_range
Frequency range constants for sc_pll_control_t::freq_range.
Definition: spinn_extra.h:1603
@ FREQ_50_100
50-100 MHz
Definition: spinn_extra.h:1607
@ FREQ_100_200
100-200 MHz
Definition: spinn_extra.h:1609
@ FREQ_25_50
25-50 MHz
Definition: spinn_extra.h:1605
@ FREQ_200_400
200-400 MHz
Definition: spinn_extra.h:1611
static volatile sdram_dll_t *const sdram_dll_control
SDRAM delay-locked-loop control registers.
Definition: spinn_extra.h:1440
const dma_status_t status
Status of DMA and other transfers.
Definition: spinn_extra.h:490
sc_monitor_id_t monitor_id
ID of Monitor Processor.
Definition: spinn_extra.h:1743
const router_status_t status
Router status.
Definition: spinn_extra.h:929
static volatile comms_ctl_t *const comms_control
Communications controller registers.
Definition: spinn_extra.h:690
uint control_byte
control byte of next sent packet
Definition: spinn_extra.h:611
static volatile vic_control_t *const vic_control
VIC registers.
Definition: spinn_extra.h:220
uint active
active chips: number for refresh generation
Definition: spinn_extra.h:1203
uint empty
Tx buffer empty.
Definition: spinn_extra.h:621
uint t_ras
RAS to precharge delay.
Definition: spinn_extra.h:1234
uint smi_out_enable
SMI data output enable.
Definition: spinn_extra.h:1880
static volatile router_p2p_table_entry_t *const router_p2p_route_table
Router peer-to-peer route table.
Definition: spinn_extra.h:1088
vic_mask_t int_select
interrupt select register
Definition: spinn_extra.h:186
uint power_down_delay
number of memory cycles before auto-power-down
Definition: spinn_extra.h:1193
uint length
Received packet length.
Definition: spinn_extra.h:1956
uint tx_disable
disables the corresponding link transmitter
Definition: spinn_extra.h:1699
uint interrupt_active_error
error packet interrupt active
Definition: spinn_extra.h:759
void * sdram_address
DMA address on the system interface.
Definition: spinn_extra.h:482
dma_transfer_unit_t
DMA burst width, see dma_description_t::width.
Definition: spinn_extra.h:360
@ DMA_TRANSFER_DOUBLE_WORD
Transfer in double-words.
Definition: spinn_extra.h:364
@ DMA_TRANSFER_WORD
Transfer in words.
Definition: spinn_extra.h:362
sc_magic
System controller magic numbers.
Definition: spinn_extra.h:1783
@ SYSTEM_CONTROLLER_MAGIC_NUMBER
Magic number for enabling writing to critical fields.
Definition: spinn_extra.h:1785
uint maximum
maximum QoS
Definition: spinn_extra.h:1282
uint tx_length
Length of transmit frame (60 - 1514 bytes)
Definition: spinn_extra.h:1860
uint s3
Input select for delay line 3 {def, alt, 0, 1}.
Definition: spinn_extra.h:1356
uint t_wr
write to precharge delay
Definition: spinn_extra.h:1246
uint set_cpu_ok
Writing a 1 sets a CPU OK bit.
Definition: spinn_extra.h:1725
timer_control_t control
Timer control register.
Definition: spinn_extra.h:288
sc_magic_proc_map_t processor_disable
Each bit disables a processor.
Definition: spinn_extra.h:1719
uint control
control byte; really a spinnaker_packet_control_byte_t
Definition: spinn_extra.h:787
uchar emergency_routing
Emergency routing control.
Definition: spinn_extra.h:587
uint enable_emergency_active_count
enable emergency router active cycle counter
Definition: spinn_extra.h:869
uint pattern_local
local [x1]/non-local[1x] packet source
Definition: spinn_extra.h:987
const router_error_status_t status
error packet status
Definition: spinn_extra.h:939
uint interrupt_enable
enable interrupt (1 = enabled)
Definition: spinn_extra.h:254
const timer_interrupt_status_t raw_interrupt_status
Timer raw interrupt status.
Definition: spinn_extra.h:292
uint ptr
Receive frame buffer read pointer.
Definition: spinn_extra.h:1904
uint dma_timeout
DMA controller transfer timed out.
Definition: spinn_extra.h:137
sdram_command_t command
PL340 command.
Definition: spinn_extra.h:1262
uint t_rc
active bank x to active bank x delay
Definition: spinn_extra.h:1236
dma_description_t description
DMA transfer descriptor; note that setting this commits a DMA.
Definition: spinn_extra.h:486
void * tcm_address
DMA address on the TCM interface.
Definition: spinn_extra.h:484
uint sdiv
divide System AHB clock by Sdiv+1 (= 1-4)
Definition: spinn_extra.h:1643
sc_magic_subsystem_map_t subsystem_reset_pulse
Pulse control of subsystem resets.
Definition: spinn_extra.h:1739
uint fr_processors
The physical processors to route FR packets to.
Definition: spinn_extra.h:917
uint reset_emergency_active_count
reset emergency router active cycle counter
Definition: spinn_extra.h:877
router_timing_counter_ctrl_t timing_counter_control
timing counter controls
Definition: spinn_extra.h:957
uint t_rfc
auto-refresh command time
Definition: spinn_extra.h:1240
uint whole_value
Whole value of lock; see watchdog_lock_codes.
Definition: spinn_extra.h:2022
uint receive_multicast
Receive multicast packets enable.
Definition: spinn_extra.h:1830
uint error_interrupt_enable
enable error packet interrupt
Definition: spinn_extra.h:721
const router_dump_outputs_t outputs
dumped packet intended destinations
Definition: spinn_extra.h:950
uchar emergency_routing
Emergency routing control.
Definition: spinn_extra.h:558
uint bridge_buffer_enable
enable Bridge write buffer
Definition: spinn_extra.h:428
const uint key
dumped packet routing word
Definition: spinn_extra.h:946
const ethernet_receive_pointer_t receive_read
Receive frame buffer read pointer.
Definition: spinn_extra.h:1940
uint timer1
Counter/timer interrupt 1.
Definition: spinn_extra.h:117
uint L
Force 3-phase bar-code control inputs.
Definition: spinn_extra.h:1376
uint test_5
Substitute delay line 5 for 4 for testing.
Definition: spinn_extra.h:1370
sc_io_t gpio_pull_up_down_enable
General-purpose IO pull up/down enable.
Definition: spinn_extra.h:1747
uint value
Whole mask as integer.
Definition: spinn_extra.h:174
uint write_buffer_error
a buffered write transfer has failed
Definition: spinn_extra.h:418
uint security_code
SYSTEM_CONTROLLER_MAGIC_NUMBER to enable write
Definition: spinn_extra.h:1707
uint start
start temperature measurement
Definition: spinn_extra.h:1681
const vic_mask_t irq_status
IRQ status register.
Definition: spinn_extra.h:180
uint drop_wait_time
wait2; wait time before dropping packet after entering emergency routing
Definition: spinn_extra.h:741
uint route_packets_enable
enable packet routing
Definition: spinn_extra.h:719
const void * current_sdram_address
Active system address.
Definition: spinn_extra.h:508
uint L3
Diversion rule for link 3.
Definition: spinn_extra.h:893
spinnaker_packet_type_t
SpiNNaker packet type codes.
Definition: spinn_extra.h:595
@ SPINNAKER_PACKET_TYPE_NN
Nearest-neighbour packet.
Definition: spinn_extra.h:601
@ SPINNAKER_PACKET_TYPE_FR
Fixed-route packet.
Definition: spinn_extra.h:603
@ SPINNAKER_PACKET_TYPE_P2P
Peer-to-peer packet.
Definition: spinn_extra.h:599
@ SPINNAKER_PACKET_TYPE_MC
Multicast packet.
Definition: spinn_extra.h:597
uint invert_b
invert CPU clock B
Definition: spinn_extra.h:1647
uint auto_power_down
auto-power-down memory when inactive
Definition: spinn_extra.h:1195
uint cmd
command passed to memory device
Definition: spinn_extra.h:1164
uint crc_error
the calculated and received CRCs differ
Definition: spinn_extra.h:406
uint framing_error
Rx packet framing error (sticky)
Definition: spinn_extra.h:645
router_p2p_route route2
Second packed route.
Definition: spinn_extra.h:1041
uint framing_error
packet framing error (error only)
Definition: spinn_extra.h:793
uint count_parity_errors
enable count of packet parity errors
Definition: spinn_extra.h:729
uint interrupted
True if interrupt asserted.
Definition: spinn_extra.h:2007
const ethernet_receive_descriptor_pointer_t receive_desc_read
Receive descriptor read pointer.
Definition: spinn_extra.h:1944
uint hardware_byte_reorder_disable
Disable hardware byte reordering.
Definition: spinn_extra.h:1840
uint stop_clock
stop memory clock when no access
Definition: spinn_extra.h:1197
uint input_multiplier
input clock multiplier
Definition: spinn_extra.h:1583
uint transfer2_done_interrupt
interrupt if dma_status_t::transfer2_done set
Definition: spinn_extra.h:434
uint uncommit
setting this bit uncommits a queued transfer
Definition: spinn_extra.h:370
uint temperature
temperature sensor reading
Definition: spinn_extra.h:1675
#define ASSERT_WORD_SIZED(type_ident)
Generates valid code if the named type is one word long, and invalid code otherwise.
Definition: spinn_extra.h:60
uchar payload
Payload-word-present flag.
Definition: spinn_extra.h:545
sc_clock_source
System controller clock sources.
Definition: spinn_extra.h:1653
@ CLOCK_SRC_PLL2
PLL2.
Definition: spinn_extra.h:1659
@ CLOCK_SRC_EXT
external 10MHz clock input
Definition: spinn_extra.h:1655
@ CLOCK_SRC_EXT4
external 10MHz clock divided by 4
Definition: spinn_extra.h:1661
@ CLOCK_SRC_PLL1
PLL1.
Definition: spinn_extra.h:1657
uint row
number of row address bits (11-16)
Definition: spinn_extra.h:1189
uint select
Bit-map for selecting a processor.
Definition: spinn_extra.h:1466
uint transferring
DMA transfer in progress.
Definition: spinn_extra.h:388
uint minimum
minimum QoS
Definition: spinn_extra.h:1280
sc_magic_proc_map_t clear_cpu_irq
Writing a 1 clears a processor’s interrupt line.
Definition: spinn_extra.h:1723
uint clk32
read value on Clk32 pin
Definition: spinn_extra.h:1550
uint smi_output
SMI data output.
Definition: spinn_extra.h:1878
uint t_rrd
active bank x to active bank y delay
Definition: spinn_extra.h:1244
sc_pll_control_t pll1_freq_control
PLL1 frequency control.
Definition: spinn_extra.h:1757
uint int1
External interrupt request 1.
Definition: spinn_extra.h:167
uint route
Rx route field of packet.
Definition: spinn_extra.h:789
static volatile sdram_controller_t *const sdram_control
SDRAM interface control registers.
Definition: spinn_extra.h:1431
uint multicast
error-free multicast packet received
Definition: spinn_extra.h:627
ethernet_phy_control_t phy_control
PHY control.
Definition: spinn_extra.h:1936
uint enable
interrupt enable
Definition: spinn_extra.h:210
router_p2p_route route5
Fifth packed route.
Definition: spinn_extra.h:1047
uint background_load_value
Background load value for Timer.
Definition: spinn_extra.h:296
sdram_dll_user_config0_t config0
Test: control.
Definition: spinn_extra.h:1413
static volatile uint *const router_key_table
Router multicast key table (write only!)
Definition: spinn_extra.h:1084
router_p2p_route route1
First packed route.
Definition: spinn_extra.h:1039
const uint crcr
CRC value in received block.
Definition: spinn_extra.h:496
uint point_to_point
error-free point-to-point packet received
Definition: spinn_extra.h:629
uint t_wtr
write to read delay
Definition: spinn_extra.h:1248
uint soft_reset
a soft reset of the DMA controller has happened
Definition: spinn_extra.h:414
uint timer2
Counter/timer interrupt 2.
Definition: spinn_extra.h:119
sdram_register_maxima
Maximum register IDs.
Definition: spinn_extra.h:1300
@ SDRAM_QOS_MAX
Maximum memory QoS register.
Definition: spinn_extra.h:1302
@ SDRAM_CHIP_MAX
Maximum memory chip configuration register.
Definition: spinn_extra.h:1304
dma_timeout_t timeout
Timeout value.
Definition: spinn_extra.h:498
uint power_up
Power UP.
Definition: spinn_extra.h:1593
uchar mem_or_normal
Type indicator.
Definition: spinn_extra.h:578
const uint emergency_active_cycle_count
counts emergency router active cycles
Definition: spinn_extra.h:961
uint route
Rx route field from packet.
Definition: spinn_extra.h:639
static volatile ethernet_controller_t *const ethernet_control
Ethernet MII controller registers.
Definition: spinn_extra.h:1978
uint ethermux
read value on Ethermux pin
Definition: spinn_extra.h:1548
uint int0
External interrupt request 0.
Definition: spinn_extra.h:165
uint user_abort_interrupt
interrupt if dma_status_t::user_abort set
Definition: spinn_extra.h:444
uint test_incing
Force Incing (if ID = 1)
Definition: spinn_extra.h:1366
const sdram_status_t status
memory controller status
Definition: spinn_extra.h:1260
uint L5
Diversion rule for link 5.
Definition: spinn_extra.h:897
uint fixed_route
error-free fixed-route packet received
Definition: spinn_extra.h:633
uint type
packet type: fr, nn, p2p, mc
Definition: spinn_extra.h:975
uint t_xsr
exit self-refresh command time
Definition: spinn_extra.h:1252
uint transfer2_done
2nd DMA transfer has completed without error
Definition: spinn_extra.h:402
uint timeout
a burst transfer has not completed in time
Definition: spinn_extra.h:404
uint timer
system-wide slow timer status and clear
Definition: spinn_extra.h:454
uint load_value
Load value for Timer.
Definition: spinn_extra.h:284
uint abort
end current transfer and discard data
Definition: spinn_extra.h:372
static volatile uint *const router_mask_table
Router multicast mask table (write only!)
Definition: spinn_extra.h:1086
sc_io_t io_port
I/O pin output register.
Definition: spinn_extra.h:1749
uint tx_key
Send MC key/P2P dest ID & seq code; writing this commits a send.
Definition: spinn_extra.h:671
uint locked
Phase comparator is locked.
Definition: spinn_extra.h:1334
uint L0
Diversion rule for link 0.
Definition: spinn_extra.h:887
uint transfer_done_interrupt
interrupt if dma_status_t::transfer_done set
Definition: spinn_extra.h:432
uint status
ARM968 STANDBYWFI signal for each core.
Definition: spinn_extra.h:1667
uint sys
clock selector for System AHB components; see sc_clock_source
Definition: spinn_extra.h:1641
uint width
Width of external memory: 2’b01 = 32 bits.
Definition: spinn_extra.h:1117
uint chip
chip number
Definition: spinn_extra.h:1166
uint transmit
Transmit system enable.
Definition: spinn_extra.h:1820
uint pattern_default
default [x1]/non-default [1x] routed packets
Definition: spinn_extra.h:983
uint t_rcd
RAS to CAS minimum delay.
Definition: spinn_extra.h:1238
uint rollover
Rollover bit - toggles on address wrap-around.
Definition: spinn_extra.h:1916
uint64 mac_address
MAC address; low 48 bits only.
Definition: spinn_extra.h:1934
const router_packet_header_t header
dumped packet control byte and flags
Definition: spinn_extra.h:944
uint half_cycle
CAS half cycle - must be set to 1’b0.
Definition: spinn_extra.h:1219
uint drop_counter
Receive dropped frame count.
Definition: spinn_extra.h:1854
uint cc_rx_p2p
Comms controller point-to-point packet received.
Definition: spinn_extra.h:159
uint s0
Input select for delay line 0 {def, alt, 0, 1}.
Definition: spinn_extra.h:1350
uint enable
Enable DLL (0 = reset DLL)
Definition: spinn_extra.h:1380
router_p2p_route route8
Eighth packed route.
Definition: spinn_extra.h:1053
uint enable_cycle_count
enable cycle counter
Definition: spinn_extra.h:867
uint counter_event_interrupt_active
counter interrupt active: I = E AND C
Definition: spinn_extra.h:997
uint qos
selects the 4-bit QoS field from the AXI ARID
Definition: spinn_extra.h:1201
uint smi_clock
SMI clock (active rising)
Definition: spinn_extra.h:1882
uint fr_links
The links to route FR packets along.
Definition: spinn_extra.h:915
uint receive_broadcast
Receive broadcast packets enable.
Definition: spinn_extra.h:1832
router_p2p_route route4
Fourth packed route.
Definition: spinn_extra.h:1045
vic_interrupt_handler_t vector_address
current vector address register
Definition: spinn_extra.h:200
uint link
Tx link transmit error caused packet dump.
Definition: spinn_extra.h:835
static volatile vic_vector_control_t *const vic_interrupt_control
VIC individual interrupt control. Array of 32 elements.
Definition: spinn_extra.h:227
uint time_phase
time phase (c.f. packet time stamps)
Definition: spinn_extra.h:731
uint cc_rx_mc
Comms controller multicast packet received.
Definition: spinn_extra.h:157
router_diversion_rule_t
Diversion rules for the fields of router_diversion_t.
Definition: spinn_extra.h:903
@ ROUTER_DIVERSION_NORMAL
Send on default route.
Definition: spinn_extra.h:905
@ ROUTER_DIVERSION_DESTROY
Destroy default-routed packets.
Definition: spinn_extra.h:909
@ ROUTER_DIVERSION_MONITOR
Divert to local monitor.
Definition: spinn_extra.h:907
uint router_dump
Router packet dumped - indicates failed delivery.
Definition: spinn_extra.h:141
uint count_framing_errors
enable count of packet framing errors
Definition: spinn_extra.h:727
uint pre_divide
divide input clock (see timer_pre_divide)
Definition: spinn_extra.h:250
uint value
Overall entry packed as number.
Definition: spinn_extra.h:1010
sc_clock_mux_t clock_mux_control
Clock multiplexer controls.
Definition: spinn_extra.h:1765
uint framing_error
packet framing error (sticky)
Definition: spinn_extra.h:823
uint count_timestamp_errors
enable count of packet time stamp errors
Definition: spinn_extra.h:725
ethernet_general_command_t command
General command.
Definition: spinn_extra.h:1924
dma_control_t control
Control DMA transfer.
Definition: spinn_extra.h:488
sdram_timing_config_t timing_config
timing configuration
Definition: spinn_extra.h:1272
uint period
memory refresh period in memory clock cycles
Definition: spinn_extra.h:1211
sc_reset_codes
System controller chip reset reasons.
Definition: spinn_extra.h:1506
@ SC_RESET_CODE_POR
Power-on reset.
Definition: spinn_extra.h:1508
@ SC_RESET_CODE_REC
Reset entire chip (sc_magic_subsystem_map_t::entire_chip)
Definition: spinn_extra.h:1514
@ SC_RESET_CODE_WDI
Watchdog interrupt.
Definition: spinn_extra.h:1516
@ SC_RESET_CODE_WDR
Watchdog reset.
Definition: spinn_extra.h:1510
@ SC_RESET_CODE_UR
User reset.
Definition: spinn_extra.h:1512
uint periodic_mode
0 = free-running; 1 = periodic
Definition: spinn_extra.h:256
uint parity_control
Router parity control.
Definition: spinn_extra.h:1703
const uint unblocked_count
counts packets that do not wait to be issued
Definition: spinn_extra.h:963
comms_source_addr_t source_addr
P2P source address.
Definition: spinn_extra.h:680
bool protection
protection register
Definition: spinn_extra.h:196
uint dma_error
DMA controller error.
Definition: spinn_extra.h:135
uint sample_finished
temperature measurement finished
Definition: spinn_extra.h:1677
uint timeout_interrupt
interrupt if dma_status_t::timeout set
Definition: spinn_extra.h:436
uint ethernet_transmit
Ethernet MII TxD port.
Definition: spinn_extra.h:1568
uint banks
Fixed at 1’b01 = 4 banks on a chip.
Definition: spinn_extra.h:1123
uint tcm_error
the TCM AHB interface has signalled an error
Definition: spinn_extra.h:408
uint cc_rx_nn
Comms controller nearest neighbour packet received.
Definition: spinn_extra.h:161
router_output_stage
Stages in router_status_t::output_stage.
Definition: spinn_extra.h:765
@ ROUTER_OUTPUT_STAGE_WAIT1
output stage is blocked in wait1
Definition: spinn_extra.h:771
@ ROUTER_OUTPUT_STAGE_EMPTY
output stage is empty
Definition: spinn_extra.h:767
@ ROUTER_OUTPUT_STAGE_FULL
output stage is full but unblocked
Definition: spinn_extra.h:769
@ ROUTER_OUTPUT_STAGE_WAIT2
output stage is blocked in wait2
Definition: spinn_extra.h:773
uint one_shot
0 = wrapping mode, 1 = one shot
Definition: spinn_extra.h:246
uint t_esr
self-refresh command time
Definition: spinn_extra.h:1254
sc_magic_proc_map_t cpu_hard_reset_pulse
Pulse control of CPU node resets.
Definition: spinn_extra.h:1737
vic_mask_t soft_int_disable
soft interrupt clear register
Definition: spinn_extra.h:194
uint comms_noc
Communications NoC.
Definition: spinn_extra.h:1482
vic_mask_t int_disable
interrupt enable clear register
Definition: spinn_extra.h:190
uint axi_error_interrupt
interrupt if dma_status_t::axi_error set
Definition: spinn_extra.h:442
const vic_mask_t raw_status
raw interrupt status register
Definition: spinn_extra.h:184
uint reset_on_watchdog
Reset Monitor Processor on Watchdog interrupt.
Definition: spinn_extra.h:1530
uint error
error packet detected
Definition: spinn_extra.h:829
const router_packet_header_t header
error packet control byte and flags
Definition: spinn_extra.h:933
uint clear_done_int
clear Done interrupt request
Definition: spinn_extra.h:376
uint receive
Receive system enable.
Definition: spinn_extra.h:1822
uint word
as a whole word
Definition: spinn_extra.h:811
uint time_phase
time phase when packet received/dumped
Definition: spinn_extra.h:783
uint slow_clock
System-wide slow (nominally 32 KHz) timer interrupt.
Definition: spinn_extra.h:153
uint clear_cpu_ok
Writing a 1 clears a CPU OK bit.
Definition: spinn_extra.h:1727
uint monitor_id
Monitor processor identifier.
Definition: spinn_extra.h:1522
static volatile uint *const router_diagnostic_counter
Router diagnostic counters.
Definition: spinn_extra.h:1078
uint processor
Fascicle Proc link error caused dump (sticky)
Definition: spinn_extra.h:847
uint link
Tx link error caused dump (sticky)
Definition: spinn_extra.h:845
const dma_description_t current_description
Active transfer description.
Definition: spinn_extra.h:512
static volatile sdram_chip_t *const sdram_chip_control
SDRAM chip control registers.
Definition: spinn_extra.h:1437
router_p2p_route route6
Sixth packed route.
Definition: spinn_extra.h:1049
const uint payload
error packet data payload
Definition: spinn_extra.h:937
uint auto_precharge_position
position of auto-pre-charge bit (10/8)
Definition: spinn_extra.h:1191
uint jtag
JTAG interface.
Definition: spinn_extra.h:1570
uint s1
Strobe 1 faster than Clock.
Definition: spinn_extra.h:1318
const uint cycle_count
counts Router clock cycles
Definition: spinn_extra.h:959
uint sdram
PL340 SDRAM controller.
Definition: spinn_extra.h:1478
uint axi_error
the AXI interface (SDRAM) has signalled a transfer error
Definition: spinn_extra.h:410
const sdram_dll_status_t status
Status.
Definition: spinn_extra.h:1411
uint orientation
bank-row-column/row-bank-column
Definition: spinn_extra.h:1294
static volatile uchar *const ethernet_rx_buffer
Ethernet receive buffer.
Definition: spinn_extra.h:1973
uint tune_4
Fine tuning control on delay line 4.
Definition: spinn_extra.h:1398
uint meter
Current position of bar-code output.
Definition: spinn_extra.h:1310
uint receive_unicast
Receive unicast packets enable.
Definition: spinn_extra.h:1828
uint R
Force 3-phase bar-code control inputs.
Definition: spinn_extra.h:1372
uint test_decing
Force Decing (if ID = 1)
Definition: spinn_extra.h:1364
uint restart
resume transfer (clears DMA errors)
Definition: spinn_extra.h:374
uint monitors
Number of exclusive access monitors (0, 1, 2, 4)
Definition: spinn_extra.h:1125
sc_magic_subsystem_map_t subsystem_reset_level
Level control of subsystem resets.
Definition: spinn_extra.h:1733
uint user_abort
the user has aborted the transfer (via dma_control_t::abort)
Definition: spinn_extra.h:412
uint interrupt_enable
Enable Watchdog counter and interrupt (1)
Definition: spinn_extra.h:1997
uint interrupt_clear
Interrupt clear register; any written value will do.
Definition: spinn_extra.h:2042
uint security_code
SYSTEM_CONTROLLER_MAGIC_NUMBER to enable write
Definition: spinn_extra.h:1470
uint payload
payload-present field from control byte
Definition: spinn_extra.h:804
uint software
Local software interrupt generation.
Definition: spinn_extra.h:111
static volatile timer_controller_t *const timer1_control
Timer 1 control registers.
Definition: spinn_extra.h:305
uint M
Force 3-phase bar-code control inputs.
Definition: spinn_extra.h:1374
uint rx_disable
disables the corresponding link receiver
Definition: spinn_extra.h:1695
static volatile dma_t *const dma_control
DMA control registers.
Definition: spinn_extra.h:527
uint route
Set 'fake' route in packet.
Definition: spinn_extra.h:659
ethernet_tx_length_t transmit_length
Transmit frame length.
Definition: spinn_extra.h:1928
uint receive
Clear receive interrupt request.
Definition: spinn_extra.h:1896
sdram_direct_command
Memory direct commands, for sdram_direct_command_t::cmd.
Definition: spinn_extra.h:1173
@ SDRAM_DIRECT_MODEREG
Mode Register.
Definition: spinn_extra.h:1179
@ SDRAM_DIRECT_AUTOREFRESH
Auto-Refresh.
Definition: spinn_extra.h:1177
@ SDRAM_DIRECT_PRECHARGE
Precharge.
Definition: spinn_extra.h:1175
@ SDRAM_DIRECT_NOP
No-op.
Definition: spinn_extra.h:1181
uint cc_tx_empty
Comms controller transmit buffer empty.
Definition: spinn_extra.h:131
const uint rx_data
32-bit received data
Definition: spinn_extra.h:675
uint jtag_rtck
read value on JTAG_RTCK pin
Definition: spinn_extra.h:1554
const uint rx_key
Received MC key/P2P source ID & seq code; reading this clears the received packet.
Definition: spinn_extra.h:678
sc_io_t io_set
Writing a 1 sets IO register bit.
Definition: spinn_extra.h:1753
uint test
read value on Test pin
Definition: spinn_extra.h:1546
uint mem
clock selector for SDRAM; see sc_clock_source
Definition: spinn_extra.h:1629
uint pattern_destination
packet dest (Tx link[5:0], MP, local ¬MP, dump)
Definition: spinn_extra.h:989
uint L1
Diversion rule for link 1.
Definition: spinn_extra.h:889
const uint key
error packet routing word
Definition: spinn_extra.h:935
uint enable
QoS enable.
Definition: spinn_extra.h:1278
uint t_dqss
write to DQS time
Definition: spinn_extra.h:1230
uint jtag_tdo
read value on JTAG_TDO pin
Definition: spinn_extra.h:1552
uint processors
The physical processors to route to.
Definition: spinn_extra.h:1007
uint emergency_routing
Emergency Routing field = 3, 2, 1 or 0.
Definition: spinn_extra.h:977
sc_magic_proc_map_t set_cpu_irq
Writing a 1 sets a processor’s interrupt line.
Definition: spinn_extra.h:1721
const uint payload
dumped packet data payload
Definition: spinn_extra.h:948
uint enable
Enable collecting DMA statistics.
Definition: spinn_extra.h:470
uint crc_error_interrupt
interrupt if dma_status_t::crc_error set
Definition: spinn_extra.h:438
uint s0
Strobe 0 faster than Clock.
Definition: spinn_extra.h:1314
uint received
Rx packet received.
Definition: spinn_extra.h:649
uint tune_0
Fine tuning control on delay line 0.
Definition: spinn_extra.h:1390
uint s2
Input select for delay line 2 {def, alt, 0, 1}.
Definition: spinn_extra.h:1354
static volatile router_diagnostic_filter_t *const router_diagnostic_filter
Router diagnostic filters.
Definition: spinn_extra.h:1075
uint crc
check (read) or generate (write) CRC
Definition: spinn_extra.h:340
uint error_count
16-bit saturating error count
Definition: spinn_extra.h:817
uint enable_force_inc_dec
Enable forcing of Incing and Decing.
Definition: spinn_extra.h:1368
uint column
number of column address bits (8-12)
Definition: spinn_extra.h:1187
uint paused
DMA transfer is PAUSED.
Definition: spinn_extra.h:390
uint clock_gen
System AHB & Clock Gen (pulse reset only)
Definition: spinn_extra.h:1488
uint reset_enable
Enable the Watchdog reset output (1)
Definition: spinn_extra.h:1999
uint not_full
Tx buffer not full, so it is safe to send a packet.
Definition: spinn_extra.h:615
uint t_mrd
mode register command time
Definition: spinn_extra.h:1232
uint tx_data
32-bit data for transmission
Definition: spinn_extra.h:669
const watchdog_status_t raw_status
Raw interrupt status register.
Definition: spinn_extra.h:2044
uint system_noc
System NoC.
Definition: spinn_extra.h:1480
uint router_error
Router error - packet parity, framing, or time stamp error.
Definition: spinn_extra.h:143
uint enable_counter_event_interrupt
enable interrupt on counter event
Definition: spinn_extra.h:995
uint cc_rx_ready
Comms controller packet received.
Definition: spinn_extra.h:121
uint processor
Fascicle Processor link error caused dump.
Definition: spinn_extra.h:837
uint dma_done
DMA controller transfer complete.
Definition: spinn_extra.h:133
uint word
Tuning control word.
Definition: spinn_extra.h:1405
dma_direction_t
DMA transfer direction, see dma_description_t::direction.
Definition: spinn_extra.h:352
@ DMA_DIRECTION_WRITE
write to system bus (SDRAM)
Definition: spinn_extra.h:356
@ DMA_DIRECTION_READ
read from system bus (SDRAM)
Definition: spinn_extra.h:354
uint reset_flags
Reset flags register.
Definition: spinn_extra.h:1763
uint rdiv
divide Router clock by Rdiv+1 (= 1-4)
Definition: spinn_extra.h:1637
comms_rx_status_t rx_status
Indicates packet reception status.
Definition: spinn_extra.h:673
const ethernet_general_status_t status
General status.
Definition: spinn_extra.h:1926
const sc_reset_code_t reset_code
Indicates cause of last chip reset.
Definition: spinn_extra.h:1741
sc_misc_control_t misc_control
Miscellaneous control bits.
Definition: spinn_extra.h:1745
ushort reset
write a 1 to reset diagnostic counter 15..0
Definition: spinn_extra.h:861
uint cc_tx_overflow
Comms controller transmit buffer overflow.
Definition: spinn_extra.h:129
uint receive_promiscuous
Receive promiscuous packets enable.
Definition: spinn_extra.h:1834
uint ethernet_tx
Ethernet transmit frame interrupt.
Definition: spinn_extra.h:147
uint reinit_wait_counters
re-initialise wait counters
Definition: spinn_extra.h:737
uint processor_id
hardwired processor ID identifies CPU on chip
Definition: spinn_extra.h:422
uint router_diagnostic
Router diagnostic counter event has occurred.
Definition: spinn_extra.h:139
uint cas_lat
CAS latency in memory clock cycles.
Definition: spinn_extra.h:1221
uint emergency_routing_mode
Emergency Routing mode.
Definition: spinn_extra.h:979
router_p2p_route route3
Third packed route.
Definition: spinn_extra.h:1043
uint freq_range
frequency range (see sc_frequency_range)
Definition: spinn_extra.h:1591
uint source
interrupt source
Definition: spinn_extra.h:208
const ethernet_receive_pointer_t receive_write
Receive frame buffer write pointer.
Definition: spinn_extra.h:1942
uint transfer_id
software defined transfer ID
Definition: spinn_extra.h:348
const uint value
Current count value.
Definition: spinn_extra.h:2038
uint s3
Strobe 3 faster than Clock.
Definition: spinn_extra.h:1326
uint c2
Clock faster than strobe 2.
Definition: spinn_extra.h:1324
ushort enable
enable diagnostic counter 15..0
Definition: spinn_extra.h:859
uint security_code
SYSTEM_CONTROLLER_MAGIC_NUMBER to enable write
Definition: spinn_extra.h:1494
uint arbitrate_request
Write 1 to set MP arbitration bit (see system_controller_t::monitor_arbiter)
Definition: spinn_extra.h:1526
timer_pre_divide
Values for timer_control_t::pre_divide.
Definition: spinn_extra.h:264
@ TIMER_PRE_DIVIDE_16
Divide by 16.
Definition: spinn_extra.h:268
@ TIMER_PRE_DIVIDE_256
Divide by 256.
Definition: spinn_extra.h:270
@ TIMER_PRE_DIVIDE_1
Divide by 1.
Definition: spinn_extra.h:266
ethernet_interrupt_clear_t interrupt_clear
Interrupt clear.
Definition: spinn_extra.h:1938
uint transmit_active
Transmit MII interface active.
Definition: spinn_extra.h:1848
void(* vic_interrupt_handler_t)(void)
The type of an interrupt handler.
Definition: spinn_extra.h:102
const void * current_tcm_address
Active TCM address.
Definition: spinn_extra.h:510
uint privilege
DMA transfer mode is user (0) or privileged (1)
Definition: spinn_extra.h:346
uint rollover
Rollover bit - toggles on address wrap-around.
Definition: spinn_extra.h:1906
uint smi_input
SMI data input.
Definition: spinn_extra.h:1876
uint gpio9
Signal on GPIO[9].
Definition: spinn_extra.h:171
uint tune_2
Fine tuning control on delay line 2.
Definition: spinn_extra.h:1394
uint reset_code
One of sc_reset_codes.
Definition: spinn_extra.h:1500
uint monitor_processor
Monitor Processor ID number.
Definition: spinn_extra.h:733
uint gpio
GPIO pins.
Definition: spinn_extra.h:1577
uint chips
Number of different chip selects (1, 2, 3, 4)
Definition: spinn_extra.h:1121
uint begin_emergency_wait_time
wait1; wait time before emergency routing
Definition: spinn_extra.h:739
uint counter_event_occurred
counter event has occurred (sticky)
Definition: spinn_extra.h:993
uint ethernet_phy
Ethernet PHY/external interrupt.
Definition: spinn_extra.h:151
uint write_buffer_full
write buffer is full
Definition: spinn_extra.h:394
uint status
The flag bit.
Definition: spinn_extra.h:276
uint burst
burst length = 2B×Width, B = 0..4 (i.e max 16)
Definition: spinn_extra.h:342
uint length_words
length of the DMA transfer, in words
Definition: spinn_extra.h:334
uint ptr
Receive descriptor read pointer.
Definition: spinn_extra.h:1914
uint t_rp
precharge to RAS delay
Definition: spinn_extra.h:1242
sc_magic_proc_map_t cpu_soft_reset_level
Level control of CPU resets.
Definition: spinn_extra.h:1729
uint watchdog
Watchdog timer interrupt.
Definition: spinn_extra.h:109
uint write_buffer_error_interrupt
interrupt if dma_status_t::write_buffer_error set
Definition: spinn_extra.h:450
uint tune_3
Fine tuning control on delay line 3.
Definition: spinn_extra.h:1396
uchar route
Routing information.
Definition: spinn_extra.h:576
uint c0
Clock faster than strobe 0.
Definition: spinn_extra.h:1316
uint interrupt_active
combined Router interrupt request
Definition: spinn_extra.h:761
uint status
Config, ready, paused, low-power.
Definition: spinn_extra.h:1115
uint interrupt_clear
Interrupt clear (any value may be written)
Definition: spinn_extra.h:290
SpiNNaker communications controller registers.
Definition: spinn_extra.h:665
Indicates packet reception status.
Definition: spinn_extra.h:625
P2P source address.
Definition: spinn_extra.h:653
Controls packet transmission.
Definition: spinn_extra.h:607
DMA control register.
Definition: spinn_extra.h:368
DMA descriptor.
Definition: spinn_extra.h:330
DMA global control register.
Definition: spinn_extra.h:426
DMA statistics control register.
Definition: spinn_extra.h:468
DMA status register.
Definition: spinn_extra.h:386
DMA controller registers.
Definition: spinn_extra.h:478
DMA timeout register.
Definition: spinn_extra.h:458
Ethernet controller registers.
Definition: spinn_extra.h:1922
Ethernet general command.
Definition: spinn_extra.h:1818
Ethernet general status.
Definition: spinn_extra.h:1846
Ethernet interrupt clear register.
Definition: spinn_extra.h:1890
Ethernet PHY (physical layer) control.
Definition: spinn_extra.h:1872
Ethernet receive descriptor pointer.
Definition: spinn_extra.h:1912
Ethernet received message descriptor.
Definition: spinn_extra.h:1954
Ethernet receive data pointer.
Definition: spinn_extra.h:1902
Ethernet frame transmit length.
Definition: spinn_extra.h:1858
Router control register.
Definition: spinn_extra.h:717
Router diagnostic counter enable/reset.
Definition: spinn_extra.h:857
SpiNNaker router diagnostic filter.
Definition: spinn_extra.h:973
Router diversion rules, used to handle default-routed packets.
Definition: spinn_extra.h:885
Router dump outputs.
Definition: spinn_extra.h:833
Router dump status.
Definition: spinn_extra.h:843
Router error status.
Definition: spinn_extra.h:815
Fixed route and nearest neighbour packet routing control.
Definition: spinn_extra.h:913
Router status.
Definition: spinn_extra.h:745
SpiNNaker router controller registers.
Definition: spinn_extra.h:925
Packet-dump-related registers.
Definition: spinn_extra.h:942
Error-related registers.
Definition: spinn_extra.h:931
Router timing counter controls.
Definition: spinn_extra.h:865
System controller clock multiplexing control.
Definition: spinn_extra.h:1615
System controller processor select.
Definition: spinn_extra.h:1464
System controller subsystem reset target select.
Definition: spinn_extra.h:1474
System controller miscellaneous control.
Definition: spinn_extra.h:1538
System controller monitor election control.
Definition: spinn_extra.h:1520
System controller mutex/interlock.
Definition: spinn_extra.h:1685
System controller phase-locked-loop control.
Definition: spinn_extra.h:1581
System controller last reset status.
Definition: spinn_extra.h:1498
System controller sleep status.
Definition: spinn_extra.h:1665
System controller temperature status/control.
Definition: spinn_extra.h:1673
Memory CAS latency.
Definition: spinn_extra.h:1217
Memory chip configuration.
Definition: spinn_extra.h:1288
Memory controller command.
Definition: spinn_extra.h:1131
Memory controller registers.
Definition: spinn_extra.h:1258
Memory controller direct command.
Definition: spinn_extra.h:1156
Memory delay-locked-loop (DLL) test and status inputs.
Definition: spinn_extra.h:1308
SDRAM delay-locked-loop (DLL) control registers.
Definition: spinn_extra.h:1409
Memory delay-locked-loop (DLL) test and control outputs.
Definition: spinn_extra.h:1348
Memory QoS settings.
Definition: spinn_extra.h:1276
Memory configuration.
Definition: spinn_extra.h:1185
Memory refresh period.
Definition: spinn_extra.h:1209
Memory controller status.
Definition: spinn_extra.h:1113
Memory timimg configuration.
Definition: spinn_extra.h:1228
Fixed-route packet only fields.
Definition: spinn_extra.h:583
Multicast packet only fields.
Definition: spinn_extra.h:554
Nearest-neighbour packet only fields.
Definition: spinn_extra.h:572
Peer-to-peer packet only fields.
Definition: spinn_extra.h:563
System controller registers.
Definition: spinn_extra.h:1715
Timer control register.
Definition: spinn_extra.h:244
Timer controller registers.
Definition: spinn_extra.h:282
Timer interrupt status flag.
Definition: spinn_extra.h:274
VIC registers.
Definition: spinn_extra.h:178
VIC individual vector control.
Definition: spinn_extra.h:206
Watchdog timer control register.
Definition: spinn_extra.h:1995
Watchdog timer control registers.
Definition: spinn_extra.h:2034
Watchdog timer status registers.
Definition: spinn_extra.h:2005
SpiNNaker router multicast route.
Definition: spinn_extra.h:1001
A packed word in the P2P routing table.
Definition: spinn_extra.h:1035
Router error/dump header.
Definition: spinn_extra.h:777
System controller general chip I/O pin access.
Definition: spinn_extra.h:1560
Memory delay-locked-loop (DLL) fine-tune control.
Definition: spinn_extra.h:1386
The control byte of a SpiNNaker packet.
Definition: spinn_extra.h:539
Mask describing interrupts that can be selected.
Definition: spinn_extra.h:105
Watchdog timer lock register.
Definition: spinn_extra.h:2013