在SystemVerilog中,可以在端口中定义事件吗
在Verilog中,我知道我们不能在模块之间传递“事件”。Verilog系统怎么样?我想让事件“trig”钩住触发器源块“eventGen”,并被块“eventConsume”消费掉一些我是如何得到编译错误的 代码:在SystemVerilog中,可以在端口中定义事件吗,verilog,system-verilog,Verilog,System Verilog,在Verilog中,我知道我们不能在模块之间传递“事件”。Verilog系统怎么样?我想让事件“trig”钩住触发器源块“eventGen”,并被块“eventConsume”消费掉一些我是如何得到编译错误的 代码: 你需要给出一个港口方向;例如,inout事件。工作示例。SystemVerilog还可以使用ref事件 module eventGen(output event trigGen, input clk); reg [3:0] count; initial count = 0; alw
你需要给出一个港口方向;例如,
inout事件
。工作示例。SystemVerilog还可以使用ref事件
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
请注意,事件
不可合成。另外,reg-count[3:0]
需要是reg-count[3:0]计数
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
我得到的错误为“输入端口propagateEvents.sv的低连接中的错误-[RILIP]寄存器,21“trigGen”非网络变量“trigGen”不能是输入或输入输出端口。错误-[RILIP]寄存器位于输入端口propagateEvents.sv的低连接中,40“trigGen”“非净变量'trigConsume'不能是输入或输入输出端口。无需使用
ref
端口。分配给另一个事件时使用的事件变量将句柄传递给该事件,该事件本身就是一个引用。只需将端口设置为输出
到事件发生
和输入
到事件消耗
即可将事件数据类型分配给其他事件数据类型。我有两个或两个以上的事件,比如eventA,eventB,eventC。我希望“trigConsume”是eventA | eventB | eventC;换句话说,assign trgConsume=eventA | eventB | eventC在语义上是有效的?always@(eventA或eventB或enventC)->trigConsume代码>或始终@(eventA)->trigConsume;始终@(eventB)->trigConsume;始终@(eventC)->trigConsume代码>。执行trigConsume=eventA
,将其别名为eventA,但trigConsume=eventB
将覆盖别名<代码>事件A=trigConsume;eventB=trigConsume代码>将别名所有内容。参见第6.17节事件数据类型