在Verilog,我知道我们无法通过"事件"模块之间。 Howe关于System Verilog?我想要这个活动" trig"挂钩触发源块" eventGen"并被块" eventConsume"消耗。一些我如何得到编译错误
代码:
module propagateEvents;
reg clk;
event trig;
initial
begin
clk = 1'b0;
end
always #10 clk = ~clk;
eventGen eventGen (trig, clk);
eventConsume eventConsume (trig, clk);
endmodule
module eventGen(trigGen, clk);
input clk;
event trigGen;
reg count[3:0];
initial
count = 0;
always @(posedge clk)
begin
count = count + 1'b1;
if (count == 'h8)
->trigGen;
end
endmodule
module eventConsume(trigConsume, clk);
input clk;
event trigConsume;
always @(trigConsume)
begin
$display("Trigger caught");
end
endmodule
答案 0 :(得分:1)
你需要给出一个端口方向;恩。 inout event
。工作示例here。 SystemVerilog也可以使用ref event
。
请注意event
无法合成。 reg count[3:0]
也需要reg [3:0] count
。
module eventGen(output event trigGen, input clk);
reg [3:0] count;
initial count = 0;
always @(posedge clk)
begin
count = count + 1'b1;
if (count == 'h8)
->trigGen;
end
endmodule
module eventConsume(input event trigConsume, input clk);
always @(trigConsume)
begin
$display("Trigger caught");
end
endmodule