Replies: 5 comments 1 reply
-
The answers to this are complex without knowing exactly what kind of properties you want to hold. So I'll make a few points:
Unfortunately I don't know of any case studies on using Bluespec or impacts on correctness, but personally I find it to be much easier to reason about the correctness of my designs in terms of concurrency, synchronous logic, etc. Instead you have to worry about things like method concurrency, rule conflicts, etc. But I find most of these don't impact correctness so much as performance, so the iterative method for design is a bit different... |
Beta Was this translation helpful? Give feedback.
-
I believe that there has been a variety of research that could be listed here. As @thoughtpolice suggests, "formal verification" is a broad term that can include many different things. And I think a lot of different groups have explored in different directions, under this umbrella -- though only touching on the tip of the iceberg of what is possible, I believe. Unfortunately, I have not kept track of this work, so I'm not able to list it; but I'm hoping that the people who do know more will comment here and share that. @thoughtpolice has made a good start of it, with some good points -- thanks! I can add a few things. Folks at MIT have looked at using Coq (formal proof language) for working formally with Bluespec-style hardware. They have a project called Kami -- here is the webapge, with links to the researchers involved and some of the papers: https://plv.csail.mit.edu/kami/ One of the Kami researchers, Adam Chlipala, gave this talk on their formal verification of RISC-V hardware: https://www.youtube.com/watch?v=4DYVJdHMV5k Galois is a company that develops security solutions and does a lot of work with languages, cryptography, and formal verification. They have done some work with Bluespec. Here is a paper on using their formal tools, extended to include a subset of BSV, for validating a RISC-V extension written in BSV: https://carrv.github.io/2018/papers/CARRV_2018_paper_5.pdf Here's an overview of formal methods, given by Galois at a RISC-V workshop, and that mentions their SAW tool for BSV and their BESSPIN tool that supports multiple HDLs: https://riscv.org/wp-content/uploads/2018/12/13.35-Kiniry-Zimmerman-Formal-Methods-Need-Not-Be-Black-Magic.pdf Galois' website has more links: https://galois.com/research-development/software-correctness/ Under the broad umbrella, there's even this older work by Shukla and Singh, about proving that the output of BSC implements the input design (along with other "model checking" problems, such as properties of the BSV design): https://link.springer.com/chapter/10.1007/978-3-540-85114-1_18 I imagine you can find links to other work like this by doing a web search of "Bluespec" plus related terms ("Formal Verification", "Coq", etc). It probably doesn't count as "formal", but it's worth noting that the folks at the University of Cambridge developed a tool called Bluecheck that has been successfully used by many people. It is based on a software verification tool called QuickCheck, but it operates on Bluespec designs. You specify the atomic actions on a design and provide a golden model, and the tool will construct sequences of actions and test that the design and the model have the same behavior; and if a mismatch is found, the tool will reduce that sequence to a smallest sequence, as a minimal test case. /~https://github.com/CTSRD-CHERI/bluecheck It's also worth noting that BSC does have some flags for dumping an elaborated, pre-scheduled design in a formal language. This was experimental work that was done for a researcher, but I don't know if anything came of it. One of the languages is SRI's SAL (Symbolic Analysis Language). The hidden flag |
Beta Was this translation helpful? Give feedback.
-
I was keeping it vague as to not preemptively deter any juicy info - thanks for the responses |
Beta Was this translation helpful? Give feedback.
-
I thought I'd also mention Andy Wright's recent PhD thesis (at MIT), Modular SMT-Based Verification of Rule-Based Hardware Designs. The abstract:
|
Beta Was this translation helpful? Give feedback.
-
Looks like a great thesis! I'd love to give it a skim but it looks like the defense won't be for a few months. I'll keep a tab in my bookmarks, though... |
Beta Was this translation helpful? Give feedback.
-
What facilities (and case studies/flows of) for Formal Verification exist in Bluespec?
Beta Was this translation helpful? Give feedback.
All reactions