15 #include "llvm/Support/raw_ostream.h"
17 using namespace circt;
18 using namespace firrtl;
21 struct PrintNLATablePass :
public PrintNLATableBase<PrintNLATablePass> {
22 PrintNLATablePass(raw_ostream &os) : os(os) {}
23 void runOnOperation()
override {
24 auto circuitOp = getOperation();
25 auto &nlaTable = getAnalysis<NLATable>();
26 markAllAnalysesPreserved();
28 for (
auto &mop : *cast<CircuitOp>(circuitOp).getBodyBlock()) {
29 auto mod = dyn_cast<FModuleLike>(mop);
32 os << mod.getModuleName() <<
": ";
33 for (
auto nla : nlaTable.lookup(mod))
34 os << nla.getSymName() <<
", ";
43 return std::make_unique<PrintNLATablePass>(
llvm::errs());
std::unique_ptr< mlir::Pass > createPrintNLATablePass()
This file defines an intermediate representation for circuits acting as an abstraction for constraint...
mlir::raw_indented_ostream & errs()