System verilog 指定nettype结构的单个元素

System verilog 指定nettype结构的单个元素,system-verilog,System Verilog,typedef结构定义的Systemverilog网络的常用赋值样式,如 typedef struct { real V; real I; real R; } SVAstruct; // resolution function ommitted nettype SVAstruct SVAnet with res_SVA; 是 因此,网络结构的所有元素的赋值都是同时完成的。像这样的任务 P.R = 100; 给出一个错误。有什么方法可以完成个人作业吗?你不能这样做。创建具有特定数据类型的ne

typedef结构定义的Systemverilog网络的常用赋值样式,如

typedef struct {
real V;
real I;
real R;
}  SVAstruct;
// resolution function ommitted
nettype SVAstruct SVAnet with res_SVA;

因此,网络结构的所有元素的赋值都是同时完成的。像这样的任务

P.R = 100;

给出一个错误。有什么方法可以完成个人作业吗?

你不能这样做。创建具有特定数据类型的nettype后,每个驱动程序都需要该类型的所有字段才能执行其解析函数

想象一下,如果你想要一个信号来表示物理物体上的力。力是一个既有大小又有方向的矢量。如果该信号上的每个驱动器都代表一个力矢量,那么在不知道大小的情况下,无法驱动一个方向

您可以创建与网络类型相同的变量,然后可以对该变量的字段进行单独赋值

inout SVAnet P;
...
SVAstruct S
assign P = S;
...
S.R = 100;

虽然提案允许对S元素进行单独赋值,但不允许对P元素进行赋值。例如,如果其他模块对P值有贡献,则这些贡献将被赋值P=S;覆盖;。所以“你不能那样做”仍然有效谢谢!这些其他模块的输出不应该是
SVAnet
,而应该是表示V、I或R的简单实数。然后可以将它们组合在一起。正确,但不幸的是,在我的情况下,它们是。
inout SVAnet P;
...
SVAstruct S
assign P = S;
...
S.R = 100;