Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2201 commits
Select commit Hold shift + click to select a range
3bc9ece
Merge branch 'openpiton-dev' into ft/DDR4_acc
Aug 30, 2024
4d9f5b8
Fix of rounding in UART divisor calculation, critical for low freq (2…
Aug 30, 2024
b2f1baf
Update accelerator_def.csv to default NO option
Sep 12, 2024
832721b
Merge branch 'ft/CMS_acc' into 'production'
Sep 16, 2024
e4f55d7
Sync with production.
Sep 16, 2024
102ceed
`accelerator_def.csv`: update of memory type notion for PCIe/Eth/Aurora
Sep 16, 2024
d611ad1
`meep_shell/accelerator_def.csv `: adding support of multiple AXI por…
Sep 18, 2024
263e321
Eth test app: extending HBM case to DDR option.
Sep 19, 2024
ec1bbff
100GbE: update of Xilinx bare-metal drivers to 2024.1
Sep 23, 2024
83b681c
#TestCICD Merge branch 'ft/DDR4_acc' into production_origCVA6
Sep 25, 2024
c7c6ca3
Merge branch 'production_origCVA6' into 'production'
Sep 27, 2024
a255cf1
Merge branch 'production_origCVA6' into merge/openpiton-dev_upstr
Sep 27, 2024
31b5622
#TestCICD Using `git apply` for Ariane patching.
Sep 29, 2024
9547313
#TestCICD Merge branch 'production_origCVA6' into 'production'
Sep 29, 2024
3d0cb7e
Merge branch 'production_origCVA6' into merge/openpiton-dev_upstr
Sep 29, 2024
668a127
Merge branch 'merge/bsc_ariane_patch' into 'production'
Sep 30, 2024
50966d8
#TestCICD Board dependent parameter for SDRAM address width (DDR or …
Oct 2, 2024
e898e4d
Merge branch 'production_origCVA6' into merge/DRAM_addr
Oct 2, 2024
a5cf4e6
Merge branch 'merge/DRAM_addr' into 'production'
Oct 3, 2024
ad39b4f
Merge branch 'production_origCVA6' into merge/openpiton-dev_upstr
Oct 3, 2024
e935d99
Removing non-submodule based 100GbE.
Jan 10, 2025
be5a185
#TestCICD Replacing just TCL file for 100GbE with a repo as submodul…
Jan 13, 2025
41d14ff
Merge branch 'production_origCVA6' into 'production'
Jan 17, 2025
98b0ccd
Merge remote-tracking branch 'origin/production_origCVA6' into merge/…
Jan 20, 2025
4a9388d
Initial user interface in protosyn and multi-channel NOC->AXI-St bridge.
Jan 20, 2025
58f0703
#TestCICD Update of 100GbE IP: making single DMA master port configu…
Jan 29, 2025
7774c2f
Merge branch 'production_origCVA6' into ft/upd100GbE
Jan 29, 2025
965bb46
Merge branch 'ft/upd100GbE' into 'production'
Jan 30, 2025
6ad7aac
#TestCICD 100GbE: some updates of both sw apps: syst and proto.
Jan 31, 2025
e0b5aa4
Merge branch 'production_origCVA6' into 'production'
Feb 1, 2025
d98ef70
Merge branch 'production_origCVA6' into merge/openpiton-dev_upstr
Feb 3, 2025
97c488a
Merge branch 'production_origCVA6' into merge/openpiton-dev_upstr
Feb 3, 2025
ad59c69
#TestCICD Extension of using embedded 100GbE with DRAM as DMA memory.
Feb 20, 2025
5ce45ce
#TestCICD After adding 322MHz 100GbE domain, update of placement con…
Feb 20, 2025
70d1e59
Merge branch 'production_origCVA6' into merge/openpiton-dev_upstr
Feb 23, 2025
35149f1
Merge branch 'merge/openpiton-dev_upstr' into openpiton-dev_upst
Feb 24, 2025
8a500f6
Merge branch 'production_origCVA6' into 'production'
Feb 25, 2025
078b7e2
Merge remote-tracking branch 'origin/production_origCVA6' into dev/mu…
Feb 25, 2025
6673bcf
#TestCICD Introduction of non-cached logical access to DRAM through …
Feb 27, 2025
57ed727
Merge branch 'production_origCVA6' into merge/openpiton-dev_upstr
Feb 28, 2025
fe4d1b6
Removing all physical hardware under `PITON_NONCACH_MEM` and `PROTOSY…
Feb 28, 2025
7260f2b
Merge branch 'production_origCVA6' into 'production'
Mar 1, 2025
021c656
Merge branch 'merge/openpiton-dev_upstr' into openpiton-dev_upst
Mar 2, 2025
c284bc4
Merge branch 'production_origCVA6' into dev/multi-fpga
Mar 3, 2025
983dd62
#TestCICD Moving Ethernet specific constraints inside 100GbE submodule.
Mar 5, 2025
9cc9e29
Merge branch 'production_origCVA6' into merge/openpiton-dev_upstr
Mar 5, 2025
122fecc
Merge remote-tracking branch 'origin/production_origCVA6' into dev/mu…
Mar 5, 2025
57cf1e2
Merge branch 'merge/openpiton-dev_upstr' into openpiton-dev_upst
Mar 6, 2025
79253c0
Merge branch 'production_origCVA6' into 'production'
Mar 6, 2025
a9ef3d4
Adding separated wiring for NOC connection between tiles, tested on 2…
Mar 7, 2025
b0a07a9
Adding credit2valrdy and valrdy2credit conversions in between tile NO…
Mar 7, 2025
71f4ac0
Better separation of NOC channels in `valrdy` domain.
Mar 11, 2025
b9062cd
Insertion of Xilinx AXI-Stream interconnect (single-channel CDC confi…
Mar 12, 2025
271d582
Applying inverse clock to CDC stage of Xilinx AXI-St interconnect for…
Mar 13, 2025
10b7b5c
Enabling 3->1 and 1->3 cross-mux in Xilinx AXI-St interconnects and u…
Mar 15, 2025
bf9801b
Update of arbitrage in `nocs_muxer` based on AXI-St `TLAST` signal.
Mar 17, 2025
23c2eaf
Number of muxed-demuxed NOC channels is extended to `3*PITON_NUM_TILE…
Mar 18, 2025
08aa1a2
Adding generation of true `TLAST` signal for AXI-stream in `valrdy` d…
Mar 20, 2025
a8fcf08
Adding width conversion 64->256->256->64.
Mar 21, 2025
7c39279
Width conversion is changed to un-aligned value 248 instead of 256 in…
Mar 22, 2025
ef55d7d
Moving both mux/demix to single `nocs_aurora_bridge`.
Mar 30, 2025
5445666
Adding concat/deconcat of 8-bit TDEST with 248-bit TDATA to form full…
Mar 30, 2025
063d76b
Adding independent clock for Aurora domain, and input/output FIFOs at…
Mar 31, 2025
31378cc
Manual config of Inputs FIFOs is removed; output reset is added, but …
Apr 1, 2025
231d2e2
A delayed by 16 clocks version of reset is applied to the `tile`.
Apr 1, 2025
555de3d
Increased delay to 64 clocks for reset applied to tiles; at top level…
Apr 2, 2025
926b69f
Moving to Aurora clock GT clock usage (user_clk). Using Aurora `sys_r…
Apr 3, 2025
00c0b4a
Adding gating of TREADY at input AXI-St FIFOs by Reset after Aurora b…
Apr 3, 2025
87bb07f
Refactoring in `nocs_aurora_bridge` schematic.
Apr 4, 2025
539975b
Making internal `noc` reset dependent on full status of Aurora.
Apr 4, 2025
1033710
Some extended commented code.
Apr 6, 2025
cfca999
`TRDY` signal between `aur_fifo` and `rx_fifo` is tied to ResetN to i…
Apr 6, 2025
eb08b6d
Moving the AXI-stream datapath to Aurora (looback so far), the Aurora…
Apr 7, 2025
98b8f94
Extra intermediate fifos are removed; Tx 2->1 and Rx 1->2 AXIS interc…
Apr 11, 2025
4a9a2e2
Moving to Vivado-2024.2 because of correct config of inserted axis_in…
Apr 13, 2025
919d023
Added schematic for injecting to Aurora a packet with changed "progra…
Apr 15, 2025
5d36cad
Constant 1 is applied to TVALID of input of `suspend_injector` with c…
Apr 15, 2025
5c3d35a
Removing in "suspend_injector" passing of any `tdata`, just only `tde…
Apr 16, 2025
58f79be
Isolating `suspend_injector` from `suspend_flop` logic with extra FIF…
Apr 16, 2025
a38a134
Changing thr priority of `suspend_injector` arbitrage to `fixed`.
Apr 16, 2025
a3d8f7d
"Rx Partial fullness" feedback is fully connected in order to suspend…
Apr 17, 2025
1111a41
The cores' freq is increased tp 50MHz and depth of rx_fifo has been r…
Apr 17, 2025
17ca269
The size of `rx_fifo` is intentionally reduced to small value in orde…
Apr 18, 2025
b563208
Rx overflow condition is reported to UART, light refactoring, core fr…
Apr 20, 2025
4d875d4
Applying distributed reset to Aurora according to spec.
Apr 20, 2025
0f4d183
Using Reset generator for Aurora clock (`txrx`) domain.
Apr 21, 2025
696f4be
Removing extra reset inverter in Aurora domain.
Apr 22, 2025
d8654d0
Number of channels is extended by one, meaning that channel#0 is devo…
Apr 23, 2025
02b4368
#TestCICD Update of 100GbE IP: custom smart eth_rx_fifo is used inste…
Apr 25, 2025
58573d1
#TestCICD Update of 100GbE: increase of Rx FIFO depth.
Apr 26, 2025
5b6a722
Merge branch 'production_origCVA6' into merge/openpiton-dev_upstr
May 4, 2025
3fa4261
Merge branch 'production_origCVA6' into 'production'
May 4, 2025
54b575f
Merge remote-tracking branch 'origin/merge/openpiton-dev_upstr' into …
May 5, 2025
60499d8
Merge remote-tracking branch 'origin/production_origCVA6' into dev/mu…
May 6, 2025
05a306f
Adding a patch for Lagarto to overcome Vivado-2024.2 synthesizer crash.
May 13, 2025
8932d37
Returning back Ethernet over QSFP-1 ports at top level. So for now Et…
May 14, 2025
521ea40
Conveying interrupts through chan#0 of Aurora bridge.
Jun 6, 2025
b35b2da
Exchange of QSFP ports betwenn Aurora and 100GbE. Now 100GbE uses QSF…
Jun 9, 2025
1899e2c
Added power-up 128-clock length reset for Aurora.
Jun 12, 2025
d92e768
Length of powerup reset is increased: 20-bit counter.
Jun 13, 2025
1b41569
initial propagation of user options `--fr_x/y` and `--to_x/y` to conf…
Jun 19, 2025
6bb2878
Reset from `nocs_aur_bridge` is applied to tiles and occupied logic.
Jun 19, 2025
f888c79
Not instantating unneeded tiles in particular FPGA of multi-FPGAs.
Jun 20, 2025
ee5c5c6
Elimination of initial noc muxer/demuxer.
Jun 21, 2025
f88cf8b
Elimination of extra `valrdy_to_credit` and `credit_to_valrdy` conver…
Jun 26, 2025
3b18ef1
Moving in SV Python `valrdy_last_gen` instances to the same loop with…
Jun 26, 2025
54e7f1f
Refactoring/optimising muti-fpga environment in `chip.sv.pyv`
Jun 27, 2025
76a4a5e
Bettre parameterisation and some refactoring of `axistx_aurora_bridge`.
Jun 28, 2025
9727f40
Optimization of `axis_muxer` and `axis_demuxer`.
Jul 1, 2025
b72c5bf
Moving AXI `tdest` signals from `chip.sv.pyv` to `axistx_aurora_bridg…
Jul 4, 2025
24aa478
Increase FIFO depth of in/out and tx/rx FIFOs.
Jul 6, 2025
cbd749a
Refactor to support compatibility with regular single-FPGA flow.
Jul 9, 2025
40eacb5
#TestCICD Add mutually exclusive Aurora constraints for QSFP0/QSFP1.
Jul 11, 2025
420f464
#TestCICD Do not create AXI-St-Aurora bridge by running TCL if multi-…
Jul 12, 2025
a841ac5
Merge branch 'production_origCVA6' into production
Jul 13, 2025
1023834
Merge branch 'production_origCVA6' into merge/openpiton-dev_upstr
Jul 13, 2025
e10f1e0
Fix: eliminate SystemVerilog syntax from `chip.v.pyv`.
Jul 14, 2025
3b5dcb6
#TestCICD Fix: eliminate SystemVerilog syntax from chip.sv.pyv to be …
Jul 14, 2025
ae7180e
#TestCICD Merge branch 'production_origCVA6' into production: elimin…
Jul 14, 2025
4541fff
#TestCICD Fix: the constant connected to READY of FlowControl Rx FIF…
Jul 17, 2025
b1a16bc
#TestCICD Merge branch 'production_origCVA6' into production
Jul 18, 2025
c11d7fc
Merge branch 'production_origCVA6' into merge/openpiton-dev_upstr
Jul 21, 2025
7c8091c
Initial commit of dual-fpga through P2P CMAC (100GbE).
Aug 3, 2025
f360ebb
Multi-fpga: restore of application of reset to tiles taken from `noc_…
Aug 3, 2025
bb82079
multi-fpga based on P2P CMAC: making secondary resets dependent on CM…
Aug 4, 2025
6c5a907
Added bring-up procedure according to the spec through driving `ctl_t…
Aug 8, 2025
0c2621a
Multi-fpga: refactor of resets in `axistx_cmac_bridge`
Aug 9, 2025
cd8b27e
Partial unification of CMAC and Auroara based multi-fpga solution.
Sep 1, 2025
7b6a9dd
#TestCICD Adding separate XDC constraints for CMAC based multi-fpga s…
Sep 1, 2025
28697ad
#TestCICD Merge branch 'production_origCVA6' into production
Sep 5, 2025
77776d2
Merge branch 'production_origCVA6' into merge/openpiton-dev_upstr
Sep 9, 2025
b83d4f7
Initial commit with Ethernet frame header support, not so far used fo…
Sep 10, 2025
b3f407a
Fix of connections for `NOC-CMAC` bridge with added Eth header. It is…
Sep 11, 2025
fbdbf9d
Temporal (for debug) disabling of usage of `valrdy_to_ethframe` modul…
Sep 12, 2025
2cf7d0f
Fix of width of data bus to `NOC-CMAC` bridge from `valrdy_to_ethfram…
Sep 12, 2025
46ac386
True enable of addition/remove of Eth frame header before/after `NOC-…
Sep 13, 2025
441f8aa
Added Eth header to the packet with interrupts.
Sep 15, 2025
6b5ddcb
Fixing typo.
Sep 16, 2025
5b8c194
Added write/read from/to PCIe dest/source MAC address for Eth header …
Sep 18, 2025
1e11243
Applying hex debug texts for reading dummy Rx Eth packet fields (Auro…
Sep 21, 2025
d91ea36
Addding readback of normal control from PCIe GPIO.
Sep 24, 2025
01098ec
Output of Eth header to PCIe GPIO is changed to normal NOC channels i…
Sep 25, 2025
11b384a
Merge branch 'production_origCVA6' into merge/openpiton-dev_upstr
Sep 26, 2025
6b8d1f2
Fix typo.
Sep 26, 2025
d429dad
Merge branch 'production_origCVA6' into 'production'
Oct 1, 2025
6c6217f
Update of 100GbE IP.
Oct 20, 2025
11c06c4
Multi-FPGA: always resetting `noc-qsfp` bridge by main reset (from P…
Oct 22, 2025
295daf9
NOC-Eth bridging: Added check of correctness of recieved Eth frame he…
Oct 24, 2025
f80206a
Added ILA to AXIS Rx channels.
Oct 27, 2025
d958a03
Swap of bytes in payload length of Eth frame header for Big-end netwo…
Oct 28, 2025
e5effe0
Eth-based multi-fpga: FC (flow control) schematic is skipped, thus do…
Oct 29, 2025
3f908bd
Replacing in Ethertype field of Eth frame header true Eth payload len…
Oct 30, 2025
1ee16f6
Doubling number of channels in nocs-eth bridge for confirmation trans…
Oct 31, 2025
c2def7b
Adding unique Eth frame ID to Eth header to be further checked on Rx …
Nov 3, 2025
4a238a3
Back transmission of confirmation of correctly recieved packet is added.
Nov 4, 2025
d40b480
Added but not enabled wait and reception of acknoledgement of transfe…
Nov 5, 2025
595d76f
For debug relaxing the check of recieved ACK packet on Tx side: only …
Nov 6, 2025
20b2065
Adding Eth frame ID to the ACK header check on Tx side.
Nov 6, 2025
a7534a1
Added retry transmission if no packet ACK recieved.
Nov 7, 2025
8dcd778
Added report of ACK wait time and number of retries.
Nov 10, 2025
ff34198
Moving initial preprocessing of Eth packets after receiving from CMAC…
Nov 14, 2025
04e27aa
Initial filtering (drop of bad/improper packets) in the FIFO is imple…
Nov 14, 2025
84f2200
Some refactoring of CMAC Eth packet filtering, other clean-ups.
Nov 17, 2025
564afae
Making as default not registered inputs in `ethcmac_to_demux.sv` Eth …
Nov 18, 2025
98ecc21
Sync-up new production with `production_origCVA6`
Nov 19, 2025
ef774e9
Merge remote-tracking branch 'origin/production' into dev/multi-fpga-eth
Nov 19, 2025
9b7bcc1
Eth header: IEEE802.3 usage of Ethertype field as Eth payload length.
Nov 19, 2025
a46000c
Update of format of GPIO line for Wrapper FPGA Shell.
Nov 20, 2025
0fc8e2e
Update of notation for UART for implementation under FPGA(MEEP)_Shell…
Nov 21, 2025
ee2b2af
Merge branch 'production' into dev/multi-fpga-eth
Nov 26, 2025
c509be4
Some cleanup of `axistx_cmac_bridge.tcl`.
Nov 26, 2025
e90ec9b
Added muxer/demuxer cascading in `axistx_cmac_bridge`
Nov 28, 2025
73c9cbe
added support for V80 UART
sahmedbsc Nov 29, 2025
9f9d7fb
ALVEO_V80 verilog macro for V80 board support
sahmedbsc Nov 29, 2025
75699d9
Increase of retries counter for statistics, full output to GPIO of bo…
Dec 1, 2025
bdc9048
refactored V80 parameter define
sahmedbsc Dec 1, 2025
837d3b4
updated UART_LINE_STATUS_V80 parameter
sahmedbsc Dec 1, 2025
5a2500c
adjusted AVLEO_V80 macro under ALVEO_BOARD
sahmedbsc Dec 1, 2025
2488702
removed extra lines
sahmedbsc Dec 1, 2025
b27b0e6
removed extra line
sahmedbsc Dec 1, 2025
bb03f37
removed extra assignments
sahmedbsc Dec 1, 2025
10c1b80
Light reformatting.
Dec 2, 2025
046835e
Merge branch 'acme_v80' into 'production'
Dec 2, 2025
fbbedf6
Merge remote-tracking branch 'origin/production' into dev/multi-fpga-eth
Dec 2, 2025
82fd04f
Merge branch 'production' into merge/openpiton-dev_upstr
Dec 3, 2025
6f8ce60
Syntax fix for Verilog-2005.
Dec 3, 2025
ff60354
Updated wait-ack timeout, other cleanups.
Dec 4, 2025
f068f0d
Merge branch 'production' into merge/openpiton-dev_upstr
Dec 4, 2025
06b5f9f
Initial refactoring for moving to indendant usage of Aurora and/or CM…
Dec 7, 2025
981cc91
Fix of partitioning through Aurora when only one limit (to_ or fr_) i…
Dec 8, 2025
b131a56
More refactoring: better decoupling of `axistx_aurora_bridge.tcl` and…
Dec 10, 2025
b0c7384
More accurate enabling of loopback mode in single FPGA when `from` pa…
Dec 10, 2025
fa8eee2
Refactoring of interrupt transmission, for Aurora/CMAC simultenious u…
Dec 11, 2025
ab136c8
Fix of AXISt interconnect cascading with evenly distributed channels …
Dec 12, 2025
74fab7e
Extra reset of CMAC by Aurora since such reset may come from adjacent…
Dec 15, 2025
086825f
Excluding extra reset to CMAC from Aurora. Refactoring of generation …
Dec 17, 2025
89f3fb8
Extension of AXISt-Aurora bridge upto 128 channels by cascading Xilin…
Dec 18, 2025
08bb6de
Specialization of Dest MAC address for "FROM" and "TO" borders.
Jan 5, 2026
c212816
Fix: extra specialization of "near" wires for proper separation of "F…
Jan 7, 2026
f42cc5a
Eth CMAC: Dedication of even ports to "FROM" border and odd ports to …
Jan 13, 2026
a93dfd5
Support of different data widths over multiple channels for the both …
Jan 21, 2026
bdb9525
Light parameter refactoring.
Jan 22, 2026
8607e06
Refactoring to locate "TO" channels above all "FROM" channels, thus g…
Jan 26, 2026
b5eb8bb
Fix moving the loop over NOCs inside "FROM/TO" branches, accordingly …
Jan 27, 2026
87f325c
Making Eth ACK channel width equal to CMAC used word (448 bits) in or…
Jan 27, 2026
b0de2b1
Fix: Roll-back to widths of "ACK" channel as NOC width + adding TKEEP…
Jan 28, 2026
d65de6b
Fix for Libux boot: restored default NOC width for ACK channels for i…
Jan 30, 2026
b6ee0a0
Applying to coming from Eth ACK channel width equal to CMAC used word…
Jan 30, 2026
e2f3d07
Fix: more acurate calculation of number of evenly distributed channel…
Feb 2, 2026
4013606
Applying to incoming to Eth ACK channel width equal to CMAC used word…
Feb 4, 2026
cfcf5dd
Setting input to noc-Eth bridge width of ACK channels as NOC width (6…
Feb 5, 2026
137d84f
Upgrade to Vivado-2025.2
Feb 5, 2026
cd2193d
Relaxing clock (using system one) on first-level muxer Xbar for routi…
Feb 7, 2026
aba8e4a
Multi-FPGA throgh Eth: increasing default depth of primary Rx FIFO ac…
Feb 8, 2026
6d0cfbf
Extra registering of static MAC addresses got from PCIe for better in…
Feb 9, 2026
28b8a1d
Excluding output reset from CMAC from general Tile reset.
Feb 16, 2026
bb93e19
CMAC Rx fault signals are removed from contribution to CMAC output re…
Feb 17, 2026
dc342e5
Decoupling Tile reset from both Aurora and CMAC secondary resets.
Feb 17, 2026
8ddecba
Returning dependency of Tile reset on both Aurora and CMAC, applying …
Feb 18, 2026
afe8e2f
Aurora output reset is not applied to CMAC.
Feb 19, 2026
bc6a7ee
Some clean-up of resets usage: a bit simpler generation them from CMA…
Feb 26, 2026
49c9031
Fix: returning back `stat_rx_aligned` signal from CMAC to reset contr…
Feb 27, 2026
67445ca
Returned back `TX_INIT` state from CMAC to reset contribution.
Feb 27, 2026
b8b2871
Masking by reset signals valid/ready between Aurora master AXI-St and…
Feb 28, 2026
bd4c1d5
Added 256-clock delay to Tile reset after Aurora/CMAC are brought-up.
Mar 1, 2026
93e0ed1
Extra reset of CMAC by Aurora since such reset may come from adjacent…
Mar 2, 2026
30458c4
Additionally delayed reset (after Tile reset) to standby packets from…
Mar 3, 2026
8e8a81a
Guard reset is extended 13th bit of counter.
Mar 5, 2026
08ed9be
Removing Auraora out reset contribution to CMAC in reset.
Mar 5, 2026
4a83e98
Increasing the duration of `guard` reset.
Mar 6, 2026
a9f950e
Making output `ready_in` signal of `ethframe_to_valrdy` module high d…
Mar 7, 2026
2f6c2fd
As in previous commit making `ready_ack` output high of `valrdy_to_et…
Mar 7, 2026
e2f48fa
Inrease of Tx fifo in Aurora bridge.
Mar 8, 2026
813bbc6
Adding unconditional accept of Eth frames with extra buffering in `et…
Mar 12, 2026
daaa967
Alignment depth of Tx/Rx fifos in all bridges to 512.
Mar 13, 2026
eca50c0
The length of guard tile reset is reduced to 4096 cycles. Tile reset …
Mar 16, 2026
b15b48b
Light refactoring of guard reset, now applyed to `valrdy_to_credit` m…
Mar 17, 2026
a51333c
Fix: `valrdy_to_credit` should be reset earlier to be able to accept …
Mar 18, 2026
6a57874
Merge branch 'production' into merge/openpiton-dev_upstr
Mar 19, 2026
2bb50c3
Out fifo size is increased to 64.
Mar 24, 2026
023bceb
Merge branch 'production' into merge/openpiton-dev_upstr
Apr 3, 2026
85c8edb
Merge branch 'merge/openpiton-dev_upstr' into openpiton-dev_upst
Apr 29, 2026
7f70691
Readme is extended with Multi-FPGA implementation options.
May 4, 2026
6bb136d
Readme is extended with Multi-FPGA implementation options.
May 4, 2026
59be78a
Merge branch 'merge/openpiton-dev_upstr' into openpiton-dev_upst
May 4, 2026
954762c
Adding description of Multi-FPGA extension to README.
May 13, 2026
103e6ed
Typos in Readme.
May 13, 2026
0be6c67
More typos in Readme.
May 13, 2026
136fdc2
Merge branch 'production' into merge/openpiton-dev_upstr
May 13, 2026
5c3d3a2
Merge branch 'merge/openpiton-dev_upstr' into openpiton-dev_upst
May 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,7 @@
url = https://github.com/PrincetonUniversity/openpiton-aws.git
[submodule "piton/design/chipset/rv64_platform/bootrom/u-boot/uboot"]
path = piton/design/chipset/rv64_platform/bootrom/u-boot/uboot
url = git@github.com:u-boot/u-boot.git
url = https://github.com/u-boot/u-boot.git
[submodule "piton/design/chipset/io_ctrl/xilinx/common/ip_cores/eth_cmac_syst"]
path = piton/design/chipset/io_ctrl/xilinx/common/ip_cores/eth_cmac_syst
url = https://github.com/bsc-loca/100gb-ethernet
106 changes: 106 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -505,3 +505,109 @@ The command will tell print the afi and agfi of your image. You can track the sy

8. After the synthesis is done - you can go load it in your F1 instance!

#### Synthesizing OpenPiton for ALVEO boards

This section contains a description of extensions to OpenPiton developed by Barcelona Supercomputing Center (Copyright 2026 - BSC):

> *These BSC extensions are licensed under the Solderpad Hardware License v 2.1 (the “License”); you may not use these extensions except in compliance with the License, or, at your option, the Apache License version 2.0. You may obtain a copy of the License at
> https://solderpad.org/licenses/SHL-2.1/
> Unless required by applicable law or agreed to in writing, any work distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.*


The flow is very simillar to synthesizing image for any other FPGA OpenPiton supports:

1. Clone OpenPiton repo (BSC version):
- from BSC GitLab: git clone https://gitlab.bsc.es/hwdesign/frameworks/meep_openpiton/-/tree/merge/openpiton-dev_upstr
- from public GitHub: git clone https://github.com/bsc-loca/openpiton-fpga/tree/openpiton-dev_upst

2. cd into repo, run these bash commands:

```
source piton/piton_settings.bash
source piton/ariane_setup.sh
(Follow instructions in the top of the README in case this is the first time you install OpenPiton in your machine.)
```

4. Run the synthesis:

```
protosyn --board alveou280 --design system --core ariane --x_tiles 1 --y_tiles 1 --uart-dmw ddr --zeroer_off

Extra avaialble protosyn options:
--eth # adding CMAC based Ethernet unit
--ethport <num> # optional board-level Ethernet port (default=0)

--hbm # define HBM as primary system memory
--multimc <num> # implement design with multiple <num> connections to system memory (valid only for HBM)
--multimc_indices <coma separated list> # optional list of particular edge tiles for above `multimc` option

--bram-test hello_world.c # compiling and runniing VCS-based simulation before synthesis
--verdi-dbg # creating Verdi compliant simulation database for above test (verdi run inside ./build dir (-sx is optional): verdi -ssf ./novas.fsdb)

# Options to define Multi-FPGA partioning borders:
--fr_x <num> # Tile X coordinate from which FPGA partition starts in horizontal direction, by default it is 0 meaning no partitioning
--fr_y <num> # Tile Y coordinate from which FPGA partition starts in vertical direction, by default it is 0 meaning no partitioning
--to_x <num> # Tile X coordinate at which FPGA partition finishes in horizontal direction, by default it is (x_tiles-1) meaning no partitioning
--to_y <num> # Tile Y coordinate at which FPGA partition finishes in vertical direction, by default it is (y_tiles-1) meaning no partitioning
# Options to define physical ports utilized for Multi-FPGA partioning borders (0 means connection through Ethernet switch, 1 means P2P connection):
--frx_port <num> # QSFP port (0/1) to be used for start X FPGA partitioning border, by default: 0.
--fry_port <num> # QSFP port (0/1) to be used for start Y FPGA partitioning border, by default: 0.
--tox_port <num> # QSFP port (0/1) to be used for finish X FPGA partitioning border, by default: 0.
--toy_port <num> # QSFP port (0/1) to be used for finish Y FPGA partitioning border, by default: 0.

# Options to define Multi-FPGA partioning borders:
--fr_x <num> # Tile X coordinate from which FPGA partition starts in horizontal direction, by default it is 0 meaning no partitioning
--fr_y <num> # Tile Y coordinate from which FPGA partition starts in vertical direction, by default it is 0 meaning no partitioning
--to_x <num> # Tile X coordinate at which FPGA partition finishes in horizontal direction, by default it is (x_tiles-1) meaning no partitioning
--to_y <num> # Tile Y coordinate at which FPGA partition finishes in vertical direction, by default it is (y_tiles-1) meaning no partitioning
# Options to define physical ports utilized for Multi-FPGA partioning borders (0 means connection through Ethernet switch, 1 means P2P connection):
--frx_port <num> # QSFP port (0/1) to be used for start X FPGA partitioning border, by default: 0.
--fry_port <num> # QSFP port (0/1) to be used for start Y FPGA partitioning border, by default: 0.
--tox_port <num> # QSFP port (0/1) to be used for finish X FPGA partitioning border, by default: 0.
--toy_port <num> # QSFP port (0/1) to be used for finish Y FPGA partitioning border, by default: 0.
```

This will create a Vivado design under $ROOT_DIR/build/...

5. After the synthesis is complete (takes about 2-3 hours on fast PC), you can program the FPGA via JTAG

6. Probably you would need to reboot to be able to use the new QDMA PCIe interface.

7. Now you can download from the intranet the bbl containing the Linux kernel, a script to load it to the SDRAM and the bitstream itself in case you want to skip steps above.

```
/home/fpga-runnerMEEP/lagarto_sdk_deploy/rv64gc/
```

In a separated bash window, open a client for the UART:

```
picocom -b 115200 /dev/ttyUSB2
```

8. Clone FPGA tools repo: https://gitlab.bsc.es/hwdesign/fpga/integration-lab/fpga-tools.git

Issue the next commands inside the downloaded repo:

```
./fpga/load-bitstream-onic.sh qdma <fpga_bistream_name>.bit
./boot_riscv/boot_acme.sh <osbi_buildroot>.bin
```

You should be able to see Linux booting on the other terminal.

##### Multi-FPGA (EMiX) extension of OpenPiton by BSC

1. Technology Description

EMiX is a scalable multi-FPGA emulation framework for large multi-core RISC-V systems that no longer fit within a single FPGA. It partitions a monolithic tiled many-core RTL design at NoC boundaries and deploys the resulting components across several interconnected FPGAs. This facilitates pre-silicon validation of larger systems while preserving OS-level visibility and software-stack execution. The current prototype targets an OpenPiton-style tiled architecture and demonstrates multi-core configuration distributed across multiple AMD Alveo U55c FPGAs on BSC's Makinote cluster. It supports full-system execution, including Linux boot, and keeps access to UART, HBM memory, and Ethernet through the FPGA hosting the chipset. EMiX bridges the gap between closed industrial multi-FPGA prototyping platforms and accessible academic infrastructure, and is open-sourced under mentioned above Solderpad Hardware License.

2. Dependencies

EMiX relies on the OpenPiton research platform as the tiled many-core/NoC-based architectural substrate. It also uses AMD/Xilinx IP on Alveo U55C devices, including Aurora 64B/66B for low-latency QSFP point-to-point communication, the UltraScale+ Integrated 100G Ethernet Subsystem (CMAC) for scalable Ethernet connectivity, AXI4-Stream infrastructure for multiplexing, channel mapping and clock-domain crossing, and auxiliary IPs such as Binary Counter and Processor System Reset. These are governed by their respective GPL or Xilinx end-user license terms.

3. Functioning

EMiX cuts a tiled many-core RTL design along NoC edges and assigns groups of tiles to different FPGAs. Cross-FPGA NoC traffic is converted into a unified AXI-Stream transport and carried over two complementary links: Aurora-based QSFP-1 direct point-to-point channels for adjacent FPGAs, and CMAC-based 100 Gb Ethernet over QSFP-0 for scalable cross-cluster connectivity. NoC-Aurora and NoC-CMAC bridges translate packets between the emulated on-chip network and the physical FPGA links The framework supports different partitioning strategies, such as horizontal or vertical cuts, and can scale by changing the number of cores, tiles, and FPGAs.

More details about EMiX are provided in a paper [EMiX: Emulating Beyond Single-FPGA Limits](https://arxiv.org/abs/2604.27012).
Loading