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

时间:2016-12-20 03:00:35

标签: system-verilog

在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 - 语法是什么?或者我如何可靠地将不同类型的物体驱动到网上?

1 个答案:

答案 0 :(得分:3)

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

您只能在网上驾驶类似的类型。如果你看一下分辨率函数的原型(来自6.6.7节)

function automatic T Tsum (input T driver[]);

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

interconnect构造只是连接的管道。它将假定它所连接的类型,并且您将无法将具有不同网络类型的信号连接到相同的interconnect