piranna / wasmachine

Put WebAssembly in your washing machine
GNU General Public License v3.0
202 stars 11 forks source link
cpu fpga wasm wasm-bytecode webassembly

Build Status

wasmachine

Put WebAssembly in your washing machine

wasmachine is an implementation of the WebAssembly specification in a FPGA. It follows a sequential 6-steps design.

Currently it's in an initial state but is able to exec some basic commands.

Features

Keynotes

Roadmap

  1. ~Implement integer mathematical operations~
  2. ~Support for functions calling~
  3. Add a 64 bits FPU for the floating point operations
  4. Memory-based operations
  5. Modules loader in RAM
  6. ~Replace usage of ROM for modules on RAM~
  7. Accept call of functions from outside
  8. Use a pipelined design

External dependencies

They can be automatically upgraded executing

make update-dependencies

Testing

If you want to test all the modules at once with all the features enabled (the default build configuration), simply exec:

make test

You can also test the modules disabling some features using the parameters argument, that will be directly passed to the iverilog executable:

make test parameters='-Pcpu_tb.HAS_FPU=0 -Pcpu_tb.USE_64B=0'