verilog if判断条件有关于未知值x的判断
时间:10-02
整理:3721RD
点击:
一直ADD_SUB_int是一个1bit的变量,在条件判断时,对其等于未知值X进行判断,这样不是不可综合的吗,请问这样写有何好处啊?
always
begin
if (ADD_SUB_int == 1'bX)
begin
sum_out = {width {1'bX}};
c_out = 1'bX;
SUM <= sum_out;
end
else if (ADD_SUB_int == 1'b0)
begin
plus(sum_out,c_out,A,B,CI);
SUM <= sum_out;
end
else
begin
subtract(diff,c_out,A,B,CI);
SUM <= diff;
end
CO <= c_out;
@(A or B or CI or ADD_SUB_int);
end
always
begin
if (ADD_SUB_int == 1'bX)
begin
sum_out = {width {1'bX}};
c_out = 1'bX;
SUM <= sum_out;
end
else if (ADD_SUB_int == 1'b0)
begin
plus(sum_out,c_out,A,B,CI);
SUM <= sum_out;
end
else
begin
subtract(diff,c_out,A,B,CI);
SUM <= diff;
end
CO <= c_out;
@(A or B or CI or ADD_SUB_int);
end
我觉得没什么用
再说组合逻辑干嘛用非阻塞赋值
驴唇不对马嘴
这种写法肯定不能用于asic
我也是这么想的,不过这好像是人家网上专业的8051的核心代码,也有人在FPGA上实现了,所以表示很费解啊
也許是學生寫好玩的, 雖然可以在FPGA上实现, 但裡面不知還有多少 bug,
這需要大量 verification, 並不表示就可以 mass production,
要能 mass production 通常還有一大段距離.
专业的8051核? 我只知道最专业的是cast8051,里面没发现有这种写法啊
能不能综合有待考证,肯定没什么高明的地方,何必去纠结这样的写法!
我觉得应该是有点作用的,比方说在验证时?当判断条件为X时,就可以显示出来了,在综合后的电路上有木有作用就不知道了,应该是没有作用的,但是肯定是可以综合的。
用 $isunknown() 验证比较好一些
assert property (@(posedge clk) $isunknown(...))
$display(....);
else
$display(........);