P4C
The P4 Compiler
 
Loading...
Searching...
No Matches
bmv2.h
1#ifndef BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_BMV2_H_
2#define BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_BMV2_H_
3
4#include "backends/p4tools/common/compiler/compiler_target.h"
5#include "backends/p4tools/common/compiler/midend.h"
6#include "backends/p4tools/common/lib/variables.h"
7#include "control-plane/p4RuntimeSerializer.h"
8#include "frontends/common/options.h"
9
10#include "backends/p4tools/modules/testgen/core/compiler_target.h"
11#include "backends/p4tools/modules/testgen/targets/bmv2/map_direct_externs.h"
12#include "backends/p4tools/modules/testgen/targets/bmv2/p4_asserts_parser.h"
13
15
18 private:
20 P4::P4RuntimeAPI p4runtimeApi;
21
23 DirectExternMap directExternMap;
24
25 // Vector containing vectors of P4Constraints restrictions and nodes to which these restrictions
26 // apply.
27 ConstraintsVector p4ConstraintsRestrictions;
28
29 public:
31 P4::P4RuntimeAPI p4runtimeApi,
32 DirectExternMap directExternMap,
33 ConstraintsVector p4ConstraintsRestrictions);
34
36 [[nodiscard]] const P4::P4RuntimeAPI &getP4RuntimeApi() const;
37
39 // apply.
41
43 [[nodiscard]] const DirectExternMap &getDirectExternMap() const;
44
46};
47
49 public:
51 static void make();
52
53 private:
54 [[nodiscard]] MidEnd mkMidEnd(const CompilerOptions &options) const override;
55
56 CompilerResultOrError runCompilerImpl(const IR::P4Program *program) const override;
57
59};
60
61} // namespace P4Tools::P4Testgen::Bmv2
62
63#endif /* BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_BMV2_H_ */
Definition options.h:26
Definition midend.h:24
Extends the CompilerResult with information specific to the V1Model running on BMv2.
Definition bmv2.h:17
ConstraintsVector getP4ConstraintsRestrictions() const
Definition bmv2.cpp:38
const DirectExternMap & getDirectExternMap() const
Definition bmv2.cpp:42
const P4::P4RuntimeAPI & getP4RuntimeApi() const
Definition bmv2.cpp:36
static void make()
Registers this target.
Definition bmv2.cpp:48
Extends the CompilerResult with the associated P4RuntimeApi.
Definition compiler_target.h:11
Definition compiler_target.h:35
Inja.
Definition bmv2.cpp:25
std::map< cstring, const IR::P4Table * > DirectExternMap
Definition map_direct_externs.h:19
std::optional< std::reference_wrapper< const CompilerResult > > CompilerResultOrError
Definition compiler_target.h:38
std::vector< const IR::Expression * > ConstraintsVector
Definition variables.h:15
Definition p4RuntimeSerializer.h:53