blob: 9fb7ed43e5549f63dd5684d88851da325c9cde30 [file] [log] [blame] [view]
# 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;