仿真平台内核初版 -tlib库 包含<sparc arm riscv powerPC>
This commit is contained in:
108
tests/unit-tests/virtual-time.robot
Normal file
108
tests/unit-tests/virtual-time.robot
Normal file
@@ -0,0 +1,108 @@
|
||||
*** Keywords ***
|
||||
Prepare Machine
|
||||
${TEST_DIR}= Evaluate r"${CURDIR}".replace(" ", "\\ ")
|
||||
Execute Command include @${TEST_DIR}/TestPeripheral.cs
|
||||
|
||||
Execute Command mach create
|
||||
Execute Command machine LoadPlatformDescriptionFromString "cpu: CPU.ARMv7A @ sysbus { cpuType: \\"cortex-a9\\" }"
|
||||
Execute Command machine LoadPlatformDescriptionFromString "mem: Memory.MappedMemory @ sysbus 0x0 { size: 0x1000 }"
|
||||
Execute Command machine LoadPlatformDescriptionFromString "mock: Mocks.TestPeripheral @ sysbus 0x2000"
|
||||
|
||||
|
||||
Prepare Multicore Machine
|
||||
${TEST_DIR}= Evaluate r"${CURDIR}".replace(" ", "\\ ")
|
||||
Execute Command include @${TEST_DIR}/TestPeripheral.cs
|
||||
|
||||
Execute Command mach create
|
||||
Execute Command machine LoadPlatformDescriptionFromString "cpu0: CPU.ARMv7A @ sysbus { cpuType: \\"cortex-a9\\" }"
|
||||
Execute Command machine LoadPlatformDescriptionFromString "cpu1: CPU.ARMv7A @ sysbus { cpuType: \\"cortex-a9\\" }"
|
||||
Execute Command machine LoadPlatformDescriptionFromString "mem: Memory.MappedMemory @ sysbus 0x0 { size: 0x1000 }"
|
||||
Execute Command machine LoadPlatformDescriptionFromString "mock: Mocks.TestPeripheral @ sysbus 0x2000"
|
||||
|
||||
|
||||
Scheduled Action Should Be Delayed By ${delay} Microseconds
|
||||
${x}= Wait For Log Entry Written value 0x0 to Reg0
|
||||
${c}= Get Regexp Matches ${x} \\.([0-9]+) 1
|
||||
${y}= Evaluate str(int(${c[0]}) + ${delay}).rjust(6, '0')
|
||||
Wait For Log Entry Executing scheduled action for Reg0; current timestamp is 00:00:00.${y}
|
||||
|
||||
Fill Memory
|
||||
# prepare a block of code
|
||||
# containing precisely 12 instructions
|
||||
# consisting mostly of `nops` with
|
||||
# a single `strb` inbetween
|
||||
|
||||
# 1: nop
|
||||
Execute Command sysbus WriteDoubleWord 0x10 0xe320f000
|
||||
# 2: nop
|
||||
Execute Command sysbus WriteDoubleWord 0x14 0xe320f000
|
||||
# 3: nop
|
||||
Execute Command sysbus WriteDoubleWord 0x18 0xe320f000
|
||||
# 4: nop
|
||||
Execute Command sysbus WriteDoubleWord 0x1c 0xe320f000
|
||||
# 5: nop
|
||||
Execute Command sysbus WriteDoubleWord 0x20 0xe320f000
|
||||
# 6: nop
|
||||
Execute Command sysbus WriteDoubleWord 0x24 0xe320f000
|
||||
# 7: nop
|
||||
Execute Command sysbus WriteDoubleWord 0x28 0xe320f000
|
||||
# 8: strb r0, [r1]
|
||||
Execute Command sysbus WriteDoubleWord 0x2c 0xe5c10000
|
||||
# 9: nop
|
||||
Execute Command sysbus WriteDoubleWord 0x30 0xe320f000
|
||||
# 10: nop
|
||||
Execute Command sysbus WriteDoubleWord 0x34 0xe320f000
|
||||
# 11: nop
|
||||
Execute Command sysbus WriteDoubleWord 0x38 0xe320f000
|
||||
# 12: nop
|
||||
Execute Command sysbus WriteDoubleWord 0x3c 0xe320f000
|
||||
# 13: j -4
|
||||
Execute Command sysbus WriteDoubleWord 0x40 0xeafffffd
|
||||
|
||||
|
||||
*** Test Cases ***
|
||||
Should Delay Action
|
||||
Prepare Machine
|
||||
Execute Command sysbus.mock SetDelay 3
|
||||
|
||||
Create Log Tester 1
|
||||
|
||||
Execute Command sysbus.cpu PC 0x10
|
||||
Execute Command sysbus.cpu SetRegister 1 0x2000
|
||||
|
||||
Fill Memory
|
||||
Scheduled Action Should Be Delayed By 3 Microseconds
|
||||
|
||||
|
||||
Should Delay Action With Multiple Cores
|
||||
Prepare Multicore Machine
|
||||
Execute Command machine SetSerialExecution true
|
||||
Execute Command sysbus.mock SetDelay 3
|
||||
|
||||
Create Log Tester 1
|
||||
|
||||
Execute Command sysbus.cpu0 PC 0x10
|
||||
Execute Command sysbus.cpu0 SetRegister 1 0x2000
|
||||
|
||||
# just make the other CPU spin in a loop
|
||||
Execute Command sysbus.cpu1 PC 0x3c
|
||||
|
||||
Fill Memory
|
||||
Scheduled Action Should Be Delayed By 3 Microseconds
|
||||
|
||||
|
||||
Should Delay Action With Multiple Cores In Different Ordering
|
||||
Prepare Multicore Machine
|
||||
Execute Command machine SetSerialExecution true
|
||||
Execute Command sysbus.mock SetDelay 3
|
||||
|
||||
Create Log Tester 1
|
||||
|
||||
Execute Command sysbus.cpu1 PC 0x10
|
||||
Execute Command sysbus.cpu1 SetRegister 1 0x2000
|
||||
|
||||
# just make the other CPU spin in a loop
|
||||
Execute Command sysbus.cpu0 PC 0x3c
|
||||
|
||||
Fill Memory
|
||||
Scheduled Action Should Be Delayed By 3 Microseconds
|
||||
Reference in New Issue
Block a user