我正在尝试使用 miter 和 sat 来证明时序电路的等效性。本质上,两个电路的行为在它们被复位后应该是相同的。不过,我不知道如何告诉 yosys。我试过用-set in_reset 0 -set-at 0 in_reset 1
. 这是一个示例电路(移位寄存器)和 yosys 脚本,说明了我正在尝试做的事情:
module shift_reg(
input clock,
input reset,
input in,
output out
);
reg [7:0] r;
assign out = r[7];
always @(posedge clock) begin
if (reset)
r <= 0;
else
r <= {r[6:0], in};
end
endmodule
我的 Yosys 命令:
read_verilog shift_reg.v
rename shift_reg shift_reg_2
read_verilog shift_reg.v
prep; proc; opt; memory
miter -equiv -flatten shift_reg shift_reg_2 miter
hierarchy -top miter
sat -verify -tempinduct -prove trigger 0 -set in_reset 0 -set-at 0 in_reset 1 -seq 0 miter
如果我添加-set-init-zero
它可以工作,但这会破坏目的,因为我正在尝试测试重置行为。我也可以更改-seq 0
为,-seq 8
但这也违背了目的,因为我试图在电路重置后立即检查它们是否等效。
我如何告诉等效检查在检查之前重置电路?