P4C
The P4 Compiler
 
Loading...
Searching...
No Matches
program_info.h
1#ifndef BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_PROGRAM_INFO_H_
2#define BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_PROGRAM_INFO_H_
3
4#include <cstddef>
5#include <map>
6#include <vector>
7
8#include "control-plane/p4RuntimeSerializer.h"
9#include "ir/ir.h"
10#include "lib/cstring.h"
11#include "lib/ordered_map.h"
12
13#include "backends/p4tools/modules/testgen/core/program_info.h"
14#include "backends/p4tools/modules/testgen/lib/continuation.h"
15#include "backends/p4tools/modules/testgen/targets/bmv2/bmv2.h"
16
18
20 private:
24
26 const std::map<int, int> declIdToGress;
27
29 static const IR::Type_Bits PARSER_ERR_BITS;
30
33 std::vector<Continuation::Command> processDeclaration(const IR::Type_Declaration *typeDecl,
34 size_t blockIdx) const;
35
36 public:
39 std::map<int, int> declIdToGress);
40
42 int getGress(const IR::Type_Declaration *) const;
43
45 [[nodiscard]] P4::P4RuntimeAPI getP4RuntimeAPI() const;
46
48 const IR::P4Table *getTableofDirectExtern(const IR::IDeclaration *directExternDecl) const;
49
51 [[nodiscard]] const ArchSpec &getArchSpec() const override;
52
55 const;
56
59 [[nodiscard]] const IR::PathExpression *getBlockParam(cstring blockLabel,
60 size_t paramIndex) const;
61
62 [[nodiscard]] const IR::StateVariable &getTargetInputPortVar() const override;
63
65 static const IR::Expression *getPortConstraint(
66 const IR::StateVariable &portVar,
67 const std::vector<std::pair<int, int>> &permittedPortRanges);
68
69 [[nodiscard]] const IR::StateVariable &getTargetOutputPortVar() const override;
70
71 [[nodiscard]] const IR::Expression *dropIsActive() const override;
72
73 [[nodiscard]] const IR::Type_Bits *getParserErrorType() const override;
74
75 [[nodiscard]] const BMv2V1ModelCompilerResult &getCompilerResult() const override;
76
82 static const IR::Member *getParserParamVar(const IR::P4Parser *parser, const IR::Type *type,
83 size_t paramIndex, cstring paramLabel);
84
86 static const ArchSpec ARCH_SPEC;
87
88 DECLARE_TYPEINFO(Bmv2V1ModelProgramInfo, ProgramInfo);
89};
90
91} // namespace P4Tools::P4Testgen::Bmv2
92
93#endif /* BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_PROGRAM_INFO_H_ */
Specifies a canonical representation of the target pipeline as documented in P4 code.
Definition arch_spec.h:13
Extends the CompilerResult with information specific to the V1Model running on BMv2.
Definition bmv2.h:17
int getGress(const IR::Type_Declaration *) const
Definition program_info.cpp:104
static const IR::Member * getParserParamVar(const IR::P4Parser *parser, const IR::Type *type, size_t paramIndex, cstring paramLabel)
Definition program_info.cpp:237
static const IR::Expression * getPortConstraint(const IR::StateVariable &portVar, const std::vector< std::pair< int, int > > &permittedPortRanges)
const IR::PathExpression * getBlockParam(cstring blockLabel, size_t paramIndex) const
Definition program_info.cpp:206
const ArchSpec & getArchSpec() const override
Definition program_info.cpp:97
const IR::P4Table * getTableofDirectExtern(const IR::IDeclaration *directExternDecl) const
Definition program_info.cpp:86
const BMv2V1ModelCompilerResult & getCompilerResult() const override
Definition program_info.cpp:229
Bmv2V1ModelProgramInfo(const BMv2V1ModelCompilerResult &compilerResult, ordered_map< cstring, const IR::Type_Declaration * > inputBlocks, std::map< int, int > declIdToGress)
Definition program_info.cpp:36
const IR::StateVariable & getTargetInputPortVar() const override
Definition program_info.cpp:186
static const ArchSpec ARCH_SPEC
Definition program_info.h:86
const IR::Expression * dropIsActive() const override
Definition program_info.cpp:198
P4::P4RuntimeAPI getP4RuntimeAPI() const
Definition program_info.cpp:233
const ordered_map< cstring, const IR::Type_Declaration * > * getProgrammableBlocks() const
Definition program_info.cpp:100
const IR::StateVariable & getTargetOutputPortVar() const override
Definition program_info.cpp:192
Stores target-specific information about a P4 program.
Definition program_info.h:22
Definition cstring.h:72
Definition ordered_map.h:30
Inja.
Definition bmv2.cpp:25
Definition p4RuntimeSerializer.h:53