Piplin is a language that lets you write Clojure to simulate and program FPGAs.
Get Started! » Read doc guides » Watch the talk on InfoQ » Join the Mailing List » Contribute »Piplin can generable synthesizable Verilog that all FPGA toolchains can understand. You can use maps, enums, tagged unions, and fixed point math with normal Clojure syntax and still have synthesizable code.
Piplin is just plain Clojure code. This means that you can use namespaces to organize your code, functions to create reusable computations, and higher order functions to realize powerful, abstract combinations of hardware functions. In addition to these tools, Piplin uses Prismatic's Plumbing's graphs to compose functions and registers into modules, Piplin's abstraction for composable stateful hardware.
Piplin allows you to simulate your hardware, giving you results in an easy-to-understand format that's designed for testability. Simulations can also be viewed graphically as waveforms. Simulations can also be automatically verified against the Verilog implementation to ensure the correctness of the compiler!