Skip to content

Commit

Permalink
[Verif] Add ContractOp to Visitor (#8155)
Browse files Browse the repository at this point in the history
Add the `ContractOp` to the `verif::Visitor`. This requires a minor
tweak to the HWToBTOR2 pass to handle unknown operations more generally.
  • Loading branch information
fabianschuiki authored Jan 30, 2025
1 parent 8d2f1ec commit 0a111c7
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 9 deletions.
3 changes: 2 additions & 1 deletion include/circt/Dialect/Verif/VerifVisitors.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class Visitor {
auto *thisCast = static_cast<ConcreteType *>(this);
return TypeSwitch<Operation *, ResultType>(op)
.template Case<AssertOp, AssumeOp, CoverOp, ClockedAssertOp,
ClockedAssumeOp, ClockedCoverOp>(
ClockedAssumeOp, ClockedCoverOp, ContractOp>(
[&](auto op) -> ResultType {
return thisCast->visitVerif(op, args...);
})
Expand Down Expand Up @@ -55,6 +55,7 @@ class Visitor {
HANDLE(ClockedAssertOp, Unhandled);
HANDLE(ClockedAssumeOp, Unhandled);
HANDLE(ClockedCoverOp, Unhandled);
HANDLE(ContractOp, Unhandled);
#undef HANDLE
};

Expand Down
12 changes: 4 additions & 8 deletions lib/Conversion/HWToBTOR2/HWToBTOR2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ struct ConvertHWToBTOR2Pass
public hw::TypeOpVisitor<ConvertHWToBTOR2Pass>,
public verif::Visitor<ConvertHWToBTOR2Pass> {
public:
using verif::Visitor<ConvertHWToBTOR2Pass>::visitVerif;

ConvertHWToBTOR2Pass(raw_ostream &os) : os(os) {}
// Executes the pass
void runOnOperation() override;
Expand Down Expand Up @@ -843,14 +845,8 @@ struct ConvertHWToBTOR2Pass
void visitVerif(verif::AssumeOp op) { visitAssumeLike(op); }
void visitVerif(verif::ClockedAssumeOp op) { visitAssumeLike(op); }

// Cover is not supported in btor2
void visitVerif(verif::CoverOp op) {
op->emitError("Cover is not supported in btor2!");
return signalPassFailure();
}

void visitVerif(verif::ClockedCoverOp op) {
op->emitError("Cover is not supported in btor2!");
void visitUnhandledVerif(Operation *op) {
op->emitError("not supported in btor2!");
return signalPassFailure();
}

Expand Down

0 comments on commit 0a111c7

Please sign in to comment.