时序图中的输出out和参考out的一致,判断是输出result_is_zero出现问题
// synthesis verilog_input_version verilog_2001
module top_module (
input do_sub,
input [7:0] a,
input [7:0] b,
output reg [7:0] out,
output reg result_is_zero
);//
always @(*) begin
case (do_sub)
0: out = a+b;
1: out = a-b;
endcase
-----------------------------------------------------------------
//源代码 if (~out)
result_is_zero = 1;
end
-----------------------------------------------------------------
//第一种方案 result_is_zero = (out == 0) ? 1 : 0;
end
-----------------------------------------------------------------
//第二种方案 end
assign result_is_zero = (out == 0) ? 1 : 0;
-----------------------------------------------------------------
endmodule
源代码:
- if中的条件不符合逻辑设计
第二种方案:
- always用reg型,assign用 wire