2016-05-17 162 views
0

是否允许在系统verilog中实例化always_comb块中的模块?是否允许在系统verilog中实例化always_comb块内的模块?

always_comb 
begin 
    OR OR1 (.Y(A), .A(Z), 
end 
+1

如果您确实想使用条件硬件,请将您的模块转换为任务或功能并有条件地调用它。它增加了您的硬件资源,但会满足您的要求。 –

+2

有没有什么特别的理由让你尝试这个而不仅仅是实例化呢? – Morgan

回答

5

首先,您的代码不完整。显然,一个双输入或门需要三个连接。

用Verilog,当你实例一个模块,这意味着你要添加额外的硬件板。

该硬件必须加入仿真开始之前(即在编译时间)。在这里,您不能在每个时钟脉冲添加/删除硬件。

一旦实例化,模块将被执行/检查每个时间戳的模拟,直到结束。因此要执行任何模块,只需实例化它,为其提供所需的输入(并在必要时将always块添加到子模块本身中)。

// Simply instantiate module 
OR OR1 (.Y(A), .A(Z), .B(M)); 

无论哪种方式,你可以一个组合模块添加到当前模块本身:从Verilog Module InstantiationInstantiating Modules and PrimitivesStructural Modelling链接获得的实例

// Directly use ORing 
always_comb begin 
    A = Z | M; 
end 

更多信息。