在QuestaSIM用户手册版本10.5a中,请参见第336页:
在最新的SystemVerilog标准(Std IEEE 1800-2012)中,确立了两个重要概念:
用户定义的网络类型(UDN) - UDN允许定义网络类型 可以使用内置类型携带任意复杂的数据(例如 真实的)或用户定义的类型(如struct)。因此,UDN是一个 从Verilog-AMS推广wreal网类型。为了 允许连接依赖于UDN的模型,这是更通用的 需要连接机制 - 互连对象。
但他们真的没有说明如何构建UDN。对'nettype'和'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 - 语法是什么?或者我如何可靠地将不同类型的物体驱动到网上?
答案 0 :(得分:3)
用户定义的网络类型不是SystemVerilog的OOP class
类型系统的一部分。您只能定义包含位或实数组合的结构或数组的网络类型。类仅用于访问参数化函数。 (参见13.8参数化任务和功能)。
您只能在网上驾驶类似的类型。如果你看一下分辨率函数的原型(来自6.6.7节)
function automatic T Tsum (input T driver[]);
您会看到该函数有一个输入参数是一个数组。这将填充网络上所有驱动程序的值 - 它们必须都是相同的类型。
interconnect
构造只是连接的管道。它将假定它所连接的类型,并且您将无法将具有不同网络类型的信号连接到相同的interconnect