这是我的verilog声明:
reg[2:0] a; // Create register 'a' which is 3 bit.
assign a[1] = 1'b1; // Assigning value to 1st bit of register 'a'.
我必须在Z3中实现上述声明。 对于使用BitVecExpr的verilog语句的第一行:
BitVecExpr a = ctx.mkBVConst("a",3);
我在实现第二行verilog语句时遇到了问题。 有谁知道如何在Z3中实现这个?
答案 0 :(得分:1)
使用Z3,您无法修改变量。实际上Z3并不称之为变量,它是一个常数。
您需要创建一个与旧常量相关的新常量。例如,如果您想说y = x + 1
这将是
var y = ctx.MkBVAdd(x, 1);
如果您想说x = x + 1
,您需要为旧版x
引入一个新名称:
var x2 = ctx.MkBVAdd(x1, 1);