13#ifndef TOOLS_ARCILATOR_PIPELINES_H
14#define TOOLS_ARCILATOR_PIPELINES_H
16#include "mlir/Pass/PassManager.h"
17#include "mlir/Pass/PassOptions.h"
18#include "llvm/Support/CommandLine.h"
26 : mlir::PassPipelineOptions<ArcPreprocessingOptions> {
28 llvm::cl::desc(
"Make all ports observable"),
29 llvm::cl::init(
false)};
32 llvm::cl::desc(
"Make all wires observable"),
33 llvm::cl::init(
false)};
36 *
this,
"observe-named-values",
37 llvm::cl::desc(
"Make values with `sv.namehint` observable"),
38 llvm::cl::init(
false)};
41 *
this,
"observe-memories",
42 llvm::cl::desc(
"Make all memory contents observable"),
43 llvm::cl::init(
false)};
51 llvm::cl::desc(
"Make all registers observable"),
52 llvm::cl::init(
false)};
54 Option<bool>
shouldDedup{*
this,
"dedup", llvm::cl::desc(
"Deduplicate arcs"),
55 llvm::cl::init(
true)};
63 : mlir::PassPipelineOptions<ArcOptimizationOptions> {
64 Option<bool>
shouldDedup{*
this,
"dedup", llvm::cl::desc(
"Deduplicate arcs"),
65 llvm::cl::init(
true)};
68 *
this,
"detect-enables",
69 llvm::cl::desc(
"Infer enable conditions for states to avoid computation"),
70 llvm::cl::init(
true)};
73 *
this,
"detect-resets",
74 llvm::cl::desc(
"Infer reset conditions for states to avoid computation"),
75 llvm::cl::init(
false)};
78 *
this,
"lookup-tables",
79 llvm::cl::desc(
"Optimize arcs into lookup tables"), llvm::cl::init(
true)};
86 : mlir::PassPipelineOptions<ArcStateLoweringOptions> {
87 Option<bool>
shouldInline{*
this,
"inline", llvm::cl::desc(
"Inline arcs"),
88 llvm::cl::init(
true)};
95 : mlir::PassPipelineOptions<ArcStateAllocationOptions> {
97 *
this,
"split-funcs-threshold",
98 llvm::cl::desc(
"Split large MLIR functions that occur above the given "
100 llvm::cl::ValueOptional};
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
void populateArcStateLoweringPipeline(mlir::OpPassManager &pm, const ArcStateLoweringOptions &options={})
void populateArcOptimizationPipeline(mlir::OpPassManager &pm, const ArcOptimizationOptions &options={})
void populateArcConversionPipeline(mlir::OpPassManager &pm, const ArcConversionOptions &options={})
void populateArcPreprocessingPipeline(mlir::OpPassManager &pm, const ArcPreprocessingOptions &options={})
void populateArcToLLVMPipeline(mlir::OpPassManager &pm)
void populateArcStateAllocationPipeline(mlir::OpPassManager &pm, const ArcStateAllocationOptions &options={})
Option< bool > observeRegisters
Option< bool > shouldDedup
Option< bool > shouldMakeLUTs
Option< bool > shouldDetectResets
Option< bool > shouldDetectEnables
Option< bool > shouldDedup
Option< bool > observeNamedValues
Option< bool > observeMemories
Option< bool > observeWires
Option< bool > observePorts
Option< unsigned > splitFuncsThreshold
Option< bool > shouldInline