在Verilog中,设计组合逻辑和时序逻辑时,都要用到always:
always @(*) //组合逻辑 if(a > b) out = 1; else out = 0; always @(posedge clk) //时序逻辑 flip-flop触发器 if(en) out <= in;
仅从关键字上,看不出设计者想要一个什么样的电路。
SystemVerilog把always关键字细化了。对不同的设计要求有不同的关键字:
always_comb //组合逻辑 if(a > b) out = 1; else out = 0;
comb是combinational的缩写,always_comb表示设计者想要设计一个组合逻辑电路。同时不必再写敏感信号列表。我们在设计组合逻辑电路时,一件最重要的事就是不要一不小心搞一个latch出来。always_comb会告诉综合工具,这里需要的是一个组合逻辑电路。假如我们设计时,if语句或者case语句没有写完整,
always_comb //错误 if(a