217 lines
9.6 KiB
Plaintext
217 lines
9.6 KiB
Plaintext
*** Variables ***
|
|
${test_peripheral_addr}= 0x20000000
|
|
|
|
*** Keywords ***
|
|
Create Machine
|
|
Execute Command include "${CURDIR}/UnimplementedRegistersPeripheral.cs"
|
|
Execute Command using sysbus
|
|
Execute Command mach create
|
|
Execute Command machine LoadPlatformDescriptionFromString "cpu: CPU.RiscV32 @ sysbus { cpuType: \\"rv32imac\\"; timeProvider: empty }"
|
|
Execute Command machine LoadPlatformDescriptionFromString "mem: Memory.MappedMemory @ sysbus 0x1000 { size: 0x10000000 }"
|
|
Execute Command machine LoadPlatformDescriptionFromString "test_peripheral: UnimplementedRegistersPeripheral @ sysbus ${test_peripheral_addr}"
|
|
Execute Command sysbus Tag <0x4, 0x4> "tagged_region"
|
|
|
|
Execute Command cpu PC 0x1000
|
|
|
|
Tag Area And Access It From Sysbus
|
|
[Arguments] ${address} ${tag} ${silent}=false
|
|
Execute Command sysbus Tag <${address}, ${address}> "${tag}" silent=${silent}
|
|
|
|
Execute Command sysbus WriteByte ${address} 0x4
|
|
|
|
*** Test Cases ***
|
|
Should Log Unhandled Read From Monitor
|
|
Create Log Tester 0
|
|
Execute Command mach create
|
|
Execute Command sysbus ReadDoubleWord 0x0
|
|
|
|
Wait For Log Entry ReadDoubleWord from non existing peripheral at 0x0
|
|
|
|
Should Log Unhandled Write From Monitor
|
|
Create Log Tester 0
|
|
Execute Command mach create
|
|
Execute Command sysbus WriteDoubleWord 0x0 0x147
|
|
|
|
Wait For Log Entry WriteDoubleWord to non existing peripheral at 0x0, value 0x147
|
|
|
|
Should Log Unhandled Software Read
|
|
Create Log Tester 1000
|
|
Create Machine
|
|
|
|
# lw x0, 0(x0)
|
|
Execute Command sysbus WriteDoubleWord 0x1000 0x00002003
|
|
|
|
Start Emulation
|
|
|
|
Wait For Log Entry [cpu: 0x1000] ReadDoubleWord from non existing peripheral at 0x0
|
|
|
|
Should Log Unhandled Software Read From Tagged Area
|
|
Create Log Tester 1000
|
|
Create Machine
|
|
|
|
# lw x0, 4(x0)
|
|
Execute Command sysbus WriteDoubleWord 0x1000 0x00402003
|
|
|
|
Start Emulation
|
|
|
|
Wait For Log Entry [cpu: 0x1000] (tag: 'tagged_region') ReadDoubleWord from non existing peripheral at 0x4, returning 0x0
|
|
|
|
Should Log Unhandled Software Write
|
|
Create Log Tester 1000
|
|
Create Machine
|
|
|
|
# sw x0, 0(x0)
|
|
Execute Command sysbus WriteDoubleWord 0x1000 0x00002023
|
|
|
|
Start Emulation
|
|
|
|
Wait For Log Entry [cpu: 0x1000] WriteDoubleWord to non existing peripheral at 0x0, value 0x0
|
|
|
|
Should Log Unhandled Write From Software To Tagged Area
|
|
Create Log Tester 1000
|
|
Create Machine
|
|
|
|
# sw x0, 4(x0)
|
|
Execute Command sysbus WriteDoubleWord 0x1000 0x00002223
|
|
|
|
Start Emulation
|
|
|
|
Wait For Log Entry [cpu: 0x1000] (tag: 'tagged_region') WriteDoubleWord to non existing peripheral at 0x4, value 0x0
|
|
|
|
Should Not Log Unhandled Access As Warning On Silent Tag
|
|
Create Log Tester 0
|
|
Create Machine
|
|
Execute Command logLevel 0
|
|
|
|
${tag}= Set Variable test1
|
|
Tag Area And Access It From Sysbus address=0x06 tag=${tag} silent=true
|
|
Wait For Log Entry (tag: '${tag}') keep=true level=Debug
|
|
Should Not Be In Log (tag: '${tag}') level=Warning
|
|
|
|
Should Log From Subobject
|
|
Create Log Tester 1
|
|
Create Machine
|
|
Execute Command include "${CURDIR}/SubobjectTester.cs"
|
|
Execute Command EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.Dynamic.SubobjectTester"
|
|
|
|
Execute Command machine LoadPlatformDescriptionFromString "tester: Dynamic.SubobjectTester @ sysbus 0xf0000000"
|
|
|
|
Start Emulation
|
|
|
|
Execute Command logLevel -1 sysbus.tester
|
|
Execute Command sysbus WriteDoubleWord 0xf0000000 0x1
|
|
Wait For Log Entry Hello from object
|
|
Wait For Log Entry Hello from sub-object
|
|
|
|
Should Set Machine Log Level
|
|
Create Machine
|
|
|
|
${l}= Execute Command logLevel
|
|
Should Not Contain ${l} machine-0:sysbus : ERROR collapse_spaces=True
|
|
Should Not Contain ${l} machine-0:sysbus.cpu : ERROR collapse_spaces=True
|
|
Should Not Contain ${l} machine-0:sysbus.mem : ERROR collapse_spaces=True
|
|
|
|
Execute Command logLevel 3 machine-0
|
|
${l}= Execute Command logLevel
|
|
|
|
Should Contain ${l} machine-0:sysbus : ERROR collapse_spaces=True
|
|
Should Contain ${l} machine-0:sysbus.cpu : ERROR collapse_spaces=True
|
|
Should Contain ${l} machine-0:sysbus.mem : ERROR collapse_spaces=True
|
|
|
|
Should Set Machine Log Level 2
|
|
Create Machine
|
|
Create Machine
|
|
|
|
${l}= Execute Command logLevel
|
|
|
|
Should Not Contain ${l} machine-0:sysbus : ERROR collapse_spaces=True
|
|
Should Not Contain ${l} machine-0:sysbus.cpu : ERROR collapse_spaces=True
|
|
Should Not Contain ${l} machine-0:sysbus.mem : ERROR collapse_spaces=True
|
|
|
|
Should Not Contain ${l} machine-1:sysbus : ERROR collapse_spaces=True
|
|
Should Not Contain ${l} machine-1:sysbus.cpu : ERROR collapse_spaces=True
|
|
Should Not Contain ${l} machine-1:sysbus.mem : ERROR collapse_spaces=True
|
|
|
|
Execute Command mach set 1
|
|
Execute Command logLevel 3 machine-0
|
|
${l}= Execute Command logLevel
|
|
|
|
Should Contain ${l} machine-0:sysbus : ERROR collapse_spaces=True
|
|
Should Contain ${l} machine-0:sysbus.cpu : ERROR collapse_spaces=True
|
|
Should Contain ${l} machine-0:sysbus.mem : ERROR collapse_spaces=True
|
|
|
|
Should Not Contain ${l} machine-1:sysbus : ERROR collapse_spaces=True
|
|
Should Not Contain ${l} machine-1:sysbus.cpu : ERROR collapse_spaces=True
|
|
Should Not Contain ${l} machine-1:sysbus.mem : ERROR collapse_spaces=True
|
|
|
|
Should Set Machine Log Level 3
|
|
Create Machine
|
|
Create Machine
|
|
|
|
${l}= Execute Command logLevel
|
|
|
|
Should Not Contain ${l} machine-0:sysbus : ERROR collapse_spaces=True
|
|
Should Not Contain ${l} machine-0:sysbus.cpu : ERROR collapse_spaces=True
|
|
Should Not Contain ${l} machine-0:sysbus.mem : ERROR collapse_spaces=True
|
|
|
|
Should Not Contain ${l} machine-1:sysbus : ERROR collapse_spaces=True
|
|
Should Not Contain ${l} machine-1:sysbus.cpu : ERROR collapse_spaces=True
|
|
Should Not Contain ${l} machine-1:sysbus.mem : ERROR collapse_spaces=True
|
|
|
|
Execute Command mach set 1
|
|
Execute Command logLevel 3 machine-1
|
|
${l}= Execute Command logLevel
|
|
|
|
Should Not Contain ${l} machine-0:sysbus : ERROR collapse_spaces=True
|
|
Should Not Contain ${l} machine-0:sysbus.cpu : ERROR collapse_spaces=True
|
|
Should Not Contain ${l} machine-0:sysbus.mem : ERROR collapse_spaces=True
|
|
|
|
Should Contain ${l} machine-1:sysbus : ERROR collapse_spaces=True
|
|
Should Contain ${l} machine-1:sysbus.cpu : ERROR collapse_spaces=True
|
|
Should Contain ${l} machine-1:sysbus.mem : ERROR collapse_spaces=True
|
|
|
|
Should Fail On Failing String In Log
|
|
Create Log Tester 0
|
|
Execute Command mach create
|
|
Execute Command sysbus ReadDoubleWord 0x0
|
|
|
|
Register Failing Log String ReadDoubleWord from non existing peripheral at 0x. treatAsRegex=true
|
|
|
|
Run Keyword And Expect Error
|
|
... *Test failing entry*
|
|
... Wait For Log Entry ReadDoubleWord from non existing peripheral at 0x0
|
|
|
|
Should Unregister Failing String In Log
|
|
Create Log Tester 0
|
|
Execute Command mach create
|
|
Execute Command sysbus ReadDoubleWord 0x0
|
|
|
|
Register Failing Log String ReadDoubleWord from non existing peripheral at 0x. treatAsRegex=true
|
|
|
|
Unregister Failing Log String ReadDoubleWord from non existing peripheral at 0x. treatAsRegex=true
|
|
|
|
Wait For Log Entry ReadDoubleWord from non existing peripheral at 0x0
|
|
|
|
# It is important that this tests is placed after some tests that creates a log tester
|
|
Should Not Preserve Log Tester Between Tests
|
|
Run Keyword And Expect Error *Log tester is not available*
|
|
... Should Not Be In Log Non existing log message
|
|
|
|
Should Include Register Name In Unhandled Software Read Log
|
|
Create Log Tester timeout=0.000001
|
|
Create Machine
|
|
|
|
Execute Command cpu SetRegister "a0" ${test_peripheral_addr}
|
|
Execute Command cpu AssembleBlock 0x1000 "lw x0, 8(a0); j 0"
|
|
|
|
Wait For Log Entry test_peripheral: Unhandled read from offset 0x8 (Third).
|
|
|
|
Should Include Register Name In Unhandled Software Write Log
|
|
Create Log Tester timeout=0.000001
|
|
Create Machine
|
|
|
|
Execute Command cpu SetRegister "a0" ${test_peripheral_addr}
|
|
Execute Command cpu AssembleBlock 0x1000 "sw x0, 8(a0); j 0"
|
|
|
|
Wait For Log Entry test_peripheral: Unhandled write to offset 0x8 (Third), value 0x0.
|