2010-11-14 58 views
2

我需要從我寫的E測試中調用Perl腳本。我需要創建一個ini文件調用C腳本,它將創建一個配置文件,我需要爲我正在編寫的測試進行配置。我希望測試調用將處理ini-> C-> config進程的Perl,然後繼續測試。有任何想法嗎?從specman執行perl

+1

什麼是'E'?你真的需要E來調用Perl,而Perl要調用C(什麼是C腳本)來創建一個配置文件? **簡化**是我的建議。 – pmg 2010-11-14 16:29:52

+1

「e」是一種硬件驗證語言。它最常見的實現(可能只有..)是Cadence的Specman。請參閱http://en.wikipedia.org/wiki/Specman – 2010-11-14 22:20:25

+0

僅供參考,Specman沒有Perl API。只有C和C++ API才能用Specman編譯代碼。 – 2010-11-14 22:22:28

回答

4

您可以使用功能systemoutput_from執行系統調用或shell命令。這可以用來執行任意命令,包括Perl的調用。 system函數返回shell調用的返回值,而output_from返回標準(也許標準錯誤...檢查您的文檔..)。

實例:

var ret := system("echo hello world"); 

打印到的Specman屏幕/日誌文件

hello world 

鑑於output_from使用等:

var std_out := output_from("echo hello world"); 
print std_out; 

和打印:

std_out = "hello world" 

函數帶有一個字符串,因此您可以使用append()appendf()函數構建參數。

小問題:您可以使用simulator_command(cmd_str)直接與模擬器命令行界面對話。我之前曾經使用過這個軟件與Synopsys的VCS進行對話

simulator_command("quit"); 
+0

有什麼辦法可以同時獲得輸出和返回值嗎? – 2010-11-16 06:27:55

+0

'output_from_check()' - 它就像'output_from()'一樣執行,除非命令返回非零值,否則會引發錯誤。如果您需要能夠處理錯誤情況,那麼您需要用'try {} else {}'異常處理程序對其進行封裝。這不會讓你得到確切的返回值,但它可以讓你檢測和處理失敗的系統調用。 – 2010-11-17 17:50:53