1*** Keywords ***
2Create Machine
3    Execute Command           using sysbus
4    Execute Command           mach create
5    Execute Command           machine LoadPlatformDescriptionFromString "cpu: CPU.RiscV32 @ sysbus { cpuType: \\"rv32imac\\"; timeProvider: empty }"
6    Execute Command           machine LoadPlatformDescriptionFromString "mem: Memory.MappedMemory @ sysbus 0x1000 { size: 0x10000000 }"
7    Execute Command           sysbus Tag <0x4, 0x4> "tagged_region"
8
9    Execute Command           cpu PC 0x1000
10
11
12*** Test Cases ***
13Should Log Unhandled Read From Monitor
14    Create Log Tester         0
15    Execute Command           mach create
16    Execute Command           sysbus ReadDoubleWord 0x0
17
18    Wait For Log Entry        ReadDoubleWord from non existing peripheral at 0x0
19
20Should Log Unhandled Write From Monitor
21    Create Log Tester         0
22    Execute Command           mach create
23    Execute Command           sysbus WriteDoubleWord 0x0 0x147
24
25    Wait For Log Entry        WriteDoubleWord to non existing peripheral at 0x0, value 0x147
26
27Should Log Unhandled Software Read
28    Create Log Tester         1000
29    Create Machine
30
31    # lw x0, 0(x0)
32    Execute Command           sysbus WriteDoubleWord 0x1000 0x00002003
33
34    Start Emulation
35
36    Wait For Log Entry        [cpu: 0x1000] ReadDoubleWord from non existing peripheral at 0x0
37
38Should Log Unhandled Software Read From Tagged Area
39    Create Log Tester         1000
40    Create Machine
41
42    # lw x0, 4(x0)
43    Execute Command           sysbus WriteDoubleWord 0x1000 0x00402003
44
45    Start Emulation
46
47    Wait For Log Entry        [cpu: 0x1000] (tag: 'tagged_region') ReadDoubleWord from non existing peripheral at 0x4, returning 0x0
48
49Should Log Unhandled Software Write
50    Create Log Tester         1000
51    Create Machine
52
53    # sw x0, 0(x0)
54    Execute Command           sysbus WriteDoubleWord 0x1000 0x00002023
55
56    Start Emulation
57
58    Wait For Log Entry        [cpu: 0x1000] WriteDoubleWord to non existing peripheral at 0x0, value 0x0
59
60Should Log Unhandled Write From Software To Tagged Area
61    Create Log Tester         1000
62    Create Machine
63
64    # sw x0, 4(x0)
65    Execute Command           sysbus WriteDoubleWord 0x1000 0x00002223
66
67    Start Emulation
68
69    Wait For Log Entry        [cpu: 0x1000] (tag: 'tagged_region') WriteDoubleWord to non existing peripheral at 0x4, value 0x0
70
71Should Log From Subobject
72    Create Log Tester         1
73    Create Machine
74    Execute Command           include "${CURDIR}/SubobjectTester.cs"
75    Execute Command           EnsureTypeIsLoaded "Antmicro.Renode.Peripherals.Dynamic.SubobjectTester"
76
77    Execute Command           machine LoadPlatformDescriptionFromString "tester: Dynamic.SubobjectTester @ sysbus 0xf0000000"
78
79    Start Emulation
80
81    Execute Command           logLevel -1 sysbus.tester
82    Execute Command           sysbus WriteDoubleWord 0xf0000000 0x1
83    Wait For Log Entry        Hello from object
84    Wait For Log Entry        Hello from sub-object
85
86Should Set Machine Log Level
87    Create Machine
88
89    ${l}=  Execute Command    logLevel
90    Should Not Contain   ${l}  machine-0:sysbus : ERROR      collapse_spaces=True
91    Should Not Contain   ${l}  machine-0:sysbus.cpu : ERROR  collapse_spaces=True
92    Should Not Contain   ${l}  machine-0:sysbus.mem : ERROR  collapse_spaces=True
93
94    Execute Command           logLevel 3 machine-0
95    ${l}=  Execute Command    logLevel
96
97    Should Contain       ${l}  machine-0:sysbus : ERROR      collapse_spaces=True
98    Should Contain       ${l}  machine-0:sysbus.cpu : ERROR  collapse_spaces=True
99    Should Contain       ${l}  machine-0:sysbus.mem : ERROR  collapse_spaces=True
100
101Should Set Machine Log Level 2
102    Create Machine
103    Create Machine
104
105    ${l}=  Execute Command    logLevel
106
107    Should Not Contain   ${l}  machine-0:sysbus : ERROR      collapse_spaces=True
108    Should Not Contain   ${l}  machine-0:sysbus.cpu : ERROR  collapse_spaces=True
109    Should Not Contain   ${l}  machine-0:sysbus.mem : ERROR  collapse_spaces=True
110
111    Should Not Contain   ${l}  machine-1:sysbus : ERROR      collapse_spaces=True
112    Should Not Contain   ${l}  machine-1:sysbus.cpu : ERROR  collapse_spaces=True
113    Should Not Contain   ${l}  machine-1:sysbus.mem : ERROR  collapse_spaces=True
114
115    Execute Command           mach set 1
116    Execute Command           logLevel 3 machine-0
117    ${l}=  Execute Command    logLevel
118
119    Should Contain       ${l}  machine-0:sysbus : ERROR      collapse_spaces=True
120    Should Contain       ${l}  machine-0:sysbus.cpu : ERROR  collapse_spaces=True
121    Should Contain       ${l}  machine-0:sysbus.mem : ERROR  collapse_spaces=True
122
123    Should Not Contain   ${l}  machine-1:sysbus : ERROR      collapse_spaces=True
124    Should Not Contain   ${l}  machine-1:sysbus.cpu : ERROR  collapse_spaces=True
125    Should Not Contain   ${l}  machine-1:sysbus.mem : ERROR  collapse_spaces=True
126
127Should Set Machine Log Level 3
128    Create Machine
129    Create Machine
130
131    ${l}=  Execute Command    logLevel
132
133    Should Not Contain   ${l}  machine-0:sysbus : ERROR      collapse_spaces=True
134    Should Not Contain   ${l}  machine-0:sysbus.cpu : ERROR  collapse_spaces=True
135    Should Not Contain   ${l}  machine-0:sysbus.mem : ERROR  collapse_spaces=True
136
137    Should Not Contain   ${l}  machine-1:sysbus : ERROR      collapse_spaces=True
138    Should Not Contain   ${l}  machine-1:sysbus.cpu : ERROR  collapse_spaces=True
139    Should Not Contain   ${l}  machine-1:sysbus.mem : ERROR  collapse_spaces=True
140
141    Execute Command           mach set 1
142    Execute Command           logLevel 3 machine-1
143    ${l}=  Execute Command    logLevel
144
145    Should Not Contain   ${l}  machine-0:sysbus : ERROR      collapse_spaces=True
146    Should Not Contain   ${l}  machine-0:sysbus.cpu : ERROR  collapse_spaces=True
147    Should Not Contain   ${l}  machine-0:sysbus.mem : ERROR  collapse_spaces=True
148
149    Should Contain       ${l}  machine-1:sysbus : ERROR      collapse_spaces=True
150    Should Contain       ${l}  machine-1:sysbus.cpu : ERROR  collapse_spaces=True
151    Should Contain       ${l}  machine-1:sysbus.mem : ERROR  collapse_spaces=True
152