我最近启动了System,我对语法错误感到有点困惑。鉴于以下模块:
test.sv:
module test(
input logic clk,
output logic out );
always_ff @(posedge clk) begin
out = 1'b1;
end
endmodule使用iverilog -g2012 test.sv编译时,将为第5行(always_ff)生成一个简单的syntax-error。我不知道为什么会发生这种情况,因为我的语法似乎是正确的。
发布于 2020-11-06 23:06:43
SystemVerilog的语法是正确的,但并不是所有的iverilog版本都支持它。来自Icarus Verilog 11的发行说明
现在支持下列SystemVerilog语言特性: always_comb、always_ff和always_latch构造
如果您不使用此版本,则应进行升级。
您的代码在操场上的其他模拟器上编译。
或者,您不需要使用always_ff。您仍然可以使用always
always @(posedge clk) begin
out <= 1'b1;
end我将您的分配改为非阻塞(<=),这是对顺序逻辑的推荐。
https://stackoverflow.com/questions/64721874
复制相似问题