2009-05-25 78 views
1

我在的Specman下面的代碼,我繼承:specman有靜態變量嗎?

some_method() is { 
    var a: bool; 

    if (!a) { 
     a = some_other_method(); 
    }; 
}; 

我的理解是,每次some_method()被調用時,a被重新生成,有一個在它的分配之前檢查a的價值沒有意義。但是,這可能是我在這裏錯過了一些東西。例如,如果a是靜態的,那麼這段代碼是有道理的,這使我想到了我的問題:

有沒有什麼辦法讓變量在specman中是靜態的?

回答

3

沒有像C中那樣的靜態變量。如果方法中的變量具有其默認值(在這種情況下爲False),如果未初始化,則應該正確if (!a)應始終爲True

事情會有所不同,如果a是一個結構成員,然後像其他面向對象的語言,將保留有值在幾個方法調用和檢查會更有意義:

struct some_struct_s { 
    a : bool; 
    some_method() is { 
     if (!a) { 
      a = some_other_method(); 
     }; 
    }; 
}; 

你可以檢查東西一樣這也對交互提示:

Specman> var a : bool; 
Specman> print a 
    a = FALSE 

有交互式幫助還不錯,例如嘗試:

Specman> help variable 

並選擇條目(按編號)sn_eref: variables : declaring。在那裏你會找到你的問題的所有相關信息。

乾杯, 丹尼爾

0

靜態結構成員(事件,字段,方法)添加到實施的Specman v15.2的語言。無法生成靜態字段,物理(%)或在子類型中使用。

struct some_struct_s { 
    a : bool; 
    some_method() is { 
     if (!a) { 
      a = some_other_method(); 
     }; 
    }; 
}; 

-- Change field 'a' for all instances 
on xxx { some_struct_s::a = TRUE; }; 

下面是來自teamspecman博客的一些意見:Static members in e