Software APIs
ibex_fi_commands.h
1 // Copyright lowRISC contributors (OpenTitan project).
2 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3 // SPDX-License-Identifier: Apache-2.0
4 
5 #ifndef OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_IBEX_FI_COMMANDS_H_
6 #define OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_IBEX_FI_COMMANDS_H_
7 #include "sw/device/lib/ujson/ujson_derive.h"
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 // clang-format off
13 
14 #define IBEXFI_SUBCOMMAND(_, value) \
15  value(_, AddressTranslation) \
16  value(_, AddressTranslationCfg) \
17  value(_, CharCondBranchBeq) \
18  value(_, CharCondBranchBge) \
19  value(_, CharCondBranchBgeu) \
20  value(_, CharCondBranchBlt) \
21  value(_, CharCondBranchBltu) \
22  value(_, CharCondBranchBne) \
23  value(_, CharCsrRead) \
24  value(_, CharCsrWrite) \
25  value(_, CharFlashRead) \
26  value(_, CharFlashWrite) \
27  value(_, CharHardenedCheckComplementBranch) \
28  value(_, CharHardenedCheckUnimp) \
29  value(_, CharHardenedCheck2Unimps) \
30  value(_, CharHardenedCheck3Unimps) \
31  value(_, CharHardenedCheck4Unimps) \
32  value(_, CharHardenedCheck5Unimps) \
33  value(_, CharMemOpLoop) \
34  value(_, CharRegisterFile) \
35  value(_, CharRegisterFileRead) \
36  value(_, CharRegOpLoop) \
37  value(_, CharSramRead) \
38  value(_, CharSramStatic) \
39  value(_, CharSramWrite) \
40  value(_, CharSramWriteRead) \
41  value(_, CharSramWriteStaticUnrolled) \
42  value(_, CharUncondBranch) \
43  value(_, CharUncondBranchNop) \
44  value(_, CharUnrolledMemOpLoop) \
45  value(_, CharUnrolledRegOpLoop) \
46  value(_, CharUnrolledRegOpLoopChain) \
47  value(_, Init) \
48  value(_, OtpDataRead) \
49  value(_, OtpReadLock) \
50  value(_, OtpWriteLock)
51 UJSON_SERDE_ENUM(IbexFiSubcommand, ibex_fi_subcommand_t, IBEXFI_SUBCOMMAND);
52 
53 #define IBEXFI_TEST_RESULT(field, string) \
54  field(result, uint32_t) \
55  field(err_status, uint32_t) \
56  field(alerts, uint32_t, 3) \
57  field(ast_alerts, uint32_t, 2)
58 UJSON_SERDE_STRUCT(IbexFiTestResult, ibex_fi_test_result_t, IBEXFI_TEST_RESULT);
59 
60 #define IBEXFI_TEST_RESULT_REGISTERS(field, string) \
61  field(result, uint32_t) \
62  field(registers, uint32_t, 32) \
63  field(err_status, uint32_t) \
64  field(alerts, uint32_t, 3) \
65  field(ast_alerts, uint32_t, 2)
66 UJSON_SERDE_STRUCT(IbexFiTestResultRegisters, ibex_fi_test_result_registers_t, IBEXFI_TEST_RESULT_REGISTERS);
67 
68 #define IBEXFI_TEST_RESULT_MULT(field, string) \
69  field(result1, uint32_t) \
70  field(result2, uint32_t) \
71  field(err_status, uint32_t) \
72  field(alerts, uint32_t, 3) \
73  field(ast_alerts, uint32_t, 2)
74 UJSON_SERDE_STRUCT(IbexFiTestResultMult, ibex_fi_test_result_mult_t, IBEXFI_TEST_RESULT_MULT);
75 
76 #define IBEXFI_LOOP_COUNTER_OUTPUT(field, string) \
77  field(loop_counter, uint32_t) \
78  field(err_status, uint32_t) \
79  field(alerts, uint32_t, 3) \
80  field(ast_alerts, uint32_t, 2)
81 UJSON_SERDE_STRUCT(IbexFiLoopCounterOutput, ibex_fi_loop_counter_t, IBEXFI_LOOP_COUNTER_OUTPUT);
82 
83 #define IBEXFI_LOOP_COUNTER_MIRRORED_OUTPUT(field, string) \
84  field(loop_counter1, uint32_t) \
85  field(loop_counter2, uint32_t) \
86  field(err_status, uint32_t) \
87  field(alerts, uint32_t, 3) \
88  field(ast_alerts, uint32_t, 2)
89 UJSON_SERDE_STRUCT(IbexFiLoopCounterMirroredOutput, ibex_fi_loop_counter_mirrored_t, IBEXFI_LOOP_COUNTER_MIRRORED_OUTPUT);
90 
91 #define IBEXFI_FAULTY_ADDRESSES_DATA(field, string) \
92  field(err_status, uint32_t) \
93  field(addresses, uint32_t, 8) \
94  field(data, uint32_t, 8) \
95  field(alerts, uint32_t, 3) \
96  field(ast_alerts, uint32_t, 2)
97 UJSON_SERDE_STRUCT(IbexFiFaultyAddressesData, ibex_fi_faulty_addresses_data_t, IBEXFI_FAULTY_ADDRESSES_DATA);
98 
99 #define IBEXFI_FAULTY_ADDRESSES(field, string) \
100  field(err_status, uint32_t) \
101  field(addresses, uint32_t, 8) \
102  field(alerts, uint32_t, 3) \
103  field(ast_alerts, uint32_t, 2)
104 UJSON_SERDE_STRUCT(IbexFiFaultyAddresses, ibex_fi_faulty_addresses_t, IBEXFI_FAULTY_ADDRESSES);
105 
106 // clang-format on
107 
108 #ifdef __cplusplus
109 }
110 #endif
111 #endif // OPENTITAN_SW_DEVICE_TESTS_PENETRATIONTESTS_JSON_IBEX_FI_COMMANDS_H_