用 yosys-smtbmc 证明时是否可以使用 $display 来打印一些值?
Is it possible to use $display to print some values when proving with yosys-smtbmc?
在 verilog 中 $display() 函数在模拟中很有用,可以像这个例子一样查看常量或宏的值:
/* Display parameters in simulation */
initial
begin
$display("CLK_PER_NS : %d", CLK_PER_NS );
$display("PULSE_PER_NS : %d", PULSE_PER_NS);
$display("MAX_COUNT : %x", `MAX_COUNT);
$display("MAX_COUNT_SIZE : %x", `MAX_COUNT_SIZE);
end
但是当我使用 cover、bmc 或 prove 启动 yosys-smtbmc 时,控制台中没有任何显示。
可以吗?
我的 sby 脚本(示例来自我的 github 项目 here):
[options]
#mode cover
mode bmc
#mode prove
depth 150
[engines]
smtbmc
[script]
read -formal per2bpm.v
prep -top per2bpm
[files]
../../hdl/per2bpm.v
不,目前不支持。一般来说,使用 Yosys 进行形式验证会为您提供与综合类似的功能集(它呈现给求解器的本质上是一个电路),并添加 assert/assume/cover 等。可以使用读取求解器输出的内容来添加显示,但要正确实施也是一项相当重要的工作。
在 verilog 中 $display() 函数在模拟中很有用,可以像这个例子一样查看常量或宏的值:
/* Display parameters in simulation */
initial
begin
$display("CLK_PER_NS : %d", CLK_PER_NS );
$display("PULSE_PER_NS : %d", PULSE_PER_NS);
$display("MAX_COUNT : %x", `MAX_COUNT);
$display("MAX_COUNT_SIZE : %x", `MAX_COUNT_SIZE);
end
但是当我使用 cover、bmc 或 prove 启动 yosys-smtbmc 时,控制台中没有任何显示。
可以吗?
我的 sby 脚本(示例来自我的 github 项目 here):
[options]
#mode cover
mode bmc
#mode prove
depth 150
[engines]
smtbmc
[script]
read -formal per2bpm.v
prep -top per2bpm
[files]
../../hdl/per2bpm.v
不,目前不支持。一般来说,使用 Yosys 进行形式验证会为您提供与综合类似的功能集(它呈现给求解器的本质上是一个电路),并添加 assert/assume/cover 等。可以使用读取求解器输出的内容来添加显示,但要正确实施也是一项相当重要的工作。