指针和struct中的实例有什么区别。如何在struct中实例化实例和指针?你如何连接指针?
任何人都可以用一个例子解释一下吗?
答案 0 :(得分: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
};
由于单位实例只能在预运行生成期间创建,因此无法使用do-not-generate运算符(!)声明它们:
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
答案 1 :(得分:0)
关于结构 -
结构,没有"实例" vs"指针"。在某种程度上 - 所有结构字段都是引用。
btw - 调试时,您会看到包含对结构的引用的消息(或dut错误)。像 -
这样的东西[1045] packet- @ 9:开始注射......
然后你可以发出Specman命令 谁是@ 9
将打印出对此"实例"的所有引用。列表可能很长,包含所有引用此结构的内容。