System verilog 在SystemVerilog中,(*)是什么意思?

System verilog 在SystemVerilog中,(*)是什么意思?,system-verilog,System Verilog,我有一个测试台,声明为 module test_circuit logic a,b,c; logic y; circuit UUT (.*); //what does this line mean? initial begin //something here end endmodule 我还没有找到任何教程告诉我这是什么意思。我看过《语言参考手册》,它说这是一种“通配符模式”,但没有详细说明 否则。。。在任何搜索引擎中搜索特殊字符都很

我有一个测试台,声明为

module test_circuit
    logic a,b,c;
    logic y;

    circuit UUT (.*);    //what does this line mean?

    initial begin
    //something here
    end
endmodule
我还没有找到任何教程告诉我这是什么意思。我看过《语言参考手册》,它说这是一种“通配符模式”,但没有详细说明


否则。。。在任何搜索引擎中搜索特殊字符都很困难,我发现的结果似乎只与其他语言相关

事实上,这一点在。请参阅第23.3.2.4节使用通配符命名的端口连接(.*)连接模块实例。引用本节第一部分:

SystemVerilog可以为实例端口名与连接端口名匹配且其数据类型等效的所有端口使用.*通配符语法隐式实例化端口。这样就不需要列出连接声明的名称和类型与实例端口的名称和等效类型匹配的任何端口

要在示例中反映这一点:假设模块
电路
具有端口
a
b
y
d

您可以按照LRM第23.3.2.2节中的描述,完全明确地连接它们。如果名称或宽度不匹配,这是必要的:

circuit UUT 
(.a (a),
 .b (b),
 .c (c),
 .y (y));
您还可以使用隐式命名端口连接(LRM第23.3.2.3节):

但是,如果不想键入所有端口,最快的方法是确保信号的名称和类型在层次结构中匹配。然后,您可以简单地使用通配符命名的端口连接:

circuit UUT
(.*);
请记住,最后一种方法可能会使调试RTL变得困难,因为在高级别上跟踪信号会变得更困难


奖励:除了LRM,看看Sutherland&Mills纸业。第7节对不同类型的端口连接以及点名称和点星形连接的优点进行了总结。

除了Silicon1602的答案外,您还可以这样做,这意味着变量
aa
连接到端口
a
,其他每个端口都连接到相同名称的变量:

circuit UUT 
(.a(aa),
 .*);
circuit UUT 
(.a(aa),
 .*);