19#ifndef BACKENDS_TOFINO_BF_P4C_ARCH_PSA_PSA_MODEL_H_
20#define BACKENDS_TOFINO_BF_P4C_ARCH_PSA_PSA_MODEL_H_
22#include "frontends/common/model.h"
23#include "frontends/p4/coreLibrary.h"
31 PacketPathType_Model()
34 normal_unicast(
"NORMAL_UNICAST"_cs),
35 normal_multicast(
"NORMAL_MULTICAST"_cs),
36 clone_i2e(
"CLONE_I2E"_cs),
37 clone_e2e(
"CLONE_E2E"_cs),
38 resubmit(
"RESUBMIT"_cs),
39 recirculate(
"RECIRCULATE"_cs) {}
70 packets(
"PACKETS"_cs),
72 both(
"PACKETS_AND_BYTES"_cs) {}
79 HashAlgorithmType_Model()
81 identify(
"IDENTITY"_cs),
83 crc16_custom(
"CRC16_CUSTOM"_cs),
85 crc32_custom(
"CRC32_CUSTOM"_cs),
86 ones_complement16(
"ONES_COMPLEMENT16"_cs),
87 target_default(
"TARGET_DEFAULT"_cs) {}
98 IngressParserInputMetaType_Model()
100 ingress_port(
"ingress_port"_cs),
101 packet_path(
"packet_path"_cs) {}
107 EgressParserInputMetaType_Model()
109 egress_port(
"egress_port"_cs),
110 packet_path(
"packet_path"_cs) {}
116 IngressInputMetaType_Model()
118 ingress_port(
"ingress_port"_cs),
119 packet_path(
"packet_path"_cs),
120 ingress_timestamp(
"ingress_timestamp"_cs),
121 parser_error(
"parser_error"_cs) {}
129 IngressOutputMetaType_Model()
131 class_of_service(
"class_of_service"_cs),
133 clone_session_id(
"clone_session_id"_cs),
135 resubmit(
"resubmit"_cs),
136 multicast_group(
"multicast_group"_cs),
137 egress_port(
"egress_port"_cs) {}
148 EgressInputMetaType_Model()
150 class_of_service(
"class_of_service"_cs),
151 egress_port(
"egress_port"_cs),
152 packet_path(
"packet_path"_cs),
153 instance(
"instance"_cs),
154 egress_timestamp(
"egress_timestamp"_cs),
155 parser_error(
"parser_error"_cs) {}
165 EgressDeparserInputMetaType_Model()
167 egress_port(
"egress_port"_cs) {}
172 EgressOutputMetaType_Model()
175 clone_session_id(
"clone_session_id"_cs),
183 explicit CompilerGeneratedMetaType_Model(
cstring name)
186 mirror_id(
"mirror_id"_cs),
187 mirror_source(
"mirror_source"_cs),
188 clone_src(
"clone_src"_cs),
189 clone_digest_id(
"clone_digest_id"_cs) {}
199 : Extern_Model(
"Checksum"_cs), clear(
"clear"_cs), update(
"update"_cs), get(
"get"_cs) {}
207 InternetChecksum_Model()
208 : Extern_Model(
"InternetChecksum"_cs),
211 subtract(
"subtract"_cs),
213 get_state(
"get_state"_cs),
214 set_state(
"set_state"_cs) {}
225 Hash_Model() : Extern_Model(
"Hash"_cs), get(
"get"_cs), get_with_base(
"get"_cs) {}
232 Random_Model() : Extern_Model(
"Random"_cs), get(
"get"_cs) {}
237 Counter_Model() : Extern_Model(
"Counter"_cs), counterType(), count(
"count"_cs) {}
243 DirectCounter_Model() : Extern_Model(
"DirectCounter"_cs), counterType(), count(
"count"_cs) {}
249 Meter_Model() : Extern_Model(
"Meter"_cs), meterType(), execute(
"execute"_cs) {}
255 DirectMeter_Model() : Extern_Model(
"DirectMeter"_cs), meterType(), execute(
"execute"_cs) {}
262 : Extern_Model(
"Register"_cs),
263 sizeParam(
"size"_cs),
264 size_type(IR::Type_Bits::get(32)),
268 const IR::Type *size_type;
274 ActionProfile_Model()
275 : Extern_Model(
"ActionProfile"_cs),
276 sizeType(IR::Type_Bits::get(32)),
277 sizeParam(
"size"_cs) {}
278 const IR::Type *sizeType;
283 ActionSelector_Model()
284 : Extern_Model(
"ActionSelector"_cs),
286 sizeType(IR::Type_Bits::get(32)),
287 sizeParam(
"size"_cs),
288 outputWidthType(IR::Type_Bits::get(32)),
289 outputWidthParam(
"outputWidth"_cs) {}
291 const IR::Type *sizeType;
293 const IR::Type *outputWidthType;
298 Digest_Model() : Extern_Model(
"Digest"_cs), pack(
"pack"_cs) {}
302struct TableAttributes_Model {
303 TableAttributes_Model()
304 : tableImplementation(
"implementation"_cs),
305 counters(
"counters"_cs),
308 supportTimeout(
"support_timeout"_cs) {}
314 const unsigned defaultTableSize = 1024;
322 packetParam(
"buffer"_cs, P4::P4CoreLibrary::instance().packetIn, 0),
323 headersParam(
"parsed_hdr"_cs, headersType, 1),
324 metadataParam(
"user_meta"_cs, userMetaType, 2),
325 istdParam(
"istd"_cs, istdType, 3),
326 resubmitParam(
"resubmit_meta"_cs, resubmitMetaType, 4),
327 recircParam(
"recirculate_meta"_cs, recircMetaType, 5) { }
340 headersParam(
"hdr"_cs, headersType, 0),
341 metadataParam(
"user_meta"_cs, userMetaType, 1),
342 istdParam(
"istd"_cs, istdType, 2),
343 ostdParam(
"ostd"_cs, ostdType, 3) { }
355 packetParam(
"buffer"_cs, P4::P4CoreLibrary::instance().packetIn, 0),
356 cloneParam(
"clone_i2e_meta"_cs, cloneType, 1),
357 resubmitParam(
"resubmit_meta"_cs, resubmitMetaType, 2),
358 normalMetaParam(
"normal_meta"_cs, bridgeMetaType, 3),
359 headersParam(
"hdr"_cs, headersType, 4),
360 metadataParam(
"meta"_cs, userMetaType, 5),
361 istdParam(
"istd"_cs, istdType, 6) { }
376 packetParam(
"buffer"_cs, P4::P4CoreLibrary::instance().packetIn, 0),
377 headersParam(
"parsed_hdr"_cs, headersType, 1),
378 metadataParam(
"user_meta"_cs, userMetaType, 2),
379 istdMetaParam(
"istd"_cs, istdMetaType, 3),
380 normalMetaParam(
"normal_meta"_cs, bridgeMetaType, 4),
381 cloneI2EMetaParam(
"clone_i2e_meta"_cs, cloneI2EMetaType, 5),
382 cloneE2EMetaParam(
"clone_e2e_meta"_cs, cloneE2EMetaType, 6) { }
396 headersParam(
"hdr"_cs, headersType, 0),
397 metadataParam(
"user_meta"_cs, userMetaType, 1),
398 istdParam(
"istd"_cs, istdType, 2),
399 ostdParam(
"ostd"_cs, ostdType, 3) { }
411 packetParam(
"buffer"_cs, P4::P4CoreLibrary::instance().packetIn, 0),
412 cloneE2EMetaParam(
"clone_e2e_meta"_cs, cloneE2EMetaType, 1),
413 recircMetaParam(
"recirculate_meta"_cs, recircMetaType, 2),
414 headersParam(
"hdr"_cs, headersType, 3),
415 metadataParam(
"meta"_cs, userMetaType, 4),
416 istdParam(
"istd"_cs, istdType, 5),
417 edstdParam(
"edstd"_cs, edstdType, 6) { }
428 explicit Pipeline(
cstring name)
430 ingressParser(
"ingress_parser"_cs),
431 ingress(
"ingress"_cs),
432 ingressDeparser(
"ingress_deparser"_cs),
433 packetReplicationEngine(
"pre"_cs),
434 egressParser(
"egress_parser"_cs),
436 egressDeparser(
"egress_deparser"_cs),
437 bufferingQueueingEngine(
"bqe"_cs) { }
454 headersType(
"headers"_cs),
455 metadataType(
"metadata"_cs),
456 resubmitMetaType(
"resubmit_meta"_cs),
457 recircMetaType(
"recirc_meta"_cs),
458 cloneI2EMetaType(
"clone_i2e_meta"_cs),
459 cloneE2EMetaType(
"clone_e2e_meta"_cs),
460 bridgeMetaType(
"bridge_meta"_cs),
461 compilerGeneratedType(
"compiler_generated_meta"_cs),
462 ingress_parser(headersType, metadataType, igParserInputMetaType, resubmitMetaType,
464 ingress(headersType, metadataType, igInputMetaType, igOutputMetaType),
465 ingress_deparser(cloneI2EMetaType, resubmitMetaType, bridgeMetaType, headersType,
466 metadataType, igOutputMetaType),
467 egress_parser(headersType, metadataType, egParserInputMetaType, bridgeMetaType,
468 cloneI2EMetaType, cloneE2EMetaType),
469 egress(headersType, metadataType, egInputMetaType, egOutputMetaType),
470 egress_deparser(cloneE2EMetaType, recircMetaType, headersType, metadataType,
471 egOutputMetaType, egDeparserInputMetaType),
521 static PsaModel instance;
Definition frontends/common/model.h:64
The namespace encapsulating Barefoot/Intel-specific stuff.
Definition add_t2na_meta.cpp:21
Definition psa_model.h:273
Definition psa_model.h:282
Definition psa_model.h:197
Definition psa_model.h:236
Definition psa_model.h:67
Definition psa_model.h:242
Definition psa_model.h:254
Definition psa_model.h:406
Definition psa_model.h:392
Definition psa_model.h:371
Definition psa_model.h:224
Definition psa_model.h:78
Definition psa_model.h:350
Definition psa_model.h:336
Definition psa_model.h:317
Definition psa_model.h:248
Definition psa_model.h:49
Definition psa_model.h:427
Definition psa_model.h:231
Definition psa_model.h:260
Definition psa_model.h:302
Definition frontends/common/model.h:28
Enum_Model : Type_Model.
Definition frontends/common/model.h:47
Extern_Model : Type_Model.
Definition frontends/common/model.h:52
Param_Model : Elem.
Definition frontends/common/model.h:57
Definition frontends/common/model.h:42