Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failed Checks in picorv32 Verification Following Quickstart Guide #36

Open
myrealname opened this issue Feb 5, 2020 · 3 comments
Open

Comments

@myrealname
Copy link

Took a clean clone of the repo. Followed the quickstart guide to get going. Unfortunately the verification of the picorv32 results in two failed checks; csrw_mcycle_ch0 & csrw_minstret_ch0. While the quickstart guide doesn't indicate that the picorv32 should pass all of the checks, I have assumed that would be the case. I have pasted the logfile output below, of the mcycle check:

SBY 21:34:50 [csrw_mcycle_ch0] engine_0: smtbmc boolector
SBY 21:34:50 [csrw_mcycle_ch0] base: starting process "cd csrw_mcycle_ch0/src; yosys -ql ../model/design.log ../model/design.ys"
SBY 21:34:53 [csrw_mcycle_ch0] base: finished (returncode=0)
SBY 21:34:53 [csrw_mcycle_ch0] smt2: starting process "cd csrw_mcycle_ch0/model; yosys -ql design_smt2.log design_smt2.ys"
SBY 21:34:53 [csrw_mcycle_ch0] smt2: finished (returncode=0)
SBY 21:34:53 [csrw_mcycle_ch0] engine_0: starting process "cd csrw_mcycle_ch0; yosys-smtbmc -s boolector --presat --unroll --vlogtb-top wrapper.uut --noprogress -t 30:31 --append 0 --dump-vcd engine_0/trace.vcd --dump-vlogtb engine_0/trace_tb.v --dump-smtc engine_0/trace.smtc model/design_smt2.smt2"
SBY 21:34:53 [csrw_mcycle_ch0] engine_0: ##   0:00:00  Solver: boolector
SBY 21:34:53 [csrw_mcycle_ch0] engine_0: ##   0:00:00  Skipping step 0..
SBY 21:34:53 [csrw_mcycle_ch0] engine_0: ##   0:00:00  Skipping step 1..
SBY 21:34:53 [csrw_mcycle_ch0] engine_0: ##   0:00:00  Skipping step 2..
SBY 21:34:53 [csrw_mcycle_ch0] engine_0: ##   0:00:00  Skipping step 3..
SBY 21:34:53 [csrw_mcycle_ch0] engine_0: ##   0:00:00  Skipping step 4..
SBY 21:34:54 [csrw_mcycle_ch0] engine_0: ##   0:00:00  Skipping step 5..
SBY 21:34:54 [csrw_mcycle_ch0] engine_0: ##   0:00:00  Skipping step 6..
SBY 21:34:54 [csrw_mcycle_ch0] engine_0: ##   0:00:00  Skipping step 7..
SBY 21:34:54 [csrw_mcycle_ch0] engine_0: ##   0:00:00  Skipping step 8..
SBY 21:34:54 [csrw_mcycle_ch0] engine_0: ##   0:00:00  Skipping step 9..
SBY 21:34:54 [csrw_mcycle_ch0] engine_0: ##   0:00:00  Skipping step 10..
SBY 21:34:54 [csrw_mcycle_ch0] engine_0: ##   0:00:01  Skipping step 11..
SBY 21:34:54 [csrw_mcycle_ch0] engine_0: ##   0:00:01  Skipping step 12..
SBY 21:34:54 [csrw_mcycle_ch0] engine_0: ##   0:00:01  Skipping step 13..
SBY 21:34:54 [csrw_mcycle_ch0] engine_0: ##   0:00:01  Skipping step 14..
SBY 21:34:54 [csrw_mcycle_ch0] engine_0: ##   0:00:01  Skipping step 15..
SBY 21:34:54 [csrw_mcycle_ch0] engine_0: ##   0:00:01  Skipping step 16..
SBY 21:34:55 [csrw_mcycle_ch0] engine_0: ##   0:00:01  Skipping step 17..
SBY 21:34:55 [csrw_mcycle_ch0] engine_0: ##   0:00:01  Skipping step 18..
SBY 21:34:55 [csrw_mcycle_ch0] engine_0: ##   0:00:01  Skipping step 19..
SBY 21:34:55 [csrw_mcycle_ch0] engine_0: ##   0:00:01  Skipping step 20..
SBY 21:34:55 [csrw_mcycle_ch0] engine_0: ##   0:00:01  Skipping step 21..
SBY 21:34:55 [csrw_mcycle_ch0] engine_0: ##   0:00:02  Skipping step 22..
SBY 21:34:55 [csrw_mcycle_ch0] engine_0: ##   0:00:02  Skipping step 23..
SBY 21:34:55 [csrw_mcycle_ch0] engine_0: ##   0:00:02  Skipping step 24..
SBY 21:34:55 [csrw_mcycle_ch0] engine_0: ##   0:00:02  Skipping step 25..
SBY 21:34:55 [csrw_mcycle_ch0] engine_0: ##   0:00:02  Skipping step 26..
SBY 21:34:56 [csrw_mcycle_ch0] engine_0: ##   0:00:02  Skipping step 27..
SBY 21:34:56 [csrw_mcycle_ch0] engine_0: ##   0:00:02  Skipping step 28..
SBY 21:34:56 [csrw_mcycle_ch0] engine_0: ##   0:00:02  Skipping step 29..
SBY 21:34:56 [csrw_mcycle_ch0] engine_0: ##   0:00:02  Checking assumptions in step 30..
SBY 21:34:58 [csrw_mcycle_ch0] engine_0: ##   0:00:05  Assumptions are unsatisfiable!
SBY 21:34:58 [csrw_mcycle_ch0] engine_0: ##   0:00:05  Status: PREUNSAT
SBY 21:34:58 [csrw_mcycle_ch0] engine_0: finished (returncode=1)
SBY 21:34:58 [csrw_mcycle_ch0] engine_0: Status returned by engine: ERROR
SBY 21:34:58 [csrw_mcycle_ch0] summary: Elapsed clock time [H:MM:SS (secs)]: 0:00:08 (8)
SBY 21:34:58 [csrw_mcycle_ch0] summary: Elapsed process time [H:MM:SS (secs)]: 0:00:08 (8)
SBY 21:34:58 [csrw_mcycle_ch0] summary: engine_0 (smtbmc boolector) returned ERROR
SBY 21:34:58 [csrw_mcycle_ch0] DONE (ERROR, rc=16)

Did I miss something? Is there something missing in the instructions? Or is it something else entirely?

Thanks in advance, for any help.

@ghost
Copy link

ghost commented May 15, 2020

Is there any update on this?

I also tried running the quickstart of picorv32 and csrw_mcycle_ch0, csrw_minstret_ch0 and insn_c_xor_ch0 failed.

@DonaldKellett
Copy link

I also got an error for csrw_mcycle_ch0 and csrw_minstret_ch0 upon building the quickstart example with no modifications as of 09/07/2020, please see attached the output log from make.

@DonaldKellett
Copy link

DonaldKellett commented Aug 18, 2020

Looking at the output logs included by @myrealname and me, it seems that all the errors are caused by unsatisfiable assumptions (Status: PREUNSAT). I've looked at the SymbiYosys documentation and section 2.3.1 mentions that the --nopresat flag can be passed to sby to skip that check. I'll take a look at where sby is invoked in the framework and perhaps submit a pull request with the fix sometime, since I don't see a problem with contradictory assumptions - that would simply mean that the specification is vacuously satisfied.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants