2

结构中的指针和实例有什么区别。如何在 struct 中实例化实例和指针?如何连接指针?

任何人都可以用一个例子来解释吗?

4

2 回答 2

2

一个单元实例声明一个单元的实例。单元引用(也称为单元指针)指向单元层次结构中已经存在的单元,或者当它不指向任何内容时其值为 NULL。

单元是静态项目,只能在运行前生成期间创建,并且永远不能被销毁(取消引用,然后进行垃圾收集)。一个单元只能在另一个单元内实例化。因此,每个 e 程序都有一个单元实例树,其根为 sys(唯一的预定义单元)。这与结构相反,结构可以在测试阶段的任何时间动态创建。

unit simple_u {};

struct example_s {
  generated_ref  : simple_u;
  generated_inst : simple_u is instance; // Illegal: Instance cannot be in struct
};

由于单元实例只能在运行前生成期间创建,因此不能使用不生成运算符 (!) 声明它们:

generated_inst : simple_u is instance;
!nongen_inst   : simple_u is instance; // Illegal: Instances must be generated.

可以生成或不生成单位参考。如果它被生成,那么它必须有一个约束,要么将它指向一个单独声明的单元实例,要么指向 NULL:

!nongen_ref    : simple_u;
generated_ref  : simple_u; // Requires a generation constraint (like below)
keep soft generated_ref == NULL;
keep      generated_ref == generated_inst;

在单元实例上使用gen操作是非法的。可以随时(即时)生成单元引用,但它必须具有预先存在的约束或使用保留块指定的约束:

gen generated_inst; // Illegal to explicitly generate an instance
gen generated_ref;
gen nongen_ref keeping {it == generated_inst};

在程序代码中分配给单元引用是合法的,但不能将单元实例分配给:

generated_ref  = NULL;
generated_inst = NULL; // Illegal to assign to an instance
于 2012-05-12T19:55:14.603 回答
0

关于结构 -

对于结构,没有“实例”与“指针”。在某种程度上 - 所有结构字段都是引用。

顺便说一句 - 调试时,您会看到包含对结构的引用的消息(或 dut 错误)。就像是 -

[1045] 数据包-@9: 开始注入...

然后你可以发出 @9 的 Specman 命令

这将打印出对此“实例”的所有引用。这个列表可能很长,包含所有曾经引用过这个结构的东西。

于 2014-03-27T06:17:11.687 回答