在 SystemVerilog 中,可以在端口中定义事件吗
In SystemVerilog, can events be defined in ports
在 Verilog 中,我知道我们不能在模块之间传递 "events"。 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
你需要给个端口方向;前任。 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
在 Verilog 中,我知道我们不能在模块之间传递 "events"。 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
你需要给个端口方向;前任。 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