Add a test suite targeting opentitan peripherals

Adapted from renodes tests/platforms/OpenTitan-EarlGrey.robot
- Update binary paths to locally built opentitan artifacts
- Remove tests that depend on LoadBinary() initialization as vmem image
  loading is the prefered way to use the rom controller
- Refer to our generated repl file

Change-Id: Icbbae7e2c93365cdbf6c3459f469a0c1b6a4e3fe
diff --git a/opentitan_peripherals_test.robot b/opentitan_peripherals_test.robot
new file mode 100644
index 0000000..cbd9bd4
--- /dev/null
+++ b/opentitan_peripherals_test.robot
@@ -0,0 +1,201 @@
+*** Settings ***
+Suite Setup                     Setup
+Suite Teardown                  Teardown
+Test Setup                      Reset Emulation
+Test Teardown                   Test Teardown
+Resource                        ${RENODEKEYWORDS}
+
+*** Variables ***
+${UART}                         sysbus.uart0
+${ROOTDIR}                      @${CURDIR}/../..
+${AES_BIN}                      ${ROOTDIR}/out/opentitan/sw/build-out/sw/device/tests/aes_smoketest_fpga_nexysvideo.elf
+${UART_BIN}                     ${ROOTDIR}/out/opentitan/sw/build-out/sw/device/tests/uart_smoketest_fpga_nexysvideo.elf
+${HMAC_BIN}                     ${ROOTDIR}/out/opentitan/sw/build-out/sw/device/tests/hmac_smoketest_fpga_nexysvideo.elf
+${KMAC_BIN}                     ${ROOTDIR}/out/opentitan/sw/build-out/sw/device/tests/kmac_smoketest_fpga_nexysvideo.elf
+${KMAC_CSHAKE_BIN}              ${ROOTDIR}/out/opentitan/sw/build-out/sw/device/tests/kmac_mode_cshake_test_fpga_nexysvideo.elf
+${KMAC_KMAC_BIN}                ${ROOTDIR}/out/opentitan/sw/build-out/sw/device/tests/kmac_mode_kmac_test_fpga_nexysvideo.elf
+${FLASH_CTRL_BIN}               ${ROOTDIR}/out/opentitan/sw/build-out/sw/device/tests/flash_ctrl_test_fpga_nexysvideo.elf
+${BOOT_ROM_BIN}                 ${ROOTDIR}/out/opentitan/sw/build-out/sw/device/boot_rom/boot_rom_fpga_nexysvideo.elf
+${BOOT_ROM_SCR_VMEM}            ${ROOTDIR}/out/opentitan/sw/build-out/sw/device/boot_rom/boot_rom_fpga_nexysvideo.scr.39.vmem
+${TIMER_BIN}                    ${ROOTDIR}/out/opentitan/sw/build-out/sw/device/tests/rv_timer_smoketest_fpga_nexysvideo.elf
+${RESET_BIN}                    ${ROOTDIR}/out/opentitan/sw/build-out/sw/device/tests/rstmgr_smoketest_fpga_nexysvideo.elf
+${SW_RESET_BIN}                 ${ROOTDIR}/out/opentitan/sw/build-out/sw/device/tests/rstmgr_sw_req_test_fpga_nexysvideo.elf
+${HELLO_WORLD_BIN}              ${ROOTDIR}/out/opentitan/sw/build-out/sw/device/examples/hello_world/hello_world_fpga_nexysvideo.elf
+
+${LEDS}=    SEPARATOR=
+...  """                                     ${\n}
+...  gpio:                                   ${\n}
+...  ${SPACE*4}8 -> led0@0                   ${\n}
+...  ${SPACE*4}9 -> led1@0                   ${\n}
+...  ${SPACE*4}10 -> led2@0                  ${\n}
+...  ${SPACE*4}11 -> led3@0                  ${\n}
+...  ${SPACE*4}12 -> led4@0                  ${\n}
+...  ${SPACE*4}13 -> led5@0                  ${\n}
+...  ${SPACE*4}14 -> led6@0                  ${\n}
+...  ${SPACE*4}15 -> led7@0                  ${\n}
+...                                          ${\n}
+...  led0: Miscellaneous.LED @ gpio 8        ${\n}
+...  led1: Miscellaneous.LED @ gpio 9        ${\n}
+...  led2: Miscellaneous.LED @ gpio 10       ${\n}
+...  led3: Miscellaneous.LED @ gpio 11       ${\n}
+...  led4: Miscellaneous.LED @ gpio 12       ${\n}
+...  led5: Miscellaneous.LED @ gpio 13       ${\n}
+...  led6: Miscellaneous.LED @ gpio 14       ${\n}
+...  led7: Miscellaneous.LED @ gpio 15       ${\n}
+...  """
+
+*** Keywords ***
+Setup Machine
+    Execute Command             mach create
+    Execute Command             machine LoadPlatformDescription ${ROOTDIR}/sim/tests/opentitan-earlgrey-gen.repl
+    Execute Command             showAnalyzer ${UART}
+    Execute Command             machine LoadPlatformDescriptionFromString ${LEDS}
+    Execute Command             sysbus LoadELF ${BOOT_ROM_BIN}
+    Execute Command             sysbus LoadELF ${HELLO_WORLD_BIN}
+    Execute Command             sysbus.cpu0 PC 0x00008084
+
+    Create Terminal Tester      ${UART}
+    Set Default Uart Timeout    1
+
+Setup Machine Without Boot ROM
+    Execute Command             mach create
+    Execute Command             machine LoadPlatformDescription ${ROOTDIR}/sim/tests/opentitan-earlgrey-gen.repl
+    Execute Command             showAnalyzer ${UART}
+    Execute Command             machine LoadPlatformDescriptionFromString ${LEDS}
+    Execute Command             sysbus LoadELF $bin
+
+    Create Terminal Tester      ${UART}
+    Set Default Uart Timeout    1
+
+Load Scrambled Boot ROM Vmem
+    Execute Command             sysbus.rom_ctrl LoadVmem ${BOOT_ROM_SCR_VMEM}
+    Execute Command             sysbus.cpu0 PC 0x00008084
+
+Run Smoketest
+    [Arguments]                 ${bin}
+    Execute Command             $bin=${bin}
+    Setup Machine
+    Execute Command             sysbus LoadELF $bin
+    Start Emulation
+
+    Wait For Line On UART       PASS
+
+Run Smoketest With Scrambled Boot ROM Vmem
+    [Arguments]                 ${bin}
+    Execute Command             $bin=${bin}
+    Setup Machine Without Boot ROM
+    Load Scrambled Boot ROM Vmem
+    Start Emulation
+
+    Wait For Line On UART       PASS
+
+*** Test Cases ***
+Should Print To Uart
+    Setup Machine
+    Start Emulation
+
+    Wait For Line On Uart       The LEDs show the ASCII code of the last character.
+
+    Provides                    initialization
+
+Should Echo On Uart
+    Requires                    initialization
+
+    Write Line To Uart          Testing testing 1-2-3
+
+    Provides                    working-uart
+
+Should Display Output on GPIO
+    Requires                    working-uart
+
+    Execute Command             emulation CreateLEDTester "led0" sysbus.gpio.led0
+    Execute Command             emulation CreateLEDTester "led1" sysbus.gpio.led1
+    Execute Command             emulation CreateLEDTester "led2" sysbus.gpio.led2
+    Execute Command             emulation CreateLEDTester "led3" sysbus.gpio.led3
+
+    Execute Command             emulation CreateLEDTester "led4" sysbus.gpio.led4
+    Execute Command             emulation CreateLEDTester "led5" sysbus.gpio.led5
+    Execute Command             emulation CreateLEDTester "led6" sysbus.gpio.led6
+    Execute Command             emulation CreateLEDTester "led7" sysbus.gpio.led7
+
+    Send Key To Uart            0x0
+
+    Execute Command             led0 AssertState false 0.2
+    Execute Command             led1 AssertState false 0.2
+    Execute Command             led2 AssertState false 0.2
+    Execute Command             led3 AssertState false 0.2
+
+    Execute Command             led4 AssertState false 0.2
+    Execute Command             led5 AssertState false 0.2
+    Execute Command             led6 AssertState false 0.2
+    Execute Command             led7 AssertState false 0.2
+
+    Write Char On Uart          B
+    # B is 0100 0010
+
+    Execute Command             led0 AssertState false 0.2
+    Execute Command             led1 AssertState true 0.2
+    Execute Command             led2 AssertState false 0.2
+    Execute Command             led3 AssertState false 0.2
+
+    Execute Command             led4 AssertState false 0.2
+    Execute Command             led5 AssertState false 0.2
+    Execute Command             led6 AssertState true 0.2
+    Execute Command             led7 AssertState false 0.2
+
+Should Pass AES Smoketest
+    Run Smoketest               ${AES_BIN}
+
+Should Pass UART Smoketest
+    Run Smoketest               ${UART_BIN}
+
+Should Pass HMAC Smoketest
+    Run Smoketest               ${HMAC_BIN}
+
+Should Pass Flash Smoketest
+    Run Smoketest               ${FLASH_CTRL_BIN}
+
+Should Pass Timer Smoketest
+    Run Smoketest               ${TIMER_BIN}
+
+Should Pass KMAC Smoketest
+    Run Smoketest               ${KMAC_BIN}
+
+Should Pass KMAC CSHAKE Mode
+    Run Smoketest               ${KMAC_CSHAKE_BIN}
+
+Should Pass KMAC KMAC Mode
+    Run Smoketest               ${KMAC_KMAC_BIN}
+
+Should Pass Reset Smoketest
+    Run Smoketest               ${RESET_BIN}
+
+Should Pass Software Reset Test
+    Run Smoketest               ${SW_RESET_BIN}
+
+Should Pass AES Smoketest With Scrambled Boot ROM Vmem
+    Run Smoketest With Scrambled Boot ROM Vmem      ${AES_BIN}
+
+Should Pass UART Smoketest With Scrambled Boot ROM Vmem
+    Run Smoketest With Scrambled Boot ROM Vmem      ${UART_BIN}
+
+Should Pass HMAC Smoketest With Scrambled Boot ROM Vmem
+    Run Smoketest With Scrambled Boot ROM Vmem      ${HMAC_BIN}
+
+Should Pass Flash Smoketest With Scrambled Boot ROM Vmem
+    Run Smoketest With Scrambled Boot ROM Vmem      ${FLASH_CTRL_BIN}
+
+Should Pass KMAC Smoketest With Scrambled Boot ROM Vmem
+    Run Smoketest With Scrambled Boot ROM Vmem      ${KMAC_BIN}
+
+Should Pass KMAC CSHAKE Mode With Scrambled Boot ROM Vmem
+    Run Smoketest With Scrambled Boot ROM Vmem      ${KMAC_CSHAKE_BIN}
+
+Should Pass KMAC KMAC Mode With Scrambled Boot ROM Vmem
+    Run Smoketest With Scrambled Boot ROM Vmem      ${KMAC_KMAC_BIN}
+
+Should Pass Reset Smoketest With Scrambled Boot ROM Vmem
+    Run Smoketest With Scrambled Boot ROM Vmem      ${RESET_BIN}
+
+Should Pass Software Reset Test With Scrambled Boot ROM Vmem
+    Run Smoketest With Scrambled Boot ROM Vmem      ${SW_RESET_BIN}