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"
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) \
48 value(_, OtpDataRead) \
49 value(_, OtpReadLock) \
50 value(_, OtpWriteLock)
51 UJSON_SERDE_ENUM(IbexFiSubcommand, ibex_fi_subcommand_t, IBEXFI_SUBCOMMAND);
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);
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);
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);
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);
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);
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);
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);