用 yices 进行形式化验证 -- broken pipe
Formal verification with yices -- broken pipe
我正在尝试正式验证我的 verilog FPGA 设计 led_walker.v
。所以我先把它综合成一个.smt2
文件:
┌───┐
│ $ │ ziga > ziga--workstation > 001--led_walker--verification
└─┬─┘
└─> yosys \
-p "read_verilog -sv -formal led_walker.v" \
-p "prep -nordff -top led_walker" \
-p "write_smt2 led_walker.smt2 "
然后我使用带有 yosys-smtbmc
的合成 led_walker.smt2
文件,使用 BMC 方法:
正式验证我的设计
┌───┐
│ $ │ ziga > ziga--workstation > 001--led_walker--verification
└─┬─┘
└─> yosys-smtbmc led_walker.smt2
## 0:00:00 Solver: yices
Traceback (most recent call last):
File "/usr/bin/yosys-smtbmc", line 392, in <module>
smt.write(line)
File "/usr/share/yosys/smtio.py", line 413, in write
self.p_write(stmt + "\n", True)
File "/usr/share/yosys/smtio.py", line 297, in p_write
if flush: self.p.stdin.flush()
BrokenPipeError: [Errno 32] Broken pipe
此命令尝试使用解算器 yices
,但看起来它已损坏...
我是形式验证的新手,作为新手我不知道这个错误是由于我的设计缺陷还是系统问题?对我来说,它看起来像一个 python 错误...
这是另一个尝试,但这次我使用 -i
标志指示 yices
使用 归纳法 正式验证我的设计。它再次失败 (实际上是一样的):
┌───┐
│ $ │ ziga > ziga--workstation > 001--led_walker--verification
└─┬─┘
└─> yosys-smtbmc -i led_walker.smt2
## 0:00:00 Solver: yices
Traceback (most recent call last):
File "/usr/bin/yosys-smtbmc", line 398, in <module>
smt.write(line)
File "/usr/share/yosys/smtio.py", line 430, in write
self.p_write(stmt + "\n", True)
File "/usr/share/yosys/smtio.py", line 314, in p_write
if flush: self.p.stdin.flush()
BrokenPipeError: [Errno 32] Broken pipe
二进制 yosys-smtbmc
作为官方包 yosys
的一部分安装,当前版本为:
┌───┐
│ $ │ ziga > ziga--workstation > ~
└─┬─┘ /dev/pts/10
└─> yosys -V
Yosys 0.9 (git sha1 1979e0b)
Solver yices
(版本 2.6.2) 是从官方网站 here 下载的预编译二进制文件,使用 install-yices
脚本。
它们是这样安装的并且对系统可见:
┌───┐
│ $ │ ziga > ziga--workstation > local
└─┬─┘
└─> pwd
/usr/local
┌───┐
│ $ │ ziga > ziga--workstation > local
└─┬─┘
└─> ag -l --search-binary yices
include/yices_exit_codes.h
include/yices_types.h
include/yices_limits.h
include/yices.h
bin/yices-sat
lib/libyices.so.2.6.2
bin/yices-smt
bin/yices-smt2
bin/yices
有人知道为什么会这样吗?安装旧版本的 ˙yices˙ 是否有可能有所帮助?或者也许我缺少一些 python 包?
我找到了解决办法。问题出在预编译的二进制文件上!如果我从 GitHub 获取最新的开发资源然后编译,一切正常。
这是正确的做法:
git clone https://github.com/SRI-CSL/yices2.git yices2
cd yices2
autoconf
./configure
make -j$(nproc)
sudo make install
太糟糕了,没有 debian (他们提供的不是 ubuntu PPA 存储库,但无法正常工作) 软件包!
我正在尝试正式验证我的 verilog FPGA 设计 led_walker.v
。所以我先把它综合成一个.smt2
文件:
┌───┐
│ $ │ ziga > ziga--workstation > 001--led_walker--verification
└─┬─┘
└─> yosys \
-p "read_verilog -sv -formal led_walker.v" \
-p "prep -nordff -top led_walker" \
-p "write_smt2 led_walker.smt2 "
然后我使用带有 yosys-smtbmc
的合成 led_walker.smt2
文件,使用 BMC 方法:
┌───┐
│ $ │ ziga > ziga--workstation > 001--led_walker--verification
└─┬─┘
└─> yosys-smtbmc led_walker.smt2
## 0:00:00 Solver: yices
Traceback (most recent call last):
File "/usr/bin/yosys-smtbmc", line 392, in <module>
smt.write(line)
File "/usr/share/yosys/smtio.py", line 413, in write
self.p_write(stmt + "\n", True)
File "/usr/share/yosys/smtio.py", line 297, in p_write
if flush: self.p.stdin.flush()
BrokenPipeError: [Errno 32] Broken pipe
此命令尝试使用解算器 yices
,但看起来它已损坏...
我是形式验证的新手,作为新手我不知道这个错误是由于我的设计缺陷还是系统问题?对我来说,它看起来像一个 python 错误...
这是另一个尝试,但这次我使用 -i
标志指示 yices
使用 归纳法 正式验证我的设计。它再次失败 (实际上是一样的):
┌───┐
│ $ │ ziga > ziga--workstation > 001--led_walker--verification
└─┬─┘
└─> yosys-smtbmc -i led_walker.smt2
## 0:00:00 Solver: yices
Traceback (most recent call last):
File "/usr/bin/yosys-smtbmc", line 398, in <module>
smt.write(line)
File "/usr/share/yosys/smtio.py", line 430, in write
self.p_write(stmt + "\n", True)
File "/usr/share/yosys/smtio.py", line 314, in p_write
if flush: self.p.stdin.flush()
BrokenPipeError: [Errno 32] Broken pipe
二进制 yosys-smtbmc
作为官方包 yosys
的一部分安装,当前版本为:
┌───┐
│ $ │ ziga > ziga--workstation > ~
└─┬─┘ /dev/pts/10
└─> yosys -V
Yosys 0.9 (git sha1 1979e0b)
Solver yices
(版本 2.6.2) 是从官方网站 here 下载的预编译二进制文件,使用 install-yices
脚本。
它们是这样安装的并且对系统可见:
┌───┐
│ $ │ ziga > ziga--workstation > local
└─┬─┘
└─> pwd
/usr/local
┌───┐
│ $ │ ziga > ziga--workstation > local
└─┬─┘
└─> ag -l --search-binary yices
include/yices_exit_codes.h
include/yices_types.h
include/yices_limits.h
include/yices.h
bin/yices-sat
lib/libyices.so.2.6.2
bin/yices-smt
bin/yices-smt2
bin/yices
有人知道为什么会这样吗?安装旧版本的 ˙yices˙ 是否有可能有所帮助?或者也许我缺少一些 python 包?
我找到了解决办法。问题出在预编译的二进制文件上!如果我从 GitHub 获取最新的开发资源然后编译,一切正常。
这是正确的做法:
git clone https://github.com/SRI-CSL/yices2.git yices2
cd yices2
autoconf
./configure
make -j$(nproc)
sudo make install
太糟糕了,没有 debian (他们提供的不是 ubuntu PPA 存储库,但无法正常工作) 软件包!