System verilog 如何在AMS中将多种对象类型驱动到网络上?

System verilog 如何在AMS中将多种对象类型驱动到网络上?,system-verilog,System Verilog,QuestaSIM用户手册版本10.5a第336页规定: 在最新的SystemVerilog标准(Std IEEE 1800-2012)中,确立了两个重要概念: 用户定义的网络类型(UDN)-UDN允许定义网络类型 可以使用内置类型(例如 real)或用户定义的类型(如struct)。因此,UDN是一个 Verilog AMS中环网类型的推广。为了 允许依赖UDN的模型连接,这是一种更通用的 互连对象需要连接机制 但是他们实际上没有指定UDN是如何构造的。对“nettype”和“intercon

QuestaSIM用户手册版本10.5a第336页规定:

在最新的SystemVerilog标准(Std IEEE 1800-2012)中,确立了两个重要概念:

用户定义的网络类型(UDN)-UDN允许定义网络类型 可以使用内置类型(例如 real)或用户定义的类型(如struct)。因此,UDN是一个 Verilog AMS中环网类型的推广。为了 允许依赖UDN的模型连接,这是一种更通用的 互连对象需要连接机制

但是他们实际上没有指定UDN是如何构造的。对“nettype”和“interconnect”的语法引用似乎与此描述非常接近,但两者都不符合要求-我无法分配interconnect,也无法将自己的类型用于nettype。我正在创建一个模型,需要将用户定义的对象驱动到规范中定义的UDN上

module SomeModel(output nettype ObjectContainingProperties outputToInterconnect);

class ObjectContainingProperties;

endclass

ObjectContainingProperties ocp;
assign outputToInterconnect=ocp;

initial begin
    ocp=new();
end

endmodule
但我得到了一个错误:

QuestaSim-64 vlog 10.5a Compiler 2016.04 Apr  4 2016
Start time: 18:55:05 on Dec 19,2016
vlog -ams -wireasinterconnect SomeModel.sv 
-- Compiling module SomeModel
** Error: (vlog-13069) SomeModel.sv(11): near "nettype": syntax error, unexpected nettype, expecting IDENTIFIER.

如何创建对象并将其附加到UDN?语法是什么?或者如何将不同类型的对象可靠地驱动到网络上?

用户定义的网络类型不属于SystemVerilog的OOP
类型系统。只能定义包含位或实数组合的结构或数组的网络类型。类仅用于访问参数化函数。(参见13.8参数化任务和功能)

您只能在网络上驾驶类似类型的车辆。如果您查看解析函数的原型(参见第6.6.7节)

您可以看到该函数有一个作为数组的输入参数。将使用网络上所有驱动程序的值填充-它们必须是相同的类型


互连
结构只是连接的导管。它将假定其连接的类型,并且您将无法将具有不同网络类型的信号连接到同一
互连

您引用的文本不是来自IEEE 1800-2012标准。您看过第6.6.7节“用户定义的nettypes”中的示例了吗?我在编辑时意外地将问题的顶部剪掉了。不确定它是否值得否决,我更正了它。你有IEEE 1800-2012手册吗?是的,我完全理解你参考的6.6.7节建议nettype T可以分配T的类型。我要寻找的是一种使用6.6.8互连的方法,我可以在同一个模块中驱动多个通用类型的网络。或者这是不可能的,需要进行分解和分区以将各种网络类型驱动到更高级别块上的互连上吗?我怀疑我可能需要更改错误示例以供将来参考,但当我发布它时,我假设在其他语言中存在一个与网络“对象”等价的实例。我想我还不太明白。基本上,我有各种电压/电流/噪声类型,它们不是从同一父类派生的。让一个网络通过一个系统是我们的目标。如果我把T中的所有东西都子类化,那么我的对象就可以毫无问题地应用,这公平吗?那么本质上创建一个基本的NetTypeObject,从中继承所有内容?我假设这适用于使用“with”作为解析的多个驱动程序。除了T不能是类类型之外。好的,听起来好像不支持使用用户定义的类型驱动网络。为了解决这个问题,如果我在顶部有一个单例,并在网络上驱动值,那么网络上的值可以是一个对象的查找键?这样公平吗?
function automatic T Tsum (input T driver[]);