# Writing a Test
The `tests/verilog` folder is dedicated to Verilator correctness testing.
A `.futil` in this directory defines a new test. To get output we run the following steps:
- Use `verilog` backend to generate a Verilog file
- Run Verilator using `sim/testbench.cpp` as the testbench.
- This expects a toplevel component in Futil named `main`
- We drive the `main` component by pulsing the `clk` port on `main`
- We simulate until the `ready` port on `main` is high.
- Convert the generated `vcd` file to `json`
- Use `{filename}.jq` to choose a subset of signals to test
- Compare this generated file to `{filename.expect}`