是否有一些内置的测试或工具用于正式验证凿子或设计与生成的verilog?构建verilog后端的概念是什么?它有什么错误吗?
答案 0 :(得分:4)
Chisel和FIRRTL中没有内置的形式验证支持。编译器或后端没有工作证明。与任何传统编译器一样,虽然我们尽力捕获并修复它们,但肯定存在错误。
我们正在使用Yosys在我们对FIRRTL代码库进行的任何更改之间的FIRRTL电路的几个实例上执行LEC。我想扩展形式验证的使用,以确保编译器中的各种转换不会改变它们运行的电路的语义。我们还在尝试模型检查后端,以改进与正式验证工具的集成。
答案 1 :(得分:2)
从FIRRTL v1.4和Chisel v3.4开始,将对验证原语提供基本支持。
如果导入chisel3.experimental.verification
,则会得到assert
,assume
和cover
,它们会在Verilog中生成相应的结构。
import chisel3.experimental.{verification => v}
class Foo extends Module {
val predicate: Bool
v.assert(predicate)
}
请注意,这是一个相当底层的接口。我目前正在使用一个帮助程序库,以使在Chisel中进行正式验证更为容易:https://github.com/tdb-alcorn/chisel-formal