[libre-riscv-dev] formal proof NLnet proposal in
Hendrik Boom
hendrik at topoi.pooq.com
Mon Oct 28 20:43:49 GMT 2019
On Mon, Sep 23, 2019 at 10:06:59AM -0400, Michael Pham wrote:
> On Mon, Sep 23, 2019 at 7:32 AM Hendrik Boom <hendrik at topoi.pooq.com> wrote:
> >
> > On Mon, Sep 23, 2019 at 03:58:54AM +0100, Luke Kenneth Casson Leighton wrote:
> > > https://libre-riscv.org/nlnet_2019_formal/
> > >
> > > submitted. this is a proposal that we adopt formal mathematical
> > > proofs as the "default" unit test, exactly as samuel falvo did. does.
> > > and receive funds for doing so.
> >
> > I'm not familiar with current work on hardware verification, but I find
> > myself doubtful of this project. My experience with formal verification
> > (admittedly dating back to the late 80's) indicates that it is very
> > difficult.
> >
> > It's possible that SymbiYosys takes advantage of typical hardware coding
> > patterns to greatly simplify and automate the entire process, but I'd be
> > wary of committing to a project of this scale for pay if the pay is only
> > available when the entire project is finished.
> >
> > That said, I'm willing to have a look at the problem and see what I can do
> > in my so-called spare time.
> >
> > The links in the project proposal give me somewhat more information about
> > the SymbiYosys. It appears to be a framework for xressing assertions and
> > calling on independently written theorem provers. Still, the text provided
> > gives little information about what its various provers actually do. It
> > suggests trying them out on sample problems to get a feeling for them.
> > "Trial and error can also be a useful method for evaluating engines."
> > (https://symbiyosys.readthedocs.io/en/latest/quickstart.html#selecting-the-right-engine)
> >
> > But I do have doubts about using "feelings" when doing formal verification.
> >
> > The links I see to code repositories for these provers don't seem to reach
> > much in the way of documentation. But maybe that's because I'm unfmiliar
> > with bitbucket and I have to actually install them before I see any.
> >
> > I have a 16G RAM on my Purism laptop (yes, likely the same Purism that has
> > showed interest in our project). Unfortunately it has an intel processor,
> > so it cannot be secure.
> >
> > Sometime in the next few weeks I'll try installing this stuff and see what
> > happens. I'll get a larger hard drive if necessary.
> >
> > Or is there a system elsewhere I should be using for this?
> >
> > -- hendrik
> >
>
> Hi Hendrik,
>
> I found a few resources for hardware formal verification. You and Luke
> and Jacob and others might be interested in using these to learn how
> others in the RISC-V community are doing it.
>
> http://zipcpu.com/tutorial/
> ^^^ This one is the most comprehensive one. Actually it's an entire
> course on how to do formal verification! Tutorials, exercises, quizzes
> are provided for free (make sure to look to at the 400+ page pdf that
> teaches you from start to end the process). I recommend checking out
> the rest of the website on a desktop browser because there are some
> formatting issues on my phone.
>
> https://tomverbeure.github.io/
> ^^^ I also came across this blog that has some posts on formally
> verifying Western Digital's SweRV CPU.
>
> https://tomverbeure.github.io/risc-v/2018/11/19/A-Bug-Free-RISC-V-Core-without-Simulation.html
>
> https://tomverbeure.github.io/rtl/2019/01/04/Under-the-Hood-of-Formal-Verification.html
>
> There might be more similar posts on the rest of the blog.
>
> Hope this helps you!
>
> -- Michael
Thank you. It does. I've started going through those links.
The current technology seems to be to translate the entire circuit and
assertions to be verified/falsified into the input for a SAT solver.
That leads to enormous SAT problems, but fortunately, they can be
solved with current technology, usually quickly (though there was a
mention of a formal verification that took four months! An outlier.
Most seem to get somved in a few seconds.)
There seems to be no mechanism for proving theorems about components
and using those theorems later without having to reprove them in
context.
I will proceed further.
Which of these design languages is our project actually using?
-- hendrik
>
> _______________________________________________
> libre-riscv-dev mailing list
> libre-riscv-dev at lists.libre-riscv.org
> http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev
More information about the libre-riscv-dev
mailing list