18#ifndef BACKENDS_TOFINO_BF_ASM_CONSTANTS_H_
19#define BACKENDS_TOFINO_BF_ASM_CONSTANTS_H_
23 LOGICAL_TABLES_PER_STAGE = 16,
24 PHYSICAL_TABLES_PER_STAGE = 16,
25 TCAM_TABLES_PER_STAGE = 8,
27 LOGICAL_SRAM_ROWS = 16,
28 SRAM_UNITS_PER_ROW = 12,
29 MAPRAM_UNITS_PER_ROW = 6,
32 SRAM_DEPTH = 1 << SRAM_DEPTH_BITS,
34 LAMB_DEPTH = 1 << LAMB_DEPTH_BITS,
36 TCAM_UNITS_PER_ROW = 2,
37 TCAM_XBAR_GROUPS = 12,
38 TCAM_XBAR_GROUP_SIZE = 44,
39 TCAM_XBAR_INPUT_BYTES = 68,
42 TCAM_FORMAT_WIDTH = 47,
43 TCAM_PAYLOAD_BITS = 1,
44 TCAM_PAYLOAD_BITS_START = 0,
45 TCAM_MATCH_BITS_START = TCAM_PAYLOAD_BITS_START + TCAM_PAYLOAD_BITS,
47 TCAM_PARITY_BITS_START = 45,
48 TCAM_VERSION_BITS = 2,
49 TCAM_VERSION_BITS_START = 43,
50 EXACT_XBAR_GROUPS = 8,
51 EXACT_XBAR_GROUP_SIZE = 128,
53 BYTE_XBAR_GROUP_SIZE = 8,
54 GALOIS_FIELD_MATRIX_COLUMNS = 52,
55 EXACT_HASH_GROUP_SIZE = 52,
56 EXACT_HASH_ADR_BITS = 10,
57 EXACT_HASH_ADR_GROUPS = 5,
58 EXACT_HASH_SELECT_BITS = 12,
59 EXACT_HASH_FIRST_SELECT_BIT = EXACT_HASH_GROUP_SIZE - EXACT_HASH_SELECT_BITS,
62 NEXT_TABLE_MAX_RAM_EXTRACT_BITS = 8,
63 MAX_LONGBRANCH_TAGS = 8,
64 MAX_IMMED_ACTION_DATA = 32,
65 ACTION_DATA_8B_SLOTS = 16,
66 ACTION_DATA_16B_SLOTS = 24,
67 ACTION_DATA_32B_SLOTS = 16,
68 ACTION_DATA_BUS_SLOTS = ACTION_DATA_8B_SLOTS + ACTION_DATA_16B_SLOTS + ACTION_DATA_32B_SLOTS,
69 ACTION_DATA_BUS_BYTES =
70 ACTION_DATA_8B_SLOTS + 2 * ACTION_DATA_16B_SLOTS + 4 * ACTION_DATA_32B_SLOTS,
71 ACTION_HV_XBAR_SLICES = 8,
72 ACTION_HV_XBAR_SLICE_SIZE = 16,
73 ACTION_INSTRUCTION_SUCCESSOR_TABLE_DEPTH = 8,
74 ACTION_INSTRUCTION_ADR_ENABLE = 0x40,
75 ACTION_IMEM_SLOTS = 32,
76 ACTION_IMEM_COLORS = 2,
77 ACTION_IMEM_ADDR_MAX = ACTION_IMEM_SLOTS * ACTION_IMEM_COLORS,
78 ACTION_ALWAYS_RUN_IMEM_ADDR = 63,
79 SELECTOR_PORTS_PER_WORD = 120,
80 STATEFUL_PREDICATION_ENCODE_NOOP = 0,
81 STATEFUL_PREDICATION_ENCODE_NOTCMPHI = 3,
82 STATEFUL_PREDICATION_ENCODE_NOTCMPLO = 5,
83 STATEFUL_PREDICATION_ENCODE_CMPLO = 0xaaaa,
84 STATEFUL_PREDICATION_ENCODE_CMPHI = 0xcccc,
85 STATEFUL_PREDICATION_ENCODE_CMP0 = 0xaaaa,
86 STATEFUL_PREDICATION_ENCODE_CMP1 = 0xcccc,
87 STATEFUL_PREDICATION_ENCODE_CMP2 = 0xf0f0,
88 STATEFUL_PREDICATION_ENCODE_CMP3 = 0xff00,
89 STATEFUL_PREDICATION_ENCODE_UNCOND = 0xffff,
90 STATEFUL_PREDICATION_OUTPUT = 6,
94 REGISTER_PARAM_HANDLE_START = (0x08 << TYPE_ENUM_SHIFT),
95 ACTION_HANDLE_START = (0x20 << TYPE_ENUM_SHIFT),
96 FIELD_HANDLE_START = (0x9 << TYPE_ENUM_SHIFT),
97 PER_FLOW_ENABLE_BITS = 1,
100 METER_TYPE_START_BIT = 24,
101 METER_LOWER_HUFFMAN_BITS = 7,
102 METER_ADDRESS_BITS = 23,
103 METER_FULL_ADDRESS_BITS = METER_ADDRESS_BITS + PER_FLOW_ENABLE_BITS + METER_TYPE_BITS,
104 METER_ADDRESS_ZERO_PAD = 23,
105 METER_PER_FLOW_ENABLE_START_BIT = 23,
106 IDLETIME_BUSSES = 20,
107 IDLETIME_BUSSES_PER_HALF = IDLETIME_BUSSES / 2,
108 IDLETIME_ADDRESS_PER_FLOW_ENABLE_START_BIT = 20,
109 IDLETIME_ADDRESS_BITS = 20,
110 IDLETIME_FULL_ADDRESS_BITS = IDLETIME_ADDRESS_BITS + PER_FLOW_ENABLE_BITS,
111 IDLETIME_ADDRESS_ZERO_PAD = 4,
112 IDLETIME_HUFFMAN_BITS = 4,
113 SELECTOR_METER_TYPE_START_BIT = METER_TYPE_START_BIT,
114 SELECTOR_LOWER_HUFFMAN_BITS = METER_LOWER_HUFFMAN_BITS,
115 SELECTOR_METER_ADDRESS_BITS = METER_ADDRESS_BITS,
116 SELECTOR_PER_FLOW_ENABLE_START_BIT = METER_PER_FLOW_ENABLE_START_BIT,
117 SELECTOR_VHXBAR_HASH_BUS_INDEX = 3,
118 SELECTOR_LENGTH_MOD_BITS = 5,
119 STAT_ADDRESS_BITS = 19,
120 STAT_FULL_ADDRESS_BITS = STAT_ADDRESS_BITS + PER_FLOW_ENABLE_BITS,
121 STAT_ADDRESS_ZERO_PAD = 7,
122 STAT_METER_COLOR_LOWER_HUFFMAN_BITS = 3,
123 STATISTICS_PER_FLOW_ENABLE_START_BIT = 19,
124 STATISTICS_PER_FLOW_SHIFT_COUNT = 7,
125 ACTION_ADDRESS_ZERO_PAD = 5,
126 ACTION_ADDRESS_BITS = 22,
127 ACTION_FULL_ADDRESS_BITS = 23,
128 ACTION_DATA_PER_FLOW_ENABLE_START_BIT = ACTION_ADDRESS_BITS,
129 ACTION_DATA_LOWER_HUFFMAN_BITS = 5,
130 ACTION_DATA_UPPER_HUFFMAN_BITS = 2,
131 ACTION_DATA_HUFFMAN_BITS = ACTION_DATA_LOWER_HUFFMAN_BITS + ACTION_DATA_UPPER_HUFFMAN_BITS,
132 ACTION_DATA_HUFFMAN_DIFFERENCE = 10,
135 UPPER_MATCH_CENTRAL_FIRST_ROW = SRAM_ROWS / 2,
136 UPPER_MATCH_CENTRAL_FIRST_LOGICAL_ROW = UPPER_MATCH_CENTRAL_FIRST_ROW * 2,
137 CHECKSUM_ENGINE_PHVID_TOFINO_LOW = 224,
138 CHECKSUM_ENGINE_PHVID_TOFINO_HIGH = 235,
139 CHECKSUM_ENGINE_PHVID_TOFINO_PER_GRESS = 6,
140 CONSTANTS_PHVID_JBAY_LOW = 224,
141 CONSTANTS_PHVID_JBAY_HIGH = 232,
144enum METER_ACCESS_TYPE {
146 METER_LPF_COLOR_BLIND = 2,
148 METER_COLOR_AWARE = 6,
149 STATEFUL_INSTRUCTION_0 = 1,
150 STATEFUL_INSTRUCTION_1 = 3,
151 STATEFUL_INSTRUCTION_2 = 5,
152 STATEFUL_INSTRUCTION_3 = 7,
153 METER_COLOR_ACCESS = -1
166 TERNARY_INDIRECTION = 6,
183 TERNARY_INDIRECTION = 2,
187 SELECTOR_OVERFLOW = 7,
188 SELECTOR_ACTION_OVERFLOW = 8,
212 SYNTHETIC_TWO_PORT = 1,
226namespace BusHashGroup {
230 STATISTICS_ADDRESS = 2,
231 ACTION_DATA_ADDRESS = 3,