2015-10-06 44 views
0

我熟悉Specman中的collect命令,它返回所有指定方法的擴展。但是,某個結構的show source僅返回基本結構定義,而不是所有擴展。 在Specman中是否有相當於collect的命令,但是對於結構體/單元?獲取Specman中所有結構擴展的源參考

+0

順便說一句,得到的方法的擴展,你也可以使用'顯示source'命令,在形式:'節目源type.method *' –

回答

4

在Specman中沒有這樣的命令,但由於e是一種令人難以置信的靈活語言,您可以使用強大的e宏添加任何可能需要的命令。

例如,爲了實現你想要什麼,你可以創建一個宏,利用反射 機制以獲得所需的結構的所有層,然後打印相關的源行:

define <struct_collect'command> "s_collect <any>" as { 
var line_num:int; 
var st:rf_struct = rf_manager.get_struct_by_name("<1>"); 
if (st==NULL) { 
    out(append("struct name does not exist : <1>")); 
} else { 
    for each in st.as_a(rf_like_struct).get_layers() { 
     line_num=it.get_source_line_num(); 
     out(append("In file ",it.get_module().get_name()," line ",line_num, " : ",files.get_text_lines(it.get_module().get_full_file_name(), line_num,line_num))); 

    };  
    }; 
}; 

你可以通過將結果寫入文件或以不同的方式安排它來改進此宏。

乾杯