Skip to content

Commit ee4badc

Browse files
authored
[circt-bmc] Add LTLToCore to pipeline (#9735)
1 parent 16b7060 commit ee4badc

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// REQUIRES: libz3
2+
// REQUIRES: circt-bmc-jit
3+
4+
// RUN: circt-bmc %s -b 10 --module ImplicationSanity --shared-libs=%libz3 | FileCheck %s --check-prefix=IMPLICATIONSANITY
5+
// IMPLICATIONSANITY: Bound reached with no violations!
6+
7+
hw.module @ImplicationSanity(in %i0: i1) {
8+
%impl = ltl.implication %i0, %i0 : i1, i1
9+
verif.assert %impl : !ltl.property
10+
}

tools/circt-bmc/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ target_link_libraries(circt-bmc
1919
CIRCTHW
2020
CIRCTHWToSMT
2121
CIRCTHWTransforms
22+
CIRCTLTLToCore
2223
CIRCTOMTransforms
2324
CIRCTSeq
2425
CIRCTSMTToZ3LLVM

tools/circt-bmc/circt-bmc.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
#include "circt/Conversion/CombToSMT.h"
1414
#include "circt/Conversion/HWToSMT.h"
15+
#include "circt/Conversion/Passes.h"
1516
#include "circt/Conversion/SMTToZ3LLVM.h"
1617
#include "circt/Conversion/VerifToSMT.h"
1718
#include "circt/Dialect/Comb/CombDialect.h"
@@ -20,6 +21,7 @@
2021
#include "circt/Dialect/HW/HWDialect.h"
2122
#include "circt/Dialect/HW/HWOps.h"
2223
#include "circt/Dialect/HW/HWPasses.h"
24+
#include "circt/Dialect/LTL/LTLDialect.h"
2325
#include "circt/Dialect/OM/OMDialect.h"
2426
#include "circt/Dialect/OM/OMPasses.h"
2527
#include "circt/Dialect/Seq/SeqDialect.h"
@@ -28,6 +30,7 @@
2830
#include "circt/Support/Passes.h"
2931
#include "circt/Support/Version.h"
3032
#include "circt/Tools/circt-bmc/Passes.h"
33+
#include "circt/Transforms/Passes.h"
3134
#include "mlir/Dialect/Arith/IR/Arith.h"
3235
#include "mlir/Dialect/Func/Extensions/InlinerExtension.h"
3336
#include "mlir/Dialect/Func/IR/FuncOps.h"
@@ -207,6 +210,7 @@ static LogicalResult executeBMC(MLIRContext &context) {
207210
options.inlinePublic = true;
208211
pm.addPass(hw::createFlattenModules(options));
209212
}
213+
pm.addNestedPass<hw::HWModuleOp>(createLowerLTLToCorePass());
210214
pm.addNestedPass<hw::HWModuleOp>(verif::createCombineAssertLikePass());
211215
pm.addPass(createExternalizeRegisters());
212216
LowerToBMCOptions lowerToBMCOptions;
@@ -362,6 +366,7 @@ int main(int argc, char **argv) {
362366
circt::seq::SeqDialect,
363367
mlir::smt::SMTDialect,
364368
circt::verif::VerifDialect,
369+
circt::ltl::LTLDialect,
365370
mlir::arith::ArithDialect,
366371
mlir::BuiltinDialect,
367372
mlir::func::FuncDialect,

0 commit comments

Comments
 (0)