用 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 等。可以使用读取求解器输出的内容来添加显示,但要正确实施也是一项相当重要的工作。