| # Scan Controller Testbench |
| |
| This testbench can simulate the entire TinyTapeout chip, with all 498 designs |
| connected on a long scan chain. It can either operate in a fast mode using simple |
| stand-ins for the standard cells, or use the gate models provided by Skywater |
| with unit delays for a more detailed simulation. |
| |
| Two simulators are supported: |
| |
| * `SIM=icarus` - use Icarus Verilog to simulate the design. This is the slower |
| option, but supports delay annotations and can use the real Skywater PDK cells; |
| |
| * `SIM=verilator` - uses Verilator to simulate the design. This is a much faster |
| option (~10x faster), but has to use simple fast models of the PDK cells rather |
| than the `primitive` versions provided by Skywater. It does not support delay |
| annotations; |
| |
| GNU Make is used to kick-off simulations, and the testbench is written in CocoTB. |
| There are three common Make targets to run: |
| |
| * `make test_scan_controller` - run the simulation with the fast, simple models. |
| This supports both Icarus Verilog and Verilator. |
| |
| * `make test_scan_controller_gl` - run a gate-level simulation with the real |
| PDK cells and unit delays. This only supports Icarus Verilog as a simulator. |
| |
| * `make clean` - deletes all build and test artefacts. |
| |
| There are a few switches which can be used with either `make test_scan_controller` |
| or `make test_scan_controller_gl`: |
| |
| * `WAVES=yes/no` - whether to trace VCD waves from the design (enabling this |
| can have a significant impact on run speed); |
| |
| * `SIM=icarus/verilator` - select the simulator to use; |