2012-05-10 61 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

將打印出所有對這個「實例」。該列表可能很長,包含所有曾經引用此結構的內容。

相關問題