blob: 7af1f0e6462639d1a41861e9df03295e87b3e677 [file] [log] [blame]
Kshitij Sisodiaf9efe0d2022-09-30 16:42:50 +01001#
Mikael Olssondc18cea2024-02-16 11:04:46 +01002# SPDX-FileCopyrightText: Copyright 2021-2022, 2024 Arm Limited and/or its affiliates <open-source-office@arm.com>
Kshitij Sisodiaf9efe0d2022-09-30 16:42:50 +01003# SPDX-License-Identifier: Apache-2.0
4#
5from ethosu_driver._generated.driver import SemanticVersion
6from ethosu_driver._generated.driver import HardwareId
7from ethosu_driver._generated.driver import HardwareConfiguration
8from ethosu_driver._generated.driver import Capabilities
9
10
11def check_semantic_version(ma, mi, pa, sv):
12 assert ma == sv.major
13 assert mi == sv.minor
14 assert pa == sv.patch
15
16
17def test_semantic_version():
18 sv = SemanticVersion(1, 2, 3)
19 assert '{ major=1, minor=2, patch=3 }' == sv.__str__()
20 check_semantic_version(1, 2, 3, sv)
21
22
23def test_hardware_id():
24 version = SemanticVersion(1, 2, 3)
25 product = SemanticVersion(4, 5, 6)
26 architecture = SemanticVersion(7, 8, 9)
27 hw_id = HardwareId(1, version, product, architecture)
28
29 assert 1 == hw_id.versionStatus
30
31 check_semantic_version(1, 2, 3, hw_id.version)
32 check_semantic_version(4, 5, 6, hw_id.product)
33 check_semantic_version(7, 8, 9, hw_id.architecture)
34
35 assert '{versionStatus=1, version={ major=1, minor=2, patch=3 }, product={ major=4, minor=5, patch=6 }, ' \
36 'architecture={ major=7, minor=8, patch=9 }}' == hw_id.__str__()
37
38
39def test_hw_configuration():
Mikael Olssondc18cea2024-02-16 11:04:46 +010040 hw_cfg = HardwareConfiguration(128, 1, HardwareConfiguration.DeviceType_SUBSYSTEM, True)
Kshitij Sisodiaf9efe0d2022-09-30 16:42:50 +010041
42 assert 1 == hw_cfg.cmdStreamVersion
43 assert 128 == hw_cfg.macsPerClockCycle
44 assert hw_cfg.customDma
Mikael Olssondc18cea2024-02-16 11:04:46 +010045 assert HardwareConfiguration.DeviceType_SUBSYSTEM == hw_cfg.type
Kshitij Sisodiaf9efe0d2022-09-30 16:42:50 +010046
Mikael Olssondc18cea2024-02-16 11:04:46 +010047 assert "{macsPerClockCycle=128, cmdStreamVersion=1, type=subsystem, customDma=True}" == hw_cfg.__str__()
Kshitij Sisodiaf9efe0d2022-09-30 16:42:50 +010048
49
50def test_capabilities():
51 version = SemanticVersion(100, 200, 300)
52 product = SemanticVersion(400, 500, 600)
53 architecture = SemanticVersion(700, 800, 900)
54 hw_id = HardwareId(1, version, product, architecture)
Mikael Olssondc18cea2024-02-16 11:04:46 +010055 hw_cfg = HardwareConfiguration(256, 1000, HardwareConfiguration.DeviceType_SUBSYSTEM, False)
Kshitij Sisodiaf9efe0d2022-09-30 16:42:50 +010056 driver_v = SemanticVersion(10, 20, 30)
57
58 cap = Capabilities(hw_id, hw_cfg, driver_v)
59
60 check_semantic_version(10, 20, 30, cap.driver)
61
62 check_semantic_version(100, 200, 300, cap.hwId.version)
63 check_semantic_version(400, 500, 600, cap.hwId.product)
64 check_semantic_version(700, 800, 900, cap.hwId.architecture)
65
66 assert 1000 == cap.hwCfg.cmdStreamVersion
67 assert 256 == cap.hwCfg.macsPerClockCycle
Mikael Olssondc18cea2024-02-16 11:04:46 +010068 assert HardwareConfiguration.DeviceType_SUBSYSTEM == cap.hwCfg.type
Kshitij Sisodiaf9efe0d2022-09-30 16:42:50 +010069 assert not cap.hwCfg.customDma
70
71 assert '{hwId={versionStatus=1, version={ major=100, minor=200, patch=300 }, ' \
72 'product={ major=400, minor=500, patch=600 }, ' \
73 'architecture={ major=700, minor=800, patch=900 }}, ' \
Mikael Olssondc18cea2024-02-16 11:04:46 +010074 'hwCfg={macsPerClockCycle=256, cmdStreamVersion=1000, type=subsystem, customDma=False}, ' \
Kshitij Sisodiaf9efe0d2022-09-30 16:42:50 +010075 'driver={ major=10, minor=20, patch=30 }}' == cap.__str__()