1*** Variables *** 2${UART} sysbus.uart 3${URI} @https://dl.antmicro.com/projects/renode 4${LED_DELAY} 1 5 6*** Keywords *** 7Create Machine 8 [Arguments] ${elf} 9 10 Execute Command mach create 11 Execute Command machine LoadPlatformDescription @platforms/boards/miv-board.repl 12 13 Execute Command sysbus LoadELF ${URI}/${elf} 14 15*** Test Cases *** 16Should Blink Led Using Systick 17 Create Machine riscv-systick-blinky.elf-s_125004-59e1fa0a46f86e8ccad8b5bbb4d92b8dfa009af3 18 Create Terminal Tester ${UART} 19 20 Create LED Tester sysbus.gpioOutputs.led0 defaultTimeout=${LED_DELAY} 21 22 Start Emulation 23 24 Wait For Line On Uart System timer Blinky Example. 25 26 # because of very fast LED switching this ends very soon 27 Assert LED State true 28 Assert LED State false 29 Assert LED State true 30 Assert LED State false 31 Assert LED State true 32 Assert LED State false 33 Assert LED State true 34 Assert LED State false 35 Assert LED State true 36 Assert LED State false 37 38Should Blink Led Using CoreTimer 39 Create Machine riscv-interrupt-blinky.elf-s_135504-4fe164958c1fe3e89790f8d7d2824ba16182fa75 40 Create Terminal Tester ${UART} 41 42 Create LED Tester sysbus.gpioOutputs.led0 defaultTimeout=${LED_DELAY} 43 44 Start Emulation 45 46 Wait For Line On Uart CoreTIMER and external Interrupt Example. 47 48 Assert LED State true 49 Assert LED State false 50 Assert LED State true 51 Assert LED State false 52 Assert LED State true 53 Assert LED State false 54 Assert LED State true 55 Assert LED State false 56 57Should Run FreeRTOS Sample 58 Create Machine riscv-freertos-sample.elf-s_208404-40208b240e2d718e999a533e084f022628aec5d6 59 Create Terminal Tester ${UART} 60 61 Start Emulation 62 63 Wait For Line On Uart Sample Demonstration of FreeRTOS port for Microsemi RISC-V processor. 64 Wait For Line On Uart Task - 2 65 Wait For Line On Uart Task - 1 66 Wait For Line On Uart Task - 2 67 Wait For Line On Uart Task - 1 68 Wait For Line On Uart Task - 2 69 Wait For Line On Uart Task - 1 70 Wait For Line On Uart Task - 2 71 Wait For Line On Uart Task - 1 72 Wait For Line On Uart Task - 2 73 Wait For Line On Uart Task - 1 74 75Should Run LiteOS Port Sample 76 Create Machine riscv-liteos-port.elf-s_689820-e68d3bcf0a12c25daa66fc51e474281bcbed2fc7 77 Create Terminal Tester ${UART} 78 79 # this magic PerformanceInMips is required for the test to pass 80 # it is related to a bug in LiteOS (stack overflow and corruption) when interrupts happens in *wrong* moments 81 Execute Command sysbus.cpu PerformanceInMips 300 82 Execute Command showAnalyzer ${UART} 83 84 Start Emulation 85 86 Wait For Line On Uart Los Inspect start. 87 Wait For Line On Uart Los Key example: please press the UserKey (SW2) key 88 89 Test If Uart Is Idle 1 90 91 Execute Command sysbus.gpioInputs.user_switch_2 Toggle 92 Wait For Line On Uart Key test example 93 94Should Run ZephyrRTOS Shell Sample 95 Create Machine shell-demo-miv.elf-s_803248-ea4ddb074325b2cc1aae56800d099c7cf56e592a 96 Create Terminal Tester ${UART} 97 98 Execute Command showAnalyzer ${UART} 99 100 Start Emulation 101 Wait For Prompt On Uart uart:~ 102 Write Line To Uart version 103 Wait For Line On Uart Zephyr version 1.13.99 104 105 106Should Generate Interrupts On Gpio Rising Edge 107 Create Machine riscv-interrupt-blinky_gpio-interrupts-edge-positive.elf-s_135192-436f2656cbcff66f043ae6ba0b7977d0ee5e82a1 108 Create Terminal Tester ${UART} 109 110 Start Emulation 111 112 Wait For Line On Uart CoreTIMER and external Interrupt Example. 113 Wait For Line On Uart Observe the LEDs blinking on the board. The LED patterns changes every time a timer interrupt occurs 114 115 Test If Uart Is Idle 1 116 117 Execute Command sysbus.gpioInputs.user_switch_0 Toggle 118 Sleep 1s 119 Execute Command sysbus.gpioInputs.user_switch_1 Toggle 120 Sleep 1s 121 Test If Uart Is Idle 1 122 123 Execute Command sysbus.gpioInputs.user_switch_0 Toggle 124 Sleep 1s 125 Wait For Line On Uart GPIO1 126 Test If Uart Is Idle 1 127 128 Execute Command sysbus.gpioInputs.user_switch_0 Toggle 129 Sleep 1s 130 Execute Command sysbus.gpioInputs.user_switch_1 Toggle 131 Sleep 1s 132 Wait For Line On Uart GPIO2 133 134Should Generate Interrupts On Gpio Falling Edge 135 Create Machine riscv-interrupt-blinky_gpio-interrupts-edge-negative.elf-s_135192-19e453c25b09a2ecfeb7a8015588355f90ad8f02 136 Create Terminal Tester ${UART} 137 138 Start Emulation 139 140 Wait For Line On Uart CoreTIMER and external Interrupt Example. 141 Wait For Line On Uart Observe the LEDs blinking on the board. The LED patterns changes every time a timer interrupt occurs 142 143 Test If Uart Is Idle 1 144 145 Execute Command sysbus.gpioInputs.user_switch_0 Toggle 146 Wait For Line On Uart GPIO1 147 Sleep 1s 148 149 Execute Command sysbus.gpioInputs.user_switch_0 Toggle 150 Test If Uart Is Idle 1 151 152 Execute Command sysbus.gpioInputs.user_switch_1 Toggle 153 Wait For Line On Uart GPIO2 154 Sleep 1s 155 156 Execute Command sysbus.gpioInputs.user_switch_1 Toggle 157 Test If Uart Is Idle 1 158 159Should Generate Interrupts On Gpio Both Edges 160 Create Machine riscv-interrupt-blinky_gpio-interrupts-edge-both.elf-s_135192-1afc01350e4f0e17e2e556796cf577d2768636ec 161 Create Terminal Tester ${UART} 162 163 Start Emulation 164 165 Wait For Line On Uart CoreTIMER and external Interrupt Example. 166 Wait For Line On Uart Observe the LEDs blinking on the board. The LED patterns changes every time a timer interrupt occurs 167 168 Test If Uart Is Idle 1 169 170 Execute Command sysbus.gpioInputs.user_switch_0 Toggle 171 Wait For Line On Uart GPIO1 172 Sleep 1s 173 174 Execute Command sysbus.gpioInputs.user_switch_0 Toggle 175 Wait For Line On Uart GPIO1 176 Sleep 1s 177 178 Execute Command sysbus.gpioInputs.user_switch_1 Toggle 179 Wait For Line On Uart GPIO2 180 Sleep 1s 181 182 Execute Command sysbus.gpioInputs.user_switch_1 Toggle 183 Wait For Line On Uart GPIO2 184 185Should Generate Interrupts On Gpio High Level 186 Create Machine riscv-interrupt-blinky_gpio-interrupts-level-high.elf-s_135168-e03e81b692982ad2f1f46085b9077fdfef62adf2 187 Create Terminal Tester ${UART} 188 189 Start Emulation 190 191 Wait For Line On Uart CoreTIMER and external Interrupt Example. 192 Wait For Line On Uart Observe the LEDs blinking on the board. The LED patterns changes every time a timer interrupt occurs 193 194 Wait For Line On Uart GPIO1 195 Wait For Line On Uart GPIO2 196 Wait For Line On Uart GPIO1 197 Wait For Line On Uart GPIO2 198 Wait For Line On Uart GPIO1 199 Wait For Line On Uart GPIO2 200 Wait For Line On Uart GPIO1 201 Wait For Line On Uart GPIO2 202 203 Execute Command sysbus.gpioInputs.user_switch_0 Toggle 204 Sleep 1s 205 Execute Command sysbus.gpioInputs.user_switch_1 Toggle 206 Sleep 1s 207 Test If Uart Is Idle 1 208 209 Execute Command sysbus.gpioInputs.user_switch_0 Toggle 210 Sleep 1s 211 Execute Command sysbus.gpioInputs.user_switch_1 Toggle 212 Sleep 1s 213 214 Wait For Line On Uart GPIO1 215 Wait For Line On Uart GPIO2 216 Wait For Line On Uart GPIO1 217 Wait For Line On Uart GPIO2 218 Wait For Line On Uart GPIO1 219 Wait For Line On Uart GPIO2 220 Wait For Line On Uart GPIO1 221 Wait For Line On Uart GPIO2 222 223Should Generate Interrupts On Gpio Low Level 224 Create Machine riscv-interrupt-blinky_gpio-interrupts-level-low.elf-s_135168-f570dad79ea5aa0bfe9aa1000f453f0f50f344df 225 Create Terminal Tester ${UART} 226 227 Start Emulation 228 229 Wait For Line On Uart CoreTIMER and external Interrupt Example. 230 Wait For Line On Uart Observe the LEDs blinking on the board. The LED patterns changes every time a timer interrupt occurs 231 232 Test If Uart Is Idle 1 233 234 Execute Command sysbus.gpioInputs.user_switch_0 Toggle 235 Sleep 1s 236 Execute Command sysbus.gpioInputs.user_switch_1 Toggle 237 Sleep 1s 238 239 Wait For Line On Uart GPIO1 240 Wait For Line On Uart GPIO2 241 Wait For Line On Uart GPIO1 242 Wait For Line On Uart GPIO2 243 Wait For Line On Uart GPIO1 244 Wait For Line On Uart GPIO2 245 Wait For Line On Uart GPIO1 246 Wait For Line On Uart GPIO2 247 248 Execute Command sysbus.gpioInputs.user_switch_0 Toggle 249 Sleep 1s 250 Execute Command sysbus.gpioInputs.user_switch_1 Toggle 251 Sleep 1s 252 Test If Uart Is Idle 1 253 254 Execute Command sysbus.gpioInputs.user_switch_0 Toggle 255 Sleep 1s 256 Execute Command sysbus.gpioInputs.user_switch_1 Toggle 257 Sleep 1s 258 259 Wait For Line On Uart GPIO1 260 Wait For Line On Uart GPIO2 261 Wait For Line On Uart GPIO1 262 Wait For Line On Uart GPIO2 263 Wait For Line On Uart GPIO1 264 Wait For Line On Uart GPIO2 265 Wait For Line On Uart GPIO1 266 Wait For Line On Uart GPIO2 267 268