A game synthesized for FPGAs from Temporal Stream Logic
You need the TSL-toolchain to convert TSL specifications to the Temporal Logic Synthesis Format (TLSF) and to convert the control flow model to code of a FRP-framework.
You need a TLSF-compatible LTL-synthesis tool. We used the following ones
Note that different synthesis tools might vary in recource usage and the size of the outputed control flow model.
You need the Clash HDL used as the FRP-Framework, generating verilog code:
Due to active development of Clash, we recommend to
git checkout fff460634d80db6f4add2b887cea22c2d937fc35
before building the compiler.
You may not need the following tools depending on whether you want work on generated verilog code or rebuild the whole physical system.
You need the Yosys Open SYnthesis Suite to synthesize the generated verilog code.
You need nextpnr a vendor neutral, timing driven, FOSS FPGA place and route tool.
You need the IceStorm tools.
You need the icoprog programming tool for IcoBoards.
We include a Makefile, be sure to configure a build.cfg. It features the following functionality:
make tlsf
converts all TSL specifications to TLSFmake check
executestslcheck
on all TSL specificationsmake <filename>.aag
synthsizes the specification<filename>.tsl
using strixmake strix/<filename>.hs
generates corresponding Clash code, plus the above if not already synthesizedmake <filename>.bosy
synthsizes the specification<filename>.tsl
using bosymake bosy/<filename>.hs
generates corresponding Clash code, plus the above if not already synthesized
After acquiring a .hs
file for every specification, copy them to the clash folder. You can then compile the game to Verilog code using a simple make
.