| .. | ||
| divider.sby | ||
| divider.sv | ||
| README.md | ||
Autotune demo
This directory contains a simple sequential integer divider circuit. The verilog implementation in divider.sv comes with assertions that this circuit will always produce the correct result and will always finish within a fixed number of cycles. The circuit has the divider bit-width as parameter.
Increasing the WIDTH parameter quickly turns proving those assertions into a
very difficult proof for fully autmated solvers. This makes it a good example
for the --autotune option which tries different backend engines to find the
best performing engine configuration for a given verification task.
The divider.sby file defines 3 tasks named small, medium and
large which configure the divider with different bit-widths. To verify the
small divider using the default engine run:
sby -f divider.sby small
To automatically try different backend engines using autotune, run
sby --autotune -f divider.sby small
The small task should finish quickly using both the default engine and using
autotune. The medium and large tasks take significantly longer and show
greater differences between engine configurations. Note that the large tasks
can take many minutes to hours, depending on the machine you are using.
You can learn more about Sby's autotune feature from Sby's documentation.