| --- |
| title: "OpenTitan System Tests" |
| --- |
| |
| System tests are end-to-end tests for the whole OpenTitan system. They operate |
| on build outputs (typically in `build-bin`) and can be used to check that the |
| full system, consisting of software, hardware, and tooling, works as expected. |
| |
| Tests can be executed against different target platforms (such as FPGAs or |
| simulations), even though not all OpenTitan-supported targets are supported at |
| the moment. |
| |
| ## Available tests |
| |
| * `earlgrey/test_sim_verilator.py`: Run various software tests against a |
| Verilator-built simulation of the Earl Grey design. |
| * `earlgrey/test_fpga_cw310.py`: Run various software tests against the |
| Earl Grey design running on a ChipWhisperer CW310 FPGA board. |
| * `earlgrey/test_fpga_nexysvideo.py`: Run various software tests against the |
| Earl Grey design running on a Nexys Video FPGA board. |
| |
| ## Run the tests |
| |
| ### Prerequisites |
| |
| Before the tests can be run, the various components of OpenTitan need to be |
| built and present in the `BIN_DIR` directory (typically `$REPO_TOP/build-bin`). |
| |
| Alternatively, the tests can be executed against any pre-built OpenTitan |
| snapshot available from GitHub releases, or from CI. |
| |
| To test build artifacts from CI follow these steps: |
| |
| * Go to an individual build job in the |
| ["CI" pipelines of Azure Pipelines](https://dev.azure.com/lowrisc/opentitan/_build?definitionId=9&_a=summary). |
| (The page where the individual steps for a single change are listed, not the |
| job overview page.) |
| * In the information bar on the top click on a link labeled "5 published" |
| (or something similar). It will take you to a page titeled "Artifacts". |
| * Expand the "opentitan-dist" artifact, and download the file |
| `opentitan-snapshot-xxx.tar.xz`. |
| * Untar this file and set the `BIN_DIR` environment variable to point to the |
| extracted directory, for example: |
| |
| ```sh |
| tar -xf opentitan-snapshot-20191101-1-2462-g3ad4fd1b.tar.xz |
| export BIN_DIR=$PWD/opentitan-snapshot-20191101-1-2462-g3ad4fd1b |
| ``` |
| |
| ### Configuration |
| |
| Tests running on FPGA boards need some configuration to help with the discovery |
| of things like the UART port. To configure these settings, copy the |
| configuration file example from `test/systemtest/test-localconf.yaml.example` |
| to one of the supported configuration file locations: |
| |
| * `$OPENTITAN_TEST_LOCALCONF` |
| * `$XDG_CONFIG_HOME/opentitan/test-localconf.yaml` |
| * `$HOME/.config/opentitan/test-localconf.yaml` |
| |
| ### Test execution |
| |
| The pytest documentation gives a good overview of the available options to run |
| tests in the [Usage and Invocations](https://docs.pytest.org/en/stable/usage.html) |
| chapter. Here's a quick reference. |
| |
| ```sh |
| # Run all tests |
| pytest test/systemtest |
| |
| # Run tests in a specific file |
| pytest test/systemtest/earlgrey/test_sim_verilator.py |
| |
| # Run a specific test in a specific parametrization |
| pytest test/systemtest/earlgrey/test_sim_verilator.py -k test_apps_selfchecking[usbdev_test] |
| |
| # Run tests with more verbose output |
| pytest test/systemtest -sv --log-cli-level=DEBUG |
| ``` |