Chisel Super Nes pad controller
Control Super Nes pad controller with a chisel component. Git subproject named chisverilogutils is used for cocotb waveform generation and for formal prove injection, then to clone this project ::
$ git clone https://github.com/Martoni/chisNesPad.git
Description code is under directory src/main/scala/chisnespad/. To generate verilog synthesizable code do following ::
$ sbt "runMain chisnespad.ChisNesPad"
Some packages must be installed before to launch cocotb simulation :
- cocotb:
$ python3 -m pip install cocotb
- cocotbify:
$ cd /opt
$ git clone https://github.com/Martoni/chisverilogutils.git
$ cd chisverilogutils/cocotbify/
$ python3 -m pip install -e .
Testbench code is done with Python Cocotb package in directory cocotb/chisenespad/. To launch tests do following::
$ cd cocotb/chisenespad/
$ make
Formal description and prove are in directory formal/. To launch prove do following::
$ cd formal
$ make
Tools from chisverilogutils are required for this project. See the project readme for install instruction.
fpgamacro dependency is automatically cloned and installed for this project.
SNES pad is composed of two 4021 shift buffers. The pinout is given here and a datasheet of shift register can be found here