TWI526862B - 用以從命令列測試積體電路的系統、方法與非暫態電腦可讀儲存媒體 - Google Patents

用以從命令列測試積體電路的系統、方法與非暫態電腦可讀儲存媒體 Download PDF

Info

Publication number
TWI526862B
TWI526862B TW102137267A TW102137267A TWI526862B TW I526862 B TWI526862 B TW I526862B TW 102137267 A TW102137267 A TW 102137267A TW 102137267 A TW102137267 A TW 102137267A TW I526862 B TWI526862 B TW I526862B
Authority
TW
Taiwan
Prior art keywords
test
command
representation
input
column input
Prior art date
Application number
TW102137267A
Other languages
English (en)
Other versions
TW201435633A (zh
Inventor
羅柏 艾爾菲利
Original Assignee
輝達公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 輝達公司 filed Critical 輝達公司
Publication of TW201435633A publication Critical patent/TW201435633A/zh
Application granted granted Critical
Publication of TWI526862B publication Critical patent/TWI526862B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/36Circuit design at the analogue level
    • G06F30/367Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Debugging And Monitoring (AREA)

Description

用以從命令列測試積體電路的系統、方法與非暫態電腦可讀儲存媒體
本發明係有關積體電路模擬。
可使用應用程式使類比及數位電路在軟體中進行模擬及測試。SPICE(特別為積體電路模擬的程式)為用以測試類比電路的習知模擬程式。Verilog及VHDL(超高速積體電路硬體描述語言)為相容於用以測試數位電路之各種模擬器的習知硬體描述語言。表示一電路之程式碼的驗證一般需要由電路設計者建構測試向量刺激的專屬測試台及規格。當電路為大單元內之邏輯的一部份,測試向量之專屬測試台及規格的建構可能占用電路設計者相當大量的時間。因此,驗證有時僅在大單元等級施行。
因此,需要簡化針對大單元內之子電路的電路驗證程序及/或解決習知技術的其他問題。
提供用以測試一電路表示之系統、方法與電腦程式產品。在一命令列介面接收一命令列輸入。命令列輸入係轉換為一或多個測試條 件。此外,產生組態以模擬電路表示並驗證一或多個測試條件的一測試環境。
100‧‧‧應用程式
105‧‧‧命令列輸入
110‧‧‧電路表示
115‧‧‧命令邏輯
120‧‧‧測試條件
125‧‧‧邏輯宣告
130‧‧‧測試台
135‧‧‧波形檢視器
150‧‧‧測試環境
200‧‧‧方法
300‧‧‧方法
400‧‧‧系統
401‧‧‧中央處理器
402‧‧‧通訊匯流排
404‧‧‧主記憶體
405‧‧‧輸入裝置
406‧‧‧圖形處理器
408‧‧‧顯示器
410‧‧‧次要儲存器
圖1顯示根據一具體實施例之由一應用程式根據一命令列輸入而產生的測試環境;圖2描述根據一具體實施例之用以測試一電路表示之方法的流程圖;圖3描述根據一具體實施例之用以測試一電路表示之另一方法的流程圖;以及圖4描述前述各種具體實施例之各種架構及/或功能可實施於其中的一範例性系統。
圖1顯示根據一具體實施例之由應用程式100根據命令列輸入105而產生的測試環境150。在一可能的具體實施例中,應用程式100可為Vquiz應用程式。雖然本文提出Vquiz應用程式作為應用程式100的一範例,但應特別注意到,此程式僅為了描述目的而提出,且可使用任何應用程式來對其進行補充及/或替代。
電路設計者藉由根據命令列輸入105自動地產生測試環境150而測試電路表示110。電路表示110編碼各種電路元件(其包含但不限於電晶體、時脈電路、邏輯閘、暫存器、及/或對此的任何其他電路元件)的功能行為。在一具體實施例中,電路表示110可指定連接至各種電路元件的輸入 信號及輸出信號。舉例來說,正反器邏輯裝置的電路表示可指定連接至正反器裝置的時脈輸入信號、輸入信號D、及輸出信號Q。
經由命令列輸入105,電路設計者指定一或多個測試條件,以在電路表示110的模擬過程中驗證。如在本文中將進一步描述,命令列輸入105可為包含一或多個測試輸入的一文字串,其包含但不限於對應電路表示110的檔案名稱、讀取列出測試輸入之檔案名稱、跟著一或多個引數的表達式或假設(如信號的布林組合)、一或多個選項(如旗標、開關等)、及/或對此的任何其他測試輸入。在一具體實施例中,輸入並非經由命令列接收,而是經由腳本語言(例如Perl程式語言)接收,且可為簡單函數呼叫或為可不需引數而使用的函數呼叫。
在一可能的具體實施例中,各種不同的測試可由命令列輸入105指定。舉例來說,電路設計者可檢查電路表示110的輸入或輸出信號在模擬過程中是否曾具有一特定數值或者輸入及/或輸出數值的特定布林組合是否在模擬過程中發生。在另一範例中,電路設計者可檢查電路表示110的特定輸入或輸出信號在模擬過程中是否為X(即未知、未指定、或未定義)數值。當測試環境150包含由應用程式100產生的正式驗證結構時,電路設計者也可在電路表示110的模擬過程中執行信號轉換的詳盡檢查。在一具體實施例中,應用程式100可組態以在當測試失敗時在電路表示110的模擬後開啟波形檢視器135或組態以顯示由測試條件所指定的特定事件。
測試環境150包含一或多個測試條件120、測試台130、及波形檢視器135。當應用程式100轉換由命令列輸入105所指定的假設及表達式時將產生測試條件120。在一具體實施例中,至少一部份的假設及表達式係 由包含作為命令列輸入105內之引數的檔案所指定。測試台130包含邏輯宣告125及命令邏輯115,其由應用程式100回應命令列輸入105而產生。命令邏輯115可包含時脈信號及時脈閘控電路,其係由可實例化電路表示110之所有邏輯單元所使用。邏輯宣告125由應用程式100基於從命令列輸入105推論之計數器及暫存器而產生。在一具體實施例中,電路表示110為3深度先進先出(FIFO)緩衝器。以下的命令列輸入105可指定用於測試3深度FIFO緩衝器電路表示110:vquiz -m fifo -assume '~wr_req' -always 'wr_idle'其中fifo為FIFO緩衝器電路表示110的名稱、wr_req為輸入信號且wr_idle為FIFO緩衝器電路表示110的輸出信號。-assume命令為由電路設計者指定的限制條件。由命令列輸入105所指定的-assume命令係驗證當wr_req(寫入請求)輸入信號為否定時,wr_idle(寫入閒置)輸出信號總是為肯定(asserted)。-assume命令係由應用程式100轉換為測試條件120的第一測試條件。
在另一具體實施例中,FIFO緩衝器電路表示110並不包含wr_idle輸出信號且以下的命令列輸入105可指定用於測試3深度FIFO電路表示110,其中當wr_req輸入信號為否定時,rd_req信號(讀取請求)為肯定且wr_count信號(寫入計數)及rd_count信號(讀取計數)皆為零:vquiz -m fifo -assume '~wr_req'\ -always 'rd_req && wr_count==0 && rd_count_p==0' rd_req為輸入信號且wr_count及rd_count_p為FIFO緩衝器電路表示110內之計數器的輸出信號。在另一具體實施例中,可使用-never表達式取代-always表達式來測試FIFO緩衝器電路表示110: vquiz -m fifo -assume '~wr_req' -never 'rd_req || wr_count !=0 || rd_count_p !=0'在一具體實施例中,應用程式100假設FIFO緩衝器電路表示110的clk輸入信號及reset輸入信號為時脈及重設信號,並在測試台130中產生對時脈及重設的適當刺激。
電路設計者可能想要針對具有數值X(即未知、未指定、或未定義)而非為肯定或否定(即分別具有數值1或0)的信號來測試FIFO緩衝器電路表示110。可指定以下的命令列輸入105:vquiz -m fifo -xallowed wr_data '~wr_req'\ -xallowed rd_data '~rd_req'\ -never_xprop在一具體實施例中,預設為電路表示110的所有輸入信號係假設為具有非X數值(即已知、已指定、或已定義)且每一輸出可從未有數值X(除了在重設過程中)。-never_xprop表達式係用以檢查X從未被傳播到輸出,且在模擬過程中,每一輸出係個別地檢查。-xallowed表達式可用以在當某些布林表達式為真時允許輸入信號及輸出信號具有X數值。
在前文所示的命令列輸入105中,第一個-xallowed表達式指定第一測試條件,其為當wr_req輸入信號為否定時,wr_data(寫入資料)輸入信號可具有數值X。第二個-xallowed表達式指定第二測試條件,其為當rd_req輸入信號為否定時,rd_data(讀取資料)輸入信號可具有數值X。-never_xprop表達式係指定一次一個地測試FIFO緩衝器電路表示110的每一輸出信號。預設為應用程式100將具有數值X的輸出信號識別為一錯誤。所有其他輸入及 輸出可由應用程式100假設為控制信號且應從未具有數值X。
現在將提出更多有關各種選擇性架構及特徵的描述性資訊,可根據使用者的期望而以其實施或不實施前述結構。應特別的注意到,以下資訊係為了描述目的而提出且不應以任何方式解釋為限制。可排除或不排除其他描述的特徵而選擇性地併入任何以下的特徵。
圖2描述根據一具體實施例之用以測試電路表示110之方法200的流程圖。在步驟205,要被測試的電路表示110係提供至應用程式100。在一具體實施例中,電路表示110係以Verilog硬體描述語言來描寫。編碼電路表示110之檔案的名稱可提供作為命令列輸入105內的引數或可基於操作背景而推論。在步驟210,應用程式100在命令列介面經由命令列輸入105接收一或多個測試輸入。測試輸入係指定電路表示110及一或多個假設及表達式,如-assume、-always、-never、-cover、-xallowed、-never_xprop及類似者。測試輸入也可包含重複變數及延遲變數,其分別控制施加條件到電路表示110的週期數以及在測試過程中延遲特定條件的週期數。
在步驟215,經由命令列輸入105所接收的至少一部份測試輸入係由應用程式100轉換為測試條件120。在步驟220,測試環境150由應用程式100根據經由命令列輸入105所接收的測試輸入而產生。在步驟225,應用程式100模擬在測試環境150內的電路表示110並驗證測試條件。
如本文所進一步描述,應用程式100產生包含測試條件(.sva檔案)的測試台130。應用程式100也產生輸入及輸出的一列表(.sig檔案)及腳本(.sigs檔案),供由波形檢視器135使用以顯示在模擬過程中產生的信號追蹤。最後,應用程式100產生實例化測試台130及電路表示110的測試環境 150(.tcl檔案)。測試環境150可為一腳本,其係執行以在步驟225過程中施行模擬。
有效/就緒之重定時正反器階(pvld_prdy_retiming)的電路表示110可由表格1所示的範例Verilog HDL程式碼實施。電路表示110包含輸出正反器及制動暫存器(skid register)以實施完整的有效/就緒的交握協定。顯示於表格1的範例檔案為pvld_prdy_retiming.v。
電路設計者可提供一部分的測試輸入作為分離檔案(.vq檔案),如表格2所示。當接收命令列輸入105,其指定.vq檔案為一引數,則.vq檔案可由應用程式100讀取。
第一個-counter表達式係由應用程式100轉換為在測試台130中稱作“pstage0_p_dat_next”之計數器的邏輯宣告125。第二個-counter表達式係由應用程式100轉換為在測試台130中稱作“out0_dat_next”之計數器的邏輯宣告125。兩個計數器在重設過程中係初始化為25,且根據在-counter表達式之後所指定的條件而遞增及遞減。舉例來說,pstage0_p_dat_next計數器在當pstage0_p_vld && pstage0_p_rdy(即每當一有效輸出由接收器接受時)時遞增且非遞減。-assume表達式係轉換為驗證pstage0_p_dat_next是否等於輸入資料(如pstage0_p_dat)的測試條件,其在模擬過程中係應用至電路表達110。
除了-counter表達式,-register表達式也可在命令列輸入105中指定以產生邏輯宣告125於測試台130中。邏輯宣告125可在模擬過程中產生信號,其由一或多個測試條件使用以驗證電路表示110的特定功能。
除了轉換表達式及假設以產生測試條件120,應用程式100解析表格1中所示的.v檔案並產生以下的輸入及輸出信號列表,其可儲存在.sigs檔案中:clk 1 input idle 1 output out0_dat 32 output out0_held 1 internal out0_held_d 1 internal out0_rdy 1 input out0_vld 1 output pstage0_p_dat 32 input pstage0_p_rdy 1 output pstage0_p_vld 1 input pstage0_skid_dat 32 internal pstage0_skid_vld 1 internal reset_1 input 應用程式100使用輸入及輸出信號列表以產生測試台130。應用程式100也可產生波形檢視器建立檔案(如pvld_prdy_retiming_vquiz.sig),其列出要由波形檢視器135所顯示的信號。
如前述,測試台130包含根據由命令列輸入105所指定之測試輸入的邏輯宣告125及共同邏輯115。當接收下列命令列輸入105時,vquiz -e pvld_prdy_retiming.vq -always 'out0_vld |-> out0_dat==out0_dat_next',表示測試台130之表格3中所顯示的程式碼係由應用程式100產生。表示測試台130的程式碼可儲存為.sva檔案。需注意,表格1所顯示的檔案pvld_prdy_retiming.vq係提供作為命令列輸入105中的測試輸入。因此,pvld_prdy_retiming.vq檔案係由應用程式100讀取,且由應用程式100產生邏輯宣告(計數器)並將假設及表達式轉換為測試條件。接著,提供作為命令列輸入105中之測試輸入的-always表達式係由應用程式100轉換為測試條件。-always表達式之後的|->算符係轉換為測試條件,其驗證每當out0_vld(out0為有效),則out0_dat在序列的最後時脈週期中應等於out0_dat_next(計數器輸出)。
電路表示110及所產生的測試台130係實例化於測試環境150中,且應用程式100模擬測試環境150以測試電路表示110。表示測試環境150的腳本係顯示於表格4。
電路設計者可藉由提供不同的命令列輸入105而對表格1所示的電路描述110指定不同的測試。舉例來說,以下的命令列輸入105可提供至應用程式100:vquiz -e pvld_prdy_retiming.vq\ - xallowed pstage0_p_dat '~pstage0_p_vld'\ -xallowed out0_dat '~out0_vld'\ -never_xprop回應於接收上述的命令列輸入105,應用程式100根據由命令列輸入105所指定的測試輸入而產生包含邏輯宣告125及命令邏輯115的測試台130。特別地,表格5中所示的測試台130係由應用程式100產生。需注意,表格1中所示的檔案pvld_prdy_retiming.vq係提供作為命令列輸入105中的測試輸入。因此,pvld_prdy_retiming.vq檔案由應用程式100讀取且由應用程式100產生邏輯宣告(計數器)並將假設及表達式轉換為測試條件。接著,提供作為測試輸入的-xallowed表達式及-never表達式以及在命令列輸入105中的pvld_prdy_retiming.vq檔案係由應用程式100轉換為測試條件,其出現在顯示於表格7中之表示測試環境150的腳本程式碼中。
表格5中所示的電路表示110及所產生的測試台130係由測試環境150實例化且應用程式100模擬測試環境150以測試電路表示110。表 示測試環境150的腳本係顯示於表格6中。
需注意,關聯於X數值傳播之命令列輸入105中所提供的測試輸入(如-xallowed pstage0_p_dat '~pstage0_p_vld'、-xallowed out0_dat '~out0_vld'、及-never_xprop)係轉換為測試環境150中的測試條件。特別地,第一個-xallowed表達式係轉換為以下表格6所示的測試條件,其允許當對應的有效信號(如pstage0_p_vld)為否定時,輸入資料(如pstage0_p_dat)具有數值X。第二個-xallowed表達式(其指定當out0_vld為否定時,out0_dat輸出將允許X)係轉換為assert-name out0_dat_xprop-xprop-from pstage0_p_dat-to out0_dat-precond~(~out0_vld)。
assume -xprop -to pstage0_p_dat -precond ~(~pstage0_p_vld)
-never_xprop表達式係轉換為以下的四測試條件(顯示於表 格6),其不允許任何輸入或輸出具有數值X(除了由-xallowed表達式所提供的例外):assert -name idle_xprop -xprop -from pstage0_p_dat -to idle assert -name out0_dat_xprop -xprop -from pstage0_p_dat -to out0_dat -precond ~(~out0_vld) assert -name out0_vld_xprop -xprop -from pstage0_p_dat -to out0_vld assert -name pstage0_p_rdy_xprop -xprop -from pstage0_p_dat -to pstage0_p_rdy
除了指定共同邏輯及邏輯宣告並將假設及表達式轉換為測試條件,經由命令列輸入105提供的測試輸入也可指定一特定信號轉換由測試所涵蓋。回到前述的3深度FIFO範例,下列的命令列輸入105將使測試「涵蓋」對模擬過程中之至少一時脈週期具有數值3(其指示FIFO緩衝器已滿)之FIFO緩衝器電路表示110之內部wr_count計數器的特定測試條件:vquiz_m fifo -cover ‘wr_count==3’.應用程式100可組態以在當wr_count計數器等於3時開啟波形檢視器135(如圖形使用者介面),其描述在模擬過程中的一時間點。若應用程式100無法找到wr_count計數器等於3的情況,則應用程式100報告一錯誤,因為測試條件沒有符合(即未涵蓋)。
在命令列輸入105所提供的測試輸入也可指定具有一數值之一特定信號相對具有特定數值之一或多個信號之布林組合的延遲。再次參照3深度FIFO緩衝器範例,以下的命令列輸入105係指定涵蓋當wr_reg為肯定以及wr_data具有數值254係發生在rd_req為肯定前之一時脈週期的測試條件。換言之,測試條件係顯示rd_req=1何時相對wr_req=1及wr_data=254延遲一時脈週期:vquiz -m fifo -cover ‘wr_req && wr_data==254 ##1 rd_req’ 因為最少需要2週期供寫入到FIFO的資料抵達FIFO的輸出,wr_req將需要持續2個時脈週期為肯定,在rd_req為肯定的條件符合之前,以確保測試條件被涵蓋。
為了指定在wr_req為肯定且wr_data為254(即在254推進到FIFO緩衝器之後)之後rd_req應為肯定2個時脈週期,可提供以下命令列輸入105:vquiz -m fifo -cover ‘wr_req && wr_data==254 ##2 rd_req’需注意,wr_req僅需一個時脈週期為肯定,以符合rd_req在之後的兩個時脈週期為肯定的條件,以確保測試條件被涵蓋。
為迫使在rd_req為肯定之前wr_req被解除肯定(即否定),可提供以下命令列輸入105:vquiz -m fifo -cover ‘wr_req && wr_data==254 ##1 ~wr_req ##1 rd_req’wr_req在第一時脈週期為肯定且在第二時脈週期為否定。若在第三時脈週期符合rd_req為肯定的條件,則測試條件被涵蓋。
在另一範例中,有可能測試在wr_req為肯定且wr_data為254之後rd_req是否為肯定1-3週期。可提供以下的命令列輸入105:vquiz -m fifo -cover ‘wr_req && wr_data==254 ##[1:3]rd_req’當rd_req在wr_req之後為肯定2個時脈週期,則測試條件大多可能將被認為是由應用程式100所涵蓋。[1:3]可由[1:$]取代以指定re_req在wr_req為肯定且wr_data為254之後開始為肯定至少1時脈週期的條件。
用以指定測試條件的另一技術係使用$past(wr_data)以獲得 wr_data的先前時脈週期數值且增量/減量數值以產生不同的資料,用以在每一時脈週期輸入至FIFO緩衝器。可使用以下的命令列輸入105:vquiz -m fifo -cover ‘wr_req && wr_data==($past(wr_data)-1) ##[1:$] rd_req’
另一範例命令列輸入105可用以涵蓋一測試條件,其中起初FIFO緩衝器為填滿且讀取輸出(取出(pop))係延遲,接著FIFO緩衝器項目被讀取(已取出(poped))。可使用以下命令列輸入105來測試此一情況:vquiz -m fifo -cover ‘wr_req && ~wr_busy && wr_data==($past(wr_data)+1) && rd_busy [*5]##1 ~wr_req && ~rd_busy [*5] ##1 ~rd_req’ 在-cover表達式後之信號數值的布林組合係重複5個時脈週期([*5])。當增量的數值推入至FIFO緩衝器,rd_busy為肯定。$past(wr_data)將來自先一時脈週期的wr_data數值傳回。$past(wr_data,2)將傳回來自較早的2個時脈週期的wr_data數值。在5個時脈週期後,rd_busy為否定且所涵蓋的測試條件為rd_req在rd_busy為否定後將有5個時脈週期為否定。當測試條件符合,測試被涵蓋。
可使用以下的命令列輸入105指定不同的測試,其檢查rd_req在FIFO緩衝器清空(經由取出)的第六時脈週期上為否定:vquiz -m fifo -always ‘(wr_req && ~wr_busy && wr_data==($past(wr_data_ +1) && rd_busy [*5] ##1 ~wr_req && ~rd_busy [*6]) |-> ~rd_req’ 如前述,使用|->算符使得當括號中在|->算符左側之信號數值的布林組合發生時,則~rd_req應發生在序列的最後時脈週期。若使用|=>,則~rd_req應發 生在序列之最後時脈週期之後的週期中。
由vquiz應用程式100轉換為邏輯宣告125的-counter表達式可用以測試推進到FIFO緩衝器的所有資料係從FIFO緩衝器取出。舉例來說,可使用以下的命令列輸入105:vquiz -m fifo -counter outstanding 0 ‘wr_req && ~wr_busy’ ‘rd_req && ~rd_busy’\ -always ‘(wr_idle && ~wr_req) |-> outstanding==0’ -counter表達式針對稱作待決的一計數器建立邏輯宣告125,該計數器在重設過程中係初始化為0。待決計數器初始化為0、每當資料推入FIFO緩衝器時增量、且每當資料從FIFO緩衝器取出時減量。命令列輸入105測試在每當FIFO緩衝器閒置且沒有新的輸入已被接收時,待決計數器將等於0。
相同的測試也可使用以下的命令列輸入105來施行:vquiz -m fifo -counter outstanding 0 ‘wr_req && ~wr_busy’ ‘rd_req && ~rd_busy’\ -never ‘(wr_idle && ~wr_req && outstanding !=0’
-counter表達式也可用以測試正確資料係從FIFO緩衝器取出,即使輸出延遲了一或更多時脈週期。計數器(wr_data_next)可初始化為25且基於表達式(wr_req &&~wr_busy)而增量。舉例來說,可提供以下的.vq檔案: vquiz -m fifo -counter wr_data_next 25 ‘wr_req && ~wr_busy’ 0 -assume ‘wr_data==wr_data_next’ -counter rd_data_next 25 ‘rd_req && ~rd_busy’ 0 計數器wr_data_next從不會減量,因為-counter表達式的減量引數為0。 wr_data_next計數器提供增量的數值供輸入到FIFO緩衝器(wr_data)。類似地,rd_data_next計數器係增量且從未減量。接著可使用以下的命令列輸入105來測試正確的資料從FIFO緩衝器取出。
vquiz -e fifo.vq -always 'rd_req |-> rd_data==rd_data_next'
模擬可能需要長時間來運行且不會結束。然而,若測試條件失敗,則模擬將快速結束。藉由提供以下的命令列輸入105,可針對模擬指定5分鐘的時間限制:vquiz -e fifo.vq -always 'rd_req |-> rd_data==rd_data_next' -time_limit 5m 時間限制也可以秒(s)、天(d)、及小時(h)來指定。在一具體實施例中,當模擬超過針對一測試條件所指定的時間限制,則應用程式100將顯示「TIMED_OUT」並停止。
最後,可提供以下的命令列輸入105來指定相同的測試而不需使用|->算符:vquiz -e fifo.vq -never 'rd_req && rd_data !=rd_data_next' -time_limit 5m
總之,以下的表達式可由應用程式100轉換為測試條件:-assume、-cover、-always、-never、-time_limit、-never_xprop、-xallowed。以下的表達式可由應用程式100轉換為邏輯宣告:-counter及-reg(暫存器)。特別地,在一具體實施例中,-counter表達式產生32-位元整數計數器的邏輯宣告且-reg表達式產生正負號32-位元整數計數器的邏輯宣告。額外的表達式可轉換為可由-assume、-always、或-never表達式使用的額外邏輯。
圖3描述根據一具體實施例之用以測試電路表示110之方法300的流程圖。在步驟305,要測試的電路表示110係提供至應用程式100。在步驟310,應用程式100在命令列介面經由命令列輸入105接收一或多個測試輸入。在步驟315,應用程式100將假設(-assume表達式)轉換為測試條件。由命令列輸入105所指定的特定假設係轉換為在執行時將驗證對應假設之第一測試條件的一命令。
在步驟320,應用程式100將表達式(-cover、-always、-never、-time_limit、-never_xprop、及-xallowed)轉換為測試條件。由命令列輸入105所指定的特定表達式係轉換為在執行時將驗證對應表達式之第一測試條件的一命令。當-xallowed未知數值傳播表達式由命令列輸入105指定,表達式係轉換為在執行時將允許至少一信號在電路表示110的模擬過程中具有一未知數值的一命令。當-never_xprop未知數值傳播表達式由命令列輸入105指定,表達式係轉換為在執行時將要求輸入及輸出信號(除了由-xallowed表達式所指定的那些信號)在電路表示110的模擬過程中具有未知數值的一命令。
在步驟325,應用程式100產生共同邏輯115及由-extra表達式所指定之邏輯的表示。在步驟330,應用程式100產生邏輯宣告125的表示。共同邏輯115、邏輯宣告125、及測試條件120可併入測試台130。在步驟335,應用程式100模擬在測試環境150內的電路表示110並驗證測試條件。
如本文中所進一步描述,應用程式100產生包含測試條件的測試台130(.sva檔案)。應用程式100也產生輸入及輸出的一列表(.sig檔案)及腳本(.sigs檔案),供由波形檢視器135使用以顯示在模擬過程中所產生的信 號追蹤。最後,應用程式100產生實例化測試台130及電路表示110的測試環境150(.tcl檔案)。測試環境150可為一腳本,其係執行以在步驟335過程中施行模擬。
圖4描述前述各種具體實施例之各種架構及/或功能可實施於其中的範例性系統400。如所示,系統400係提供為包含至少一中央處理器401,其連接至通訊匯流排402。通訊匯流排可使用任何適合的協定來實施,如PCI(週邊組件互連)、PCI-Express、AGP(加速圖形連接埠)、超傳送標準(HyperTransport)、或其他任何匯流排或點對點通訊協定。系統400也包含主記憶體404。控制邏輯(軟體)及資料係儲存於主記憶體404中,其可採用隨機存取記憶體(RAM)的形式。特別地,應用程式100及測試環境150可儲存於主記憶體404中。選擇性地,本發明系統400可實施為執行圖2的方法200。
系統400也包含輸入裝置405、圖形處理器406、及顯示器408(即傳統的CRT(陰極射線管)、LCD(液晶顯示器)、LED(發光二極體)、電漿顯示器或類似者)。使用者輸入可從輸入裝置405接收,其例如為鍵盤、滑鼠、觸控板、麥克風及類似者。舉例來說,電路設計者可經由輸入裝置405提供命令列輸入105。在一具體實施例中,圖形處理器406可包含複數個著色器(shader)模組、柵格化(rasterization)模組等。前述模組之每一者甚至皆可放置於單一半導體平台上,以形成圖形處理單元(GPU)。
在本發明所說明的內容中,單一半導體平台可指稱單獨的個體半導體型積體電路或晶片。應注意,術語單一半導體平台亦可指稱有經增加之模擬晶片上操作的連接性的多晶片模組,且藉由利用傳統的中央 處理單元(CPU)和匯流排實作而做出重大的改良。當然,各種模組亦可依使用者所需而分開放置或以半導體平台之各種組合放置。
系統400也可包含次要儲存器410。次要儲存器410包括例如硬式磁碟機及/或可移除式儲存驅動,其代表軟式磁碟機、磁帶機、光碟機、數位光碟(DVD)機、紀錄裝置、通用序列匯流排(USB)快閃記憶體。可移除式儲存驅動以習知的方式讀取及/或寫入可移除式儲存單元。
電腦程式或電腦控制邏輯演算法可儲存於主記憶體404及/或次要儲存器410中。當執行這樣的電腦程式時,將致能系統400執行各種功能。記憶體404、儲存器410及/或任何其他儲存器皆為電腦可讀取媒體之可能範例。
在一具體實施例中,各種先前圖式之架構及/或功能可實施於中央處理器401、圖形處理器406、能勝任中央處理器401和圖形處理器406兩者之至少一部分能力的積體電路(未顯示)、晶片組(即設計以工作並銷售為用以執行相關功能之一單元的一積體電路群組等)、及/或與此有關的任何其他積體電路之背景中。
再者,各種先前圖式之架構和/或功能可實施於通用電腦系統、電路板系統、專用於娛樂用途的遊戲機系統、特定應用系統、及/或任何其他所需系統之背景中。舉例來說,系統400可具有桌上型電腦、膝上型電腦、伺服器、工作站、遊戲主機、嵌入式系統、及/或任何其他類型之邏輯的形式。此外,系統400可具有各種其他裝置之形式,其包括但不限於個人數位助理(PDA)裝置、行動電話裝置、電視等。
此外,雖未顯示,系統400可為了通信目地而耦合至網路(如 電信網路、區域網路(LAN)、無線網路、廣域網路(WAN)(如網際網路)、點對點網路、電纜網路等)。
雖然上述已說明各種具體實施例,但應理解其僅藉由範例而非限制進行描述。因此,較佳具體實施例之廣度與範疇不應被任何上述例示性具體實施例限制,而應僅根據以下的申請專利範圍和其均等物所定義。
200‧‧‧方法

Claims (20)

  1. 一種方法,包含:在一命令列介面接收一命令列輸入,其中該命令列輸入包含對應一測試條件的一假設與一表達式的至少一;將該命令列輸入轉換為一或多個測試條件,其中基於至少一信號而將由該命令列輸入所指定之一假設轉換為在執行時將驗證對應該假設之一第一測試條件的一命令;以及產生一測試環境,該測試環境係組態以模擬一電路表示並驗證該一或多個測試條件。
  2. 如申請專利範圍第1項所述之方法,更包含:產生由該命令列輸入所指定之額外邏輯的一表示;以及將該表示包含於該測試環境中。
  3. 如申請專利範圍第1項所述之方法,更包含:產生由該命令列輸入所指定之一邏輯宣告的一表示;以及將該表示包含於該測試環境中。
  4. 如申請專利範圍第3項所述之方法,其中該表示為一暫存器及一計數器之其中至少一者的一表示。
  5. 如申請專利範圍第1項所述之方法,其中將由該命令列輸入所指定之一第二表達式轉換為在執行時將驗證對應該第二表達式之一第二測試條件的一第二命令。
  6. 如申請專利範圍第5項所述之方法,其中當該第二測試條件在該電路表示的模擬過程中總是符合,則該電路表示通過測試。
  7. 如申請專利範圍第5項所述之方法,其中當該第二測試條件在該電路表示的模擬過程中從未符合,則該電路表示通過測試。
  8. 如申請專利範圍第5項所述之方法,其中當該第二測試條件在該電路表示的模擬過程中至少符合一次,則該電路表示通過測試。
  9. 如申請專利範圍第1項所述之方法,其中將由該命令列輸入所指定之一第二表達式轉換為在執行時將允許至少一輸出信號或一輸入信號在該電路表示的模擬過程中具有一未知數值的一第二命令。
  10. 如申請專利範圍第1項所述之方法,其中將由該命令列輸入所指定之一第二表達式轉換為在執行時將要求一或多個輸出信號在該電路表示的模擬過程中具有已知數值的一第二命令。
  11. 如申請專利範圍第1項所述之方法,更包含:模擬在該測試環境內的該電路表示;以及當該第一測試條件符合時,顯示在該電路表示的模擬過程中所產生的一或多個信號追蹤於一波形檢視器。
  12. 一種儲存指令的非暫態電腦可讀儲存媒體,當該指令由一處理器執行時係造成該處理器執行以下步驟:在一命令列介面接收一命令列輸入,其中該命令列輸入包含對應一測試條件的一假設與一表達式的至少一; 將該命令列輸入轉換為一或多個測試條件,其中基於至少一信號而將由該命令列輸入所指定之一假設轉換為在執行時將驗證對應該假設之一第一測試條件的一命令;以及產生一測試環境,該測試環境係組態以模擬一電路表示並驗證該一或多個測試條件。
  13. 如申請專利範圍第12項所述之非暫態電腦可讀儲存媒體,該步驟更包含:產生由該命令列輸入所指定之額外邏輯的一表示;以及將該表示包含於該測試環境中。
  14. 如申請專利範圍第12項所述之非暫態電腦可讀儲存媒體,該步驟更包含:產生由該命令列輸入所指定之一邏輯宣告的一表示;以及將該表示包含於該測試環境中。
  15. 如申請專利範圍第12項所述之非暫態電腦可讀儲存媒體,其中將由該命令列輸入所指定之一第二表達式轉換為在執行時將驗證對應該第二表達式之一第二測試條件的一第二命令。
  16. 如申請專利範圍第12項所述之非暫態電腦可讀儲存媒體,其中將由該命令列輸入所指定之一第二表達式轉換為在執行時將允許至少一輸入信號或一輸出信號在該電路表示的模擬過程中具有一未知數值的一第二命令。
  17. 一種用以測試一電路表示的系統,該系統包含:一記憶體,組態以儲存程式指令及該電路表示;以及 一處理器,組態以:在一命令列介面接收一命令列輸入,其中該命令列輸入包含對應一測試條件的一假設與一表達式的至少一;執行一或多個該程式指令,以:將該命令列輸入轉換為一或多個測試條件,其中基於至少一信號而將由該命令列輸入所指定之一假設轉換為在執行時將驗證對應該假設之一第一測試條件的一命令;以及產生一測試環境,該測試環境係組態以模擬該電路表示並驗證該一或多個測試條件。
  18. 如申請專利範圍第17項所述之系統,其中該處理器更組態以:產生由該命令列輸入所指定之額外邏輯的一表示;以及將該表示包含於該測試環境中。
  19. 如申請專利範圍第17項所述之系統,其中該處理器更組態以:產生由該命令列輸入所指定之一邏輯宣告的一表示;以及將該表示包含於該測試環境中。
  20. 一種方法,包含:在一命令列介面接收一命令列輸入,其中該命令列輸入包含對應一測試條件的一假設與一表達式的至少一;將該命令列輸入轉換為一或多個測試條件,其中將由該命令列輸入所指定之一表達式轉換為在執行時將允許至少一輸入信號或一輸出信號在一電路表示的模擬過程中具有一未知數值的一命令;產生一測試環境,該測試環境係組態以模擬該電路表示並驗證該一或多個測試條件。
TW102137267A 2012-11-01 2013-10-16 用以從命令列測試積體電路的系統、方法與非暫態電腦可讀儲存媒體 TWI526862B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/666,842 US8789006B2 (en) 2012-11-01 2012-11-01 System, method, and computer program product for testing an integrated circuit from a command line

Publications (2)

Publication Number Publication Date
TW201435633A TW201435633A (zh) 2014-09-16
TWI526862B true TWI526862B (zh) 2016-03-21

Family

ID=50489972

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102137267A TWI526862B (zh) 2012-11-01 2013-10-16 用以從命令列測試積體電路的系統、方法與非暫態電腦可讀儲存媒體

Country Status (4)

Country Link
US (1) US8789006B2 (zh)
CN (1) CN103809112A (zh)
DE (1) DE102013218604A1 (zh)
TW (1) TWI526862B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102440948B1 (ko) * 2016-02-11 2022-09-05 삼성전자주식회사 반도체 장치 및 반도체 장치의 동작 방법
US11537504B2 (en) * 2019-01-28 2022-12-27 Xepic Corporation Limited Realization of functional verification debug station via cross-platform record-mapping-replay technology
US11200127B2 (en) * 2019-04-11 2021-12-14 Synopsys, Inc. Automated self-check of a closed loop emulation replay
TWI719917B (zh) * 2020-07-14 2021-02-21 金麗科技股份有限公司 將類比動態電路運用於數位測試工具的處理方法
TWI811607B (zh) * 2020-12-31 2023-08-11 新唐科技股份有限公司 微控制器、微控制器的測試方法以及包含微控制器的系統
CN114510893A (zh) * 2022-02-17 2022-05-17 广东广纳芯科技有限公司 用于生成滤波器电路及其波形的仿真方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6338148B1 (en) * 1993-11-10 2002-01-08 Compaq Computer Corporation Real-time test controller
US5604895A (en) * 1994-02-22 1997-02-18 Motorola Inc. Method and apparatus for inserting computer code into a high level language (HLL) software model of an electrical circuit to monitor test coverage of the software model when exposed to test inputs
US6067652A (en) * 1998-07-29 2000-05-23 Lsi Logic Corporation Tester-compatible timing translation system and method using time-set partnering
US7469381B2 (en) * 2007-01-07 2008-12-23 Apple Inc. List scrolling and document translation, scaling, and rotation on a touch-screen display
US6542841B1 (en) * 1999-08-10 2003-04-01 Tyco Telecommunications (Us) Inc. Method for managing test measurements
CN1385710A (zh) * 2001-05-11 2002-12-18 株式会社鼎新 用于混合信号测试的事件测试器结构
US6959409B2 (en) * 2001-10-26 2005-10-25 Abdel-Wahid Mohammed Ali Abdel Design for test of analog module systems
KR20030082135A (ko) * 2002-04-16 2003-10-22 삼성전자주식회사 반도체 소자의 테스트 프로그램 에뮬레이터 및 에뮬레이션방법
US7197417B2 (en) * 2003-02-14 2007-03-27 Advantest America R&D Center, Inc. Method and structure to develop a test program for semiconductor integrated circuits
US7209851B2 (en) * 2003-02-14 2007-04-24 Advantest America R&D Center, Inc. Method and structure to develop a test program for semiconductor integrated circuits
US7184917B2 (en) * 2003-02-14 2007-02-27 Advantest America R&D Center, Inc. Method and system for controlling interchangeable components in a modular test system
US7165201B2 (en) * 2003-09-25 2007-01-16 Hitachi Global Storage Technologies Netherlands B.V. Method for performing testing of a simulated storage device within a testing simulation environment
US7225417B2 (en) * 2003-09-26 2007-05-29 Carnegie Mellon University Method and system to verify a circuit design by verifying consistency between two different language representations of a circuit design
US7356789B2 (en) * 2004-06-01 2008-04-08 Tai An Ly Metastability effects simulation for a circuit description
US8024691B2 (en) * 2006-09-28 2011-09-20 Mcgill University Automata unit, a tool for designing checker circuitry and a method of manufacturing hardware circuitry incorporating checker circuitry
CN102183726A (zh) * 2011-03-16 2011-09-14 建荣集成电路科技(珠海)有限公司 一种基于fpga的集成电路芯片测试***与方法

Also Published As

Publication number Publication date
DE102013218604A1 (de) 2014-05-08
US8789006B2 (en) 2014-07-22
TW201435633A (zh) 2014-09-16
CN103809112A (zh) 2014-05-21
US20140123090A1 (en) 2014-05-01

Similar Documents

Publication Publication Date Title
TWI526862B (zh) 用以從命令列測試積體電路的系統、方法與非暫態電腦可讀儲存媒體
US9268889B2 (en) Verification of asynchronous clock domain crossings
US8146061B2 (en) Systems and methods for graphics hardware design debugging and verification
US10423740B2 (en) Logic simulation and/or emulation which follows hardware semantics
US10180850B1 (en) Emulating applications that use hardware acceleration
US10990121B2 (en) Apparatus and method for achieving glitch-free clock domain crossing signals
US20080313583A1 (en) Apparatus and Method for Testing Sub-Systems of a System-on-a-Chip Using a Configurable External System-on-a-Chip
US10146895B2 (en) Method and apparatus for simulating a digital circuit
US20200202063A1 (en) Generation of module and system-level waveform signatures to verify, regression test and debug soc functionality
US10140413B2 (en) Efficient resolution of latch race conditions in emulation
US9286426B2 (en) Method and apparatus for testing
KR20210065964A (ko) 에뮬레이션 및 프로토타이핑에서 오버레이된 클록 및 데이터 전파의 코히어런트 관찰가능성 및 제어가능성
US8843861B2 (en) Third party component debugging for integrated circuit design
US11275877B2 (en) Hardware simulation systems and methods for reducing signal dumping time and size by fast dynamical partial aliasing of signals having similar waveform
US20140280412A1 (en) System, method, and computer program product for determining a random value
US8930862B2 (en) System, method, and computer program product for automatic two-phase clocking
US9495504B2 (en) Using traces of original model to verify a modified model
US20100088656A1 (en) Property checking system, property checking method, and computer-readable storage medium
US20130174107A1 (en) Design tool for glitch removal
US7246053B2 (en) Method for transforming behavioral architectural and verification specifications into cycle-based compliant specifications
US20240078369A1 (en) "weak" undriven state modelling for power management verification
Jain et al. Unified and Modular Modeling and Functional Verification Framework of Real‐Time Image Signal Processors
US9710581B1 (en) VIP assisted method and apparatus to enable SOC integration and software development
US20230114858A1 (en) Circuit design simulation and clock event reduction
US20170024504A1 (en) Logical to Multi-Variable-Record Connect Element to Interface Logical Signals Between Analog and Digital Simulations

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees