Sea Cucumber (SC) is a synthesizing compiler for FPGAs that accepts Java class files as input (generated from Java source
files) and that generates circuits that exploit the coarse-and fine-grained parallelism available in the input class files.
Programmers determine the level of coarse-grained parallelism available by organizing their circuit as a set of inter-communicating,
concurrent threads (using standard Java threads) that are implemented by SC as concurrent hardware. SC automatically extracts
fine-grained parallelism from the body of each thread by processing the byte codes contained in the input class files and
employs conventional compiler optimizations such as data-flow and control- flow graph analysis, dead-code elimination, constant
folding, operation simplification, predicated static single assignment, if-conversion, hyperblock formation, etc. The resulting
EDIF files can be processed using Xilinx place and route software to produce bitstreams that can be downloaded into FPGAs
for execution.