PAPER_Correlator_Netcfg - david-macmahon/wiki_convert_test GitHub Wiki
PAPER 256 Input Correlator 10 GbE Network Configuration
Switches
The PAPER correlator uses a split switch design with two switches. One switch, referred to as the "low switch", handles the low half of the band. The other switch, referred to as the "high switch", handles the high half of the band.
10 GbE ports
The 256 input correlator has 8 ROACH2s. Each ROACH2 has eight 10 GbE ports: two are connected to the low switch, two are connected to the high switch, and the remaining four are connected directly to X engine NICs.
Because the data is split by frquency channel, we can prevent the need for a "loopback FIFO" through clever transmission of the data. Packets destined for a given 10 GbE port will be sent out the other 10 GbE port connected to the same switch. For example, one 10 GbE core will send data for the lowest quarter of the band. This data will be distributed to port 0 of all eight ROACH2s, so the loopback FIFO can be avoided by sending this data out port 2. Likewise, the data for the second lowest quarter of the band gets distributed to port 2 of all eight ROACH2s, so sending that out port 0 avoids the need for a loopback FIFO. This works because ports 0 and 2 are both connected to the same switch (e.g. the low switch via mezzanine card 0).
The following table describes each of the eight 10 GbE ports on all eight ROACH2s. The ROACH2s are identified as "pf1" through "pf8" ("pf" is short for "PAPER F engine"). The X engine computers are identified as "px1" through "px8" ("px" is short for "PAPER X engine"). Each X engine computer has four 10 GbE ports: eth2, eth3, eth4, and eth5.
ROACH2 | Dev Name | Mezz | Port | IP Address | Connected to | Data transmitted from ROACH2 |
---|---|---|---|---|---|---|
pf1 | eth_0_sw | 0 | 0 | 10.10.10.32 | Low switch P01 | Channels 256 to 511 from this ROACH2 |
pf1 | eth_0_gpu | 0 | 1 | 10.10.2.1 | px1:eth2 XID=00 | Channels 0 to 31 from all ROACH2s |
pf1 | eth_1_sw | 0 | 2 | 10.10.10.40 | Low switch P02 | Channels 0 to 255 from this ROACH2 |
pf1 | eth_1_gpu | 0 | 3 | 10.10.3.1 | px1:eth3 XID=08 | Channels 256 to 287 from all ROACH2s |
pf1 | eth_2_sw | 1 | 0 | 10.10.10.48 | High switch P01 | Channels 768 to 1023 from this ROACH2 |
pf1 | eth_2_gpu | 1 | 1 | 10.10.4.1 | px1:eth4 XID=16 | Channels 512 to 543 from all ROACH2s |
pf1 | eth_3_sw | 1 | 2 | 10.10.10.56 | High switch P02 | Channels 512 to 767 from this ROACH2 |
pf1 | eth_3_gpu | 1 | 3 | 10.10.5.1 | px1:eth5 XID=24 | Channels 768 to 799 from all ROACH2s |
pf2 | eth_0_sw | 0 | 0 | 10.10.10.33 | Low switch P03 | Channels 256 to 511 from this ROACH2 |
pf2 | eth_0_gpu | 0 | 1 | 10.10.2.2 | px2:eth2 XID=01 | Channels 32 to 63 from all ROACH2s |
pf2 | eth_1_sw | 0 | 2 | 10.10.10.41 | Low switch P04 | Channels 0 to 255 from this ROACH2 |
pf2 | eth_1_gpu | 0 | 3 | 10.10.3.2 | px2:eth3 XID=09 | Channels 288 to 319 from all ROACH2s |
pf2 | eth_2_sw | 1 | 0 | 10.10.10.49 | High switch P03 | Channels 768 to 1023 from this ROACH2 |
pf2 | eth_2_gpu | 1 | 1 | 10.10.4.2 | px2:eth4 XID=17 | Channels 544 to 575 from all ROACH2s |
pf2 | eth_3_sw | 1 | 2 | 10.10.10.57 | High switch P04 | Channels 512 to 767 from this ROACH2 |
pf2 | eth_3_gpu | 1 | 3 | 10.10.5.2 | px2:eth5 XID=25 | Channels 800 to 831 from all ROACH2s |
pf3 | eth_0_sw | 0 | 0 | 10.10.10.34 | Low switch P05 | Channels 256 to 511 from this ROACH2 |
pf3 | eth_0_gpu | 0 | 1 | 10.10.2.3 | px3:eth2 XID=02 | Channels 64 to 95 from all ROACH2s |
pf3 | eth_1_sw | 0 | 2 | 10.10.10.42 | Low switch P06 | Channels 0 to 255 from this ROACH2 |
pf3 | eth_1_gpu | 0 | 3 | 10.10.3.3 | px3:eth3 XID=10 | Channels 320 to 351 from all ROACH2s |
pf3 | eth_2_sw | 1 | 0 | 10.10.10.50 | High switch P05 | Channels 768 to 1023 from this ROACH2 |
pf3 | eth_2_gpu | 1 | 1 | 10.10.4.3 | px3:eth4 XID=18 | Channels 576 to 607 from all ROACH2s |
pf3 | eth_3_sw | 1 | 2 | 10.10.10.58 | High switch P06 | Channels 512 to 767 from this ROACH2 |
pf3 | eth_3_gpu | 1 | 3 | 10.10.5.3 | px3:eth5 XID=26 | Channels 832 to 863 from all ROACH2s |
pf4 | eth_0_sw | 0 | 0 | 10.10.10.35 | Low switch P07 | Channels 256 to 511 from this ROACH2 |
pf4 | eth_0_gpu | 0 | 1 | 10.10.2.4 | px4:eth2 XID=03 | Channels 96 to 127 from all ROACH2s |
pf4 | eth_1_sw | 0 | 2 | 10.10.10.43 | Low switch P08 | Channels 0 to 255 from this ROACH2 |
pf4 | eth_1_gpu | 0 | 3 | 10.10.3.4 | px4:eth3 XID=11 | Channels 352 to 383 from all ROACH2s |
pf4 | eth_2_sw | 1 | 0 | 10.10.10.51 | High switch P07 | Channels 768 to 1023 from this ROACH2 |
pf4 | eth_2_gpu | 1 | 1 | 10.10.5.4 | px4:eth4 XID=19 | Channels 608 to 639 from all ROACH2s |
pf4 | eth_3_sw | 1 | 2 | 10.10.10.59 | High switch P08 | Channels 512 to 767 from this ROACH2 |
pf4 | eth_3_gpu | 1 | 3 | 10.10.5.4 | px4:eth5 XID=27 | Channels 864 to 895 from all ROACH2s |
pf5 | eth_0_sw | 0 | 0 | 10.10.10.36 | Low switch P09 | Channels 256 to 511 from this ROACH2 |
pf5 | eth_0_gpu | 0 | 1 | 10.10.2.5 | px5:eth2 XID=04 | Channels 128 to 159 from all ROACH2s |
pf5 | eth_1_sw | 0 | 2 | 10.10.10.44 | Low switch P10 | Channels 0 to 255 from this ROACH2 |
pf5 | eth_1_gpu | 0 | 3 | 10.10.3.5 | px5:eth3 XID=12 | Channels 384 to 415 from all ROACH2s |
pf5 | eth_2_sw | 1 | 0 | 10.10.10.52 | High switch P09 | Channels 768 to 1023 from this ROACH2 |
pf5 | eth_2_gpu | 1 | 1 | 10.10.4.5 | px5:eth4 XID=20 | Channels 640 to 671 from all ROACH2s |
pf5 | eth_3_sw | 1 | 2 | 10.10.10.60 | High switch P10 | Channels 512 to 767 from this ROACH2 |
pf5 | eth_3_gpu | 1 | 3 | 10.10.5.5 | px5:eth5 XID=28 | Channels 896 to 927 from all ROACH2s |
pf6 | eth_0_sw | 0 | 0 | 10.10.10.37 | Low switch P11 | Channels 256 to 511 from this ROACH2 |
pf6 | eth_0_gpu | 0 | 1 | 10.10.2.6 | px6:eth2 XID=05 | Channels 160 to 191 from all ROACH2s |
pf6 | eth_1_sw | 0 | 2 | 10.10.10.45 | Low switch P12 | Channels 0 to 255 from this ROACH2 |
pf6 | eth_1_gpu | 0 | 3 | 10.10.3.6 | px6:eth3 XID=13 | Channels 416 to 447 from all ROACH2s |
pf6 | eth_2_sw | 1 | 0 | 10.10.10.53 | High switch P11 | Channels 768 to 1023 from this ROACH2 |
pf6 | eth_2_gpu | 1 | 1 | 10.10.4.6 | px6:eth4 XID=21 | Channels 672 to 703 from all ROACH2s |
pf6 | eth_3_sw | 1 | 2 | 10.10.10.61 | High switch P12 | Channels 512 to 767 from this ROACH2 |
pf6 | eth_3_gpu | 1 | 3 | 10.10.5.6 | px6:eth5 XID=29 | Channels 928 to 959 from all ROACH2s |
pf7 | eth_0_sw | 0 | 0 | 10.10.10.38 | Low switch P13 | Channels 256 to 511 from this ROACH2 |
pf7 | eth_0_gpu | 0 | 1 | 10.10.2.7 | px7:eth2 XID=06 | Channels 192 to 223 from all ROACH2s |
pf7 | eth_1_sw | 0 | 2 | 10.10.10.46 | Low switch P14 | Channels 0 to 255 from this ROACH2 |
pf7 | eth_1_gpu | 0 | 3 | 10.10.3.7 | px7:eth3 XID=14 | Channels 448 to 479 from all ROACH2s |
pf7 | eth_2_sw | 1 | 0 | 10.10.10.54 | High switch P13 | Channels 768 to 1023 from this ROACH2 |
pf7 | eth_2_gpu | 1 | 1 | 10.10.4.7 | px7:eth4 XID=22 | Channels 704 to 735 from all ROACH2s |
pf7 | eth_3_sw | 1 | 2 | 10.10.10.62 | High switch P14 | Channels 512 to 767 from this ROACH2 |
pf7 | eth_3_gpu | 1 | 3 | 10.10.5.7 | px7:eth5 XID=30 | Channels 960 to 991 from all ROACH2s |
pf8 | eth_0_sw | 0 | 0 | 10.10.10.39 | Low switch P15 | Channels 256 to 511 from this ROACH2 |
pf8 | eth_0_gpu | 0 | 1 | 10.10.2.8 | px8:eth2 XID=07 | Channels 224 to 255 from all ROACH2s |
pf8 | eth_1_sw | 0 | 2 | 10.10.10.47 | Low switch P16 | Channels 0 to 255 from this ROACH2 |
pf8 | eth_1_gpu | 0 | 3 | 10.10.3.8 | px8:eth3 XID=15 | Channels 480 to 511 from all ROACH2s |
pf8 | eth_2_sw | 1 | 0 | 10.10.10.55 | High switch P15 | Channels 768 to 1023 from this ROACH2 |
pf8 | eth_2_gpu | 1 | 1 | 10.10.4.8 | px8:eth4 XID=23 | Channels 736 to 767 from all ROACH2s |
pf8 | eth_3_sw | 1 | 2 | 10.10.10.63 | High switch P16 | Channels 512 to 767 from this ROACH2 |
pf8 | eth_3_gpu | 1 | 3 | 10.10.5.8 | px8:eth5 XID=31 | Channels 992 to 1023 from all ROACH2s |
Corner Turner Modes (CTMODE)
To allow full-scale corner turner and X engine testing using a subset of hardware, the F engine supports four different corner turner modes. The corner turner mode is specified by the 2 least significant bits of the "ctmode" software register. Each mode utilizes a different sized subset of hardware. CTMODE 0 utilizes all 8 F engines and all 32 X engines. This is the mode for normal operation. The other three modes use fewer F engines and fewer X engines. In these subset modes, the utilized F engines produce data for fewer inputs yet more channels than the utilized X engines will process. Fortunately, the data volume of the extra channels exactly equals the data volume of the missing inputs. In the subset modes, the F engines relabel the data so that each X engine thinks it is getting 32 channels for all 256 inputs. This relabeling of data involves swapping bits between FID and XID fields in the packet header. The relabeling is described below using the following conventions:
- Lowercase "fid" is the 3-bit value from the low 3 bits of the fid software register. Represented as fid[2:0].
- Lowercase "xid" is the 5-bit value from the top 5 bits of the channel number. Represented as xid[4:0].
- Uppercase "FID" is the 3-bit FID field in the packet header.
- Uppercase "XID" is the 5-bit XID field in the packet header.
8 F engines (CTMODE 0)
This is the normal mode of operation where all 8 F engines exchange data with all 32 X engines. FID is fid register value. XID is the top 5 bits of the channel number. The 256 inputs by 1024 channels are presented to the X engines as exactly that.
FID=fid[2:0]
XID=xid[4:0]
4 F engines (CTMODE 1)
In this mode of operation, a group of four F engines (either 0-3 or 4-7) exchange data with 16 X engines. The 128 inputs by 1024 channels are presented to the X engines as 256 inputs by 512 channels.
FID={ xid[2], fid[1:0]}
XID={xid[4,3], fid[2], xid[1:0]}
2 F engines (CTMODE 2)
In this mode of operation, a pair of F engines (either 0-1, 2-3, 4-5, or 6-7) exchange data with 8 X engines. The 64 inputs by 1024 channels are presented to the X engines as 256 inputs by 256 channels.
FID={ xid[2:1], fid[0]}
XID={xid[4,3], fid[2:1], xid[0]}
1 F engine (CTMODE 3)
In this mode of operation, a single F engine exchanges data with 4 X engines. The 32 inputs by 1024 channels are presented to the X engines as 256 inputs by 128 channels.
FID={ xid[2:0]}
XID={xid[4,3], fid[2:0]}
MIRIAD Channel Mapping
MIR ChLo | MIR ChHi | FFT ChHi | FFT ChLo | XID | X Eng |
---|---|---|---|---|---|
1 | 32 | 1023 | 992 | XID 31 | px8/3 |
33 | 64 | 991 | 960 | XID 30 | px7/3 |
65 | 96 | 959 | 928 | XID 29 | px6/3 |
97 | 128 | 927 | 896 | XID 28 | px5/3 |
129 | 160 | 895 | 864 | XID 27 | px4/3 |
161 | 192 | 863 | 832 | XID 26 | px3/3 |
193 | 224 | 831 | 800 | XID 25 | px2/3 |
225 | 256 | 799 | 768 | XID 24 | px1/3 |
257 | 288 | 767 | 736 | XID 23 | px8/2 |
289 | 320 | 735 | 704 | XID 22 | px7/2 |
321 | 352 | 703 | 672 | XID 21 | px6/2 |
353 | 384 | 671 | 640 | XID 20 | px5/2 |
385 | 416 | 639 | 608 | XID 19 | px4/2 |
417 | 448 | 607 | 576 | XID 18 | px3/2 |
449 | 480 | 575 | 544 | XID 17 | px2/2 |
481 | 512 | 543 | 512 | XID 16 | px1/2 |
513 | 544 | 511 | 480 | XID 15 | px8/1 |
545 | 576 | 479 | 448 | XID 14 | px7/1 |
577 | 608 | 447 | 416 | XID 13 | px6/1 |
609 | 640 | 415 | 384 | XID 12 | px5/1 |
641 | 672 | 383 | 352 | XID 11 | px4/1 |
673 | 704 | 351 | 320 | XID 10 | px3/1 |
705 | 736 | 319 | 288 | XID 9 | px2/1 |
737 | 768 | 287 | 256 | XID 8 | px1/1 |
769 | 800 | 255 | 224 | XID 7 | px8/0 |
801 | 832 | 223 | 192 | XID 6 | px7/0 |
833 | 864 | 191 | 160 | XID 5 | px6/0 |
865 | 896 | 159 | 128 | XID 4 | px5/0 |
897 | 928 | 127 | 96 | XID 3 | px4/0 |
929 | 960 | 95 | 64 | XID 2 | px3/0 |
961 | 992 | 63 | 32 | XID 1 | px2/0 |
993 | 1024 | 31 | 0 | XID 0 | px1/0 |