2012-05-10 29 views
2

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

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

+0

Cadence just [posted something](http://www.cadence.com/Community/blogs/fv/archive/2012/05/11/specman-s-memory-management-orientation-guide-or-honey-关于他们的GC引擎,请提供垃圾信息.aspx?utm_source = feedburner&utm_medium = feed&utm_campaign = Feed%3A + cadence%2Fcommunity%2Fblogs%2Ffv +%28Cadence + Functional + Verification + Blogs%29。 –

回答

2

A 单元实例声明单元的一个实例。 A 单元参考(也称为单元指针)指向已存在于单元层次结构中的单元,或者指向任何内容时的值为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 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 
0

而关于结构 -

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

btw - 当调试时,您会看到包含对结构的引用的消息(或dut错误)。喜欢的东西 -

[1045]分组@ 9:启动喷射...

,那么你可以发出命令的Specman谁 是@ 9

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

相关问题