You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Use stack build to build and stack run pong to run the software
version.
For the hardware version, use the included Shakefile. An easy way to
run it is via the provided mk shell script. Create a build.mk file
with content like the following:
Alternatively, if you have Vivado/ISE installed in Docker or similar, you
can create a wrapper script and use that by setting VIVADO instead
of VIVADO_ROOT:
papilio-one: Papilio One (Spartan-3) with the Arcade MegaBoard
papilio-pro: Papilio Pro (Spartan-6) with the Arcade MegaBoard
Xilinx Vivado toolchain
nexys-a7-50t: Nexys A7-50T (Artix-7)
Intel Quartus toolchain
de0-nano: DE0-Nano (Cyclone IV) with Fen Logic VGA666 adapter
arrow-deca: Arrow DECA (MAX 10)
F4PGA (formerly SymbiFlow) open source toolchain
nexys-a7-50t.f4pga: Nexys A7-50T (Artix-7)
Bitfile can be built with e.g. ./mk papilio-pro/bitfile. For some
targets, a rule to upload the resulting bitfile is also included,
e.g. ./mk arrow-deca/upload.
Adding support for other Intel, Xilinx, or F4PGA based FPGA dev boards
is very straightforward with the included Shake rules, as long as they
have VGA output and at least two input pushbuttons.
Targeting other FPGA toolchains will require adding support in the
Shake rules. Alternatively, you can always just run Clash, and import
the resulting Verilog files into your FPGA toolchain in a
non-automated way.
About
Pong in Haskell / Clash, running as software using SDL and as hardware targeting FPGAs