ucb-bar / riscv-mini

Simple RISC-V 3-stage Pipeline in Chisel

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Failed all formal verification.

B10615053 opened this issue · comments

I tried to run all the tests with sbt test, but found out 3 tests failed. They are ALUTests, ImmGenTests, and BrCondTests, respectively.
They all have formal verification at the end. Is this because wrong chisel version or I lost some package?

My running environment are listed below:

  • Operating System: Ubuntu 20.04.5 LTS
  • Java: openjdk 11.0.16 2022-07-19
  • Chisel: 3.5.1

Formal verification code in ALUTests.scala:

"AluArea" should "be equivalent to AluSimple" in {
      // since there is no state (registers/memory) in the ALU, a single cycle check is enough to prove equivalence
      verify(new AluEquivalenceCheck(new AluArea(32)), Seq(BoundedCheck(1)))
}

Following is the error message from ALUTests:

[info] ALUTests:
[info] ALUSimple
[info] - should pass
[info] AluArea
[info] - should pass
[info] AluArea
[info] - should be equivalent to AluSimple *** FAILED ***
[info]   java.io.IOException: Cannot run program "z3" (in directory "/home/RISC-V_3-stage_Pipeline"): error=2, No such file or directory
[info]   at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1128)
[info]   at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
[info]   at os.proc.proc$lzycompute$1(ProcessOps.scala:128)
[info]   at os.proc.proc$1(ProcessOps.scala:122)
[info]   at os.proc.spawn(ProcessOps.scala:135)
[info]   at chiseltest.formal.backends.smt.SMTLibSolverContext.<init>(SMTLibSolver.scala:119)
[info]   at chiseltest.formal.backends.smt.Z3SMTLib$.createContext(SMTLibSolver.scala:32)
[info]   at chiseltest.formal.backends.smt.SMTModelChecker.check(SMTModelChecker.scala:32)
[info]   at chiseltest.formal.backends.Maltese$.bmc(Maltese.scala:54)
[info]   at chiseltest.formal.Formal$.executeOp(Formal.scala:82)
[info]   ...
[info]   Cause: java.io.IOException: error=2, No such file or directory
[info]   at java.base/java.lang.ProcessImpl.forkAndExec(Native Method)
[info]   at java.base/java.lang.ProcessImpl.<init>(ProcessImpl.java:340)
[info]   at java.base/java.lang.ProcessImpl.start(ProcessImpl.java:271)
[info]   at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1107)
[info]   at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1071)
[info]   at os.proc.proc$lzycompute$1(ProcessOps.scala:128)
[info]   at os.proc.proc$1(ProcessOps.scala:122)
[info]   at os.proc.spawn(ProcessOps.scala:135)
[info]   at chiseltest.formal.backends.smt.SMTLibSolverContext.<init>(SMTLibSolver.scala:119)
[info]   at chiseltest.formal.backends.smt.Z3SMTLib$.createContext(SMTLibSolver.scala:32)
[info]   ...
[info] Run completed in 3 seconds, 705 milliseconds.
[info] Total number of tests run: 3
[info] Suites: completed 1, aborted 0
[info] Tests: succeeded 2, failed 1, canceled 0, ignored 0, pending 0
[info] *** 1 TEST FAILED ***
[error] Failed tests:
[error]         mini.ALUTests
[error] (Test / testOnly) sbt.TestsFailedException: Tests unsuccessful

Try installing z3: sudo apt install z3

it works! Thank you very much 😄