亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

仿真中的X傳播的制作方法

文檔序號:11333707閱讀:479來源:國知局
仿真中的X傳播的制造方法與工藝

本公開通常涉及電路的仿真,更具體地涉及迅速識別數(shù)字系統(tǒng)的不可預測的行為。



背景技術:

已經(jīng)開發(fā)了仿真器來協(xié)助電路設計者設計和調(diào)試高度復雜的集成電路。仿真器包括可以一起模擬待測設計(dut)的操作的多個可重新配置的組件,諸如現(xiàn)場可編程門陣列(fpga)。通過使用仿真器來模擬dut的操作,設計人員可以在制造之前驗證dut符合各種設計要求。

仿真的一個方面包括識別dut的功能性。在一種方法中,識別dut的功能性涉及對dut進行仿真并分析來自被仿真dut的信號,以驗證不正確的、不確定的或未知的操作。例如,在電源關閉或初始化不正確的情況下,未正確地終止dut中的寄存器或邏輯電路,并且這些寄存器或邏輯電路的狀態(tài)變得未知。在dut的操作期間,未知狀態(tài)可能導致不正確的邏輯運算,并且不正確的邏輯運算的結果可能進一步影響其他邏輯電路在整個dut中不正確地操作。

在常規(guī)方法中,數(shù)字信號以二進制狀態(tài)(例如,高或低)來表示,并且識別dut的不正確或未知操作涉及執(zhí)行dut的仿真,直到在dut的輸出處檢測到不恰當或不確定的結果。在高級過程(例如,22納米(nm)及以下)中,dut可以包括數(shù)十億個邏輯電路和信號。因此,識別dut的未知操作可能涉及由于未知狀態(tài)而執(zhí)行大量的數(shù)字邏輯運算直到在輸出處傳出不正確的邏輯運算,這可能是耗時的過程。結果,定位未知狀態(tài)的源并對它們進行調(diào)試是低效的。

因此,需求一種用于在所執(zhí)行的仿真周期方面以時間有效的方式識別dut的操作的不確定性的方法。

附圖說明

所公開的實施例具有其他優(yōu)點和特征,其從詳細描述、所附權利要求和附圖(或圖)中將是更容易顯而易見的。下面簡要介紹一下這些附圖。

圖1是根據(jù)一個實施例的仿真環(huán)境的框圖。

圖2是圖示出根據(jù)一個實施例的主機系統(tǒng)的框圖。

圖3是根據(jù)一個實施例的語義轉換模塊的框圖。

圖4a是根據(jù)一個語義表示的在仿真器上實現(xiàn)的信號的示例轉換。

圖4b是根據(jù)另一語義表示的在仿真器上實現(xiàn)的信號的另一示例轉換。

圖5是根據(jù)一個實施例的布爾邏輯電路的示例轉換。

圖6a是根據(jù)一個實施例的觸發(fā)器的示例轉換。

圖6b是根據(jù)一個實施例的鎖存器的示例轉換。

圖7是根據(jù)一個實施例的存儲器電路的示例轉換。

圖8是圖示出根據(jù)一個實施例的主機系統(tǒng)準備用于仿真被轉換為表示數(shù)字信號的未知狀態(tài)的待測設備(dut)的流程圖。

圖9圖示出根據(jù)一個實施例在dut上執(zhí)行的轉換。

圖10是圖示出根據(jù)一個實施例的執(zhí)行數(shù)字邏輯運算以基于信號狀態(tài)來識別dut的未知操作的仿真器的流程圖。

圖11是圖示出根據(jù)一個實施例的基于參考信號的確實狀況和推測狀況的觸發(fā)器或鎖存器的操作的流程圖。

圖12a是圖示出根據(jù)一個實施例的由仿真器執(zhí)行的存儲器寫入操作的流程圖。

圖12b是圖示出根據(jù)一個實施例的由仿真器執(zhí)行的存儲器讀取操作的流程圖。

圖13圖示出了能夠從機器可讀介質讀取指令并在處理器(或控制器)中執(zhí)行它們的示例機器的組件的一個實施例。

具體實施方式

附圖(圖)和以下描述僅通過說明的方式與優(yōu)選實施例相關。應當注意,從下面的討論中,本文所公開的結構和方法的替代實施例將很容易被認為是在不脫離所要求保護的原理的情況下可以采用的可行替代方案。

現(xiàn)在將對若干個實施例進行詳細參考,其示例在附圖中圖示出。附圖僅僅為了說明的目的而描繪了所公開的系統(tǒng)(或方法)的實施例。從下面的描述中應當認識到,在不脫離本文所描述的原理的情況下,可以采用本文所圖示的結構和方法的替代實施例。

配置概述

所公開的系統(tǒng)(和方法以及計算機程序產(chǎn)品)包括能夠指示信號的未知狀態(tài)并相應地執(zhí)行數(shù)字邏輯運算以用于提高識別dut的不正確或未知操作的速度和性能的仿真環(huán)境。在所公開的系統(tǒng)(和方法以及計算機程序產(chǎn)品)中,通過以所公開的語義所表示的數(shù)字邏輯電路來指示和傳播信號的未知狀態(tài),以便能夠迅速識別dut的例如由于電源關閉或不恰當?shù)某跏蓟鸬牟徽_的操作。

dut的不正確或未知操作是指由于dut的任何信號具有未知狀態(tài)而使dut的輸出與其預期輸出相比變得未知或不正確的dut的操作。

仿真環(huán)境的一個實施例包括主機系統(tǒng)和仿真器。主機系統(tǒng)配置仿真器來加載待測設計(dut),并且仿真器相應地對dut進行仿真。主機系統(tǒng)根據(jù)轉換規(guī)則來轉換dut或dut的一部分,以實現(xiàn)dut的信號的未知狀態(tài)的表示和未知狀態(tài)的傳播。dut中的信號和邏輯電路(組合的以及順序的電路)被轉換,使得輸入信號的不確定性可以被攜帶至邏輯電路的輸出上。在一個實施例中,信號和邏輯電路的轉換在寄存器傳送語言(rtl)級別處執(zhí)行。可替代地,信號和邏輯電路的轉換可以在柵/晶體管級別或任何其他級別處執(zhí)行。

在一種方法中,主機系統(tǒng)將以兩狀態(tài)語義所表示的dut的數(shù)字信號的單個比特轉換為在三或四狀態(tài)語義(在本文中被稱為“四狀態(tài)語義”)中的至少兩個比特,以實現(xiàn)未知狀態(tài)的表示。在一個實現(xiàn)中,第一比特指示信號的可能的低狀態(tài)或可能的高狀態(tài),第二比特指示信號的狀態(tài)是已知的還是未知的。在另一實現(xiàn)中,第一比特指示可能的高狀態(tài),第二比特指示可能的低狀態(tài)。在兩種實現(xiàn)中,至少兩個比特的組合實現(xiàn)信號的未知狀態(tài)的表示。

此外,主機系統(tǒng)根據(jù)轉換規(guī)則來轉換布爾邏輯運算器,以基于以四狀態(tài)語義所表示的輸入信號來確定已轉換的布爾邏輯運算器的輸出以及輸出的不確定性。當四狀態(tài)語義中的輸入信號的狀態(tài)未知時,基于另一個輸入信號的已知狀態(tài)(例如,高或低)來確定已轉換的布爾邏輯運算器的輸出狀態(tài)以及輸出狀態(tài)的確定性。因此,通過已轉換的布爾邏輯運算器迅速地傳播未知狀態(tài)。

此外,主機系統(tǒng)根據(jù)轉換規(guī)則來轉換邊緣運算器(例如,觸發(fā)器),以使得邊緣運算器能夠利用推測轉變進行操作,該推測轉變包括在參考信號的狀態(tài)中的從以四狀態(tài)語義所表示的未知狀態(tài)或到該未知狀態(tài)的轉變。本文中的推測轉變是指在參考信號中的轉變,該轉變由于參考信號中的狀態(tài)的不確定性而可能觸發(fā)觸發(fā)器的操作。例如,對于上升沿觸發(fā)的觸發(fā)器,當參考信號從低狀態(tài)轉變到未知狀態(tài)或從未知狀態(tài)轉變到高狀態(tài)時,發(fā)生推測轉變。已轉換的觸發(fā)器基于參考信號的推測轉變或確實轉變(即,不是推測的)來生成輸出信號。

另外,主機系統(tǒng)根據(jù)轉換規(guī)則來轉換鎖存器,以使得鎖存器能夠利用具有以四狀態(tài)語義所表示的未知狀態(tài)的參考信號進行操作。已轉換的鎖存器基于具有確實狀態(tài)(即已知狀態(tài))或未知狀態(tài)的參考信號來生成輸出信號。

此外,主機系統(tǒng)根據(jù)轉換規(guī)則來轉換存儲器電路,以基于不明確的地址信號執(zhí)行讀取和寫入操作。不明確的地址信號包括具有未知狀態(tài)的至少一個比特。在利用所公開的語義的轉換之后,具有未知狀態(tài)的比特可以用兩個或多個比特來表示。在一個方面中,已轉換的存儲器電路實現(xiàn)存儲器指示符,其中每個存儲器指示符與其對應內(nèi)容以及由地址信號指示的其對應地址相關聯(lián)。存儲器指示符指示與存儲器指示符相關聯(lián)的對應內(nèi)容的不確定性。

示例仿真環(huán)境

圖1是圖示出根據(jù)一個實施例的仿真環(huán)境100的框圖。仿真環(huán)境100包括主機系統(tǒng)110和仿真器120。主機系統(tǒng)110通過接口115來與仿真器120進行通信。

主機系統(tǒng)110將仿真器120配置用于對dut進行仿真并且在dut的仿真期間與仿真器120通信。dut是要由仿真器120仿真的一個或多個電路設計。主機系統(tǒng)110可以是單個計算機或多個計算機的集合。

在一個實施例中,主機系統(tǒng)110從用戶接收待仿真的dut的描述。dut的描述是以一種硬件描述語言(hdl)的類型,例如寄存器傳送語言(rtl)。主機系統(tǒng)110將dut或dut的一部分進行轉換以使得能夠表示dut的信號的未知狀態(tài)。優(yōu)選地,主機系統(tǒng)110將傳統(tǒng)的兩狀態(tài)語義中的信號轉換為四狀態(tài)語義以表示dut的信號的未知狀態(tài)。此外,主機系統(tǒng)110轉換包括但不限于布爾邏輯運算器、觸發(fā)器、鎖存器和存儲器電路的數(shù)字邏輯電路,以使得能夠利用以四狀態(tài)語義表示的信號進行操作。

主機系統(tǒng)110基于根據(jù)四狀態(tài)語義的已轉換dut的hdl描述來創(chuàng)建門級網(wǎng)表。主機系統(tǒng)110使用門級網(wǎng)表對已轉換的dut進行分區(qū),并將每個分區(qū)映射到仿真器120中包括的一個或多個邏輯電路。主機系統(tǒng)110通過接口115將已轉換的dut的門級描述在一個或多個比特流中傳送到仿真器120。比特流可以包括已轉換dut的門級邏輯的表示、分區(qū)信息、映射信息和用于配置仿真器120的設計約束。

在替代實施例中,主機系統(tǒng)110通過接口115將根據(jù)四狀態(tài)語義的已轉換dut的hdl描述發(fā)送到仿真器120。

在另一替代實施例中,主機系統(tǒng)110從用戶接收門級邏輯中的dut的描述。此外,主機系統(tǒng)110根據(jù)四狀態(tài)語義而將門級邏輯中的dut或dut的一部分進行轉換以實現(xiàn)dut的信號的未知狀態(tài)的表示。類似地,主機系統(tǒng)110將包括已轉換dut的門級邏輯的表示的比特流發(fā)送到仿真器120。

在一種方法中,在塊/ip級硬件組件中對dut的一部分進行預先定義??商娲?,用戶能夠選擇要被轉換成四狀態(tài)語義的dut的一部分。此外,dut的一部分可以以兩狀態(tài)語義和四狀態(tài)語義二者來表示,以同時并行地進行仿真以如實地保留期望的行為。

另外,在由仿真器120對dut進行仿真期間,主機系統(tǒng)110通過接口115接收來自仿真器120的仿真結果。仿真結果是由仿真器120基于dut的仿真而發(fā)送的信息。仿真結果包括描述在仿真期間dut中的多個信號的狀態(tài)的信息。例如,仿真器120發(fā)送以四狀態(tài)語義的仿真結果,并且主機系統(tǒng)110將來自仿真器120的仿真結果轉換為兩狀態(tài)語義。在另一示例中,在對主機系統(tǒng)110進行發(fā)送之前,仿真器120將以四狀態(tài)語義的仿真結果轉換為兩狀態(tài)語義。

仿真器120是對dut進行仿真的硬件系統(tǒng)。仿真器120包括多個可配置的邏輯電路,它們可以一起對dut進行仿真。在一個實施例中,包括在仿真器120中的邏輯電路是現(xiàn)場可編程門陣列(fpga)。

對于待仿真的dut,仿真器120從主機系統(tǒng)110接收包括根據(jù)四狀態(tài)語義的已轉換dut的門級描述的一個或多個比特流,以表示dut中的信號的未知狀態(tài)。比特流進一步描述了由主機系統(tǒng)110創(chuàng)建的dut的分區(qū),分區(qū)到仿真器120的fpga的映射、以及設計約束。在替代實施例中,仿真器120接收包括已轉換dut的hdl級別描述的比特流?;诒忍亓?,仿真器120配置fpga以執(zhí)行dut的功能。

仿真器120對根據(jù)四狀態(tài)語義的已轉換dut進行仿真,以表示dut中的信號的未知狀態(tài)?;诜抡?,仿真器120生成仿真結果,所述仿真結果被發(fā)送到主機系統(tǒng)110以用于分析。

接口115是允許主機系統(tǒng)110和仿真器120之間的通信的通信介質。在一個實施例中,接口115是具有電連接的電纜。例如,接口115可以是rs232、usb、lan、光學或定制電纜。在其它實施例中,接口115是無線通信介質或網(wǎng)絡。例如,接口115可以是采用或ieee802.11協(xié)議的無線通信介質。

圖2是根據(jù)一個實施例的更詳細地圖示主機系統(tǒng)110的框圖。主機系統(tǒng)110包括設計編譯器210、fpga映射模塊220、運行時模塊230、語義轉換模塊240和存儲裝置250。這些組件中的每一個組件可以被實施為硬件、軟件、固件或其組合。這些組件一起提供了用于配置仿真器120并且基于信號的未知狀態(tài)來監(jiān)控仿真結果的設計。

在一個實施例中,設計編譯器210將dut的hdl轉換為門級邏輯。對于待仿真的dut,設計編譯器210接收hdl(例如,rtl或其他抽象級)的dut的描述。設計編譯器210合成dut的hdl以根據(jù)門級邏輯來創(chuàng)建具有dut描述的門級網(wǎng)表。

映射模塊220對dut進行分區(qū)并將分區(qū)映射到仿真器組件。在設計編譯器210創(chuàng)建門級網(wǎng)表之后,映射模塊220使用網(wǎng)表來將在門級處的dut分成多個分區(qū)。映射模塊220將每個分區(qū)映射到仿真器120的一個或多個fpga。映射模塊220使用設計規(guī)則、設計約束(例如,定時或邏輯約束)以及關于仿真器120的信息來執(zhí)行分區(qū)和映射。對于每個分區(qū),映射模塊220生成描述分區(qū)中包括的邏輯電路以及到仿真器120的一個或多個fpga的映射的比特流。比特流還可以包括關于組件之間的連接的信息和其他設計信息。映射模塊220將比特流發(fā)送到仿真器120,使得仿真器120的fpga可以被配置用于對dut進行仿真。

運行時模塊230控制在仿真器120上執(zhí)行的仿真。運行時模塊230可以使仿真器120開始或停止執(zhí)行仿真。另外,運行時模塊230可以向仿真器120提供輸入信號/數(shù)據(jù)。輸入信號可以通過接口115直接提供給仿真器120,或通過其它輸入信號設備間接提供給仿真器120。例如,具有運行時模塊230的主機系統(tǒng)110可以控制諸如測試板的輸入信號設備、信號發(fā)生器或電源,以將輸入信號提供給仿真器120。

在一個實施例中,運行時模塊230可以從仿真器120接收仿真結果。在一個實現(xiàn)中,運行時模塊230接收以兩狀態(tài)語義和/或四狀態(tài)語義的仿真結果。運行時模塊230還可以將接收到的仿真結果轉換為四狀態(tài)語義或兩狀態(tài)語義。

存儲裝置250是用于保存被用來配置仿真器120以加載dut的信息或者關于在仿真器120上執(zhí)行的dut的仿真的信息的貯存庫。存儲裝置250包含hdl和網(wǎng)表描述中的至少一個中的以兩狀態(tài)語義和/或四狀態(tài)語義表示的dut或dut的一部分。此外,存儲裝置250包含設計規(guī)則、設計約束(例如,定時或邏輯約束)以及由映射模塊220用來進行映射的有關仿真器120的信息以及從映射生成的比特流。此外,存儲裝置250包含將由語義轉換模塊240使用的轉換規(guī)則。另外,存儲裝置250存儲從仿真器120接收的仿真結果。

語義轉換模塊240根據(jù)轉換規(guī)則來轉換dut以表示dut的信號的未知狀態(tài)。語義轉換模塊240執(zhí)行信號的轉換以實現(xiàn)未知狀態(tài)的表示。另外,語義轉換模塊240轉換包括但不限于布爾邏輯運算器、觸發(fā)器、鎖存器和存儲器電路的邏輯電路,以便可利用信號的未知狀態(tài)的表示而操作,如關于圖4到圖7所詳細描述的??梢愿鶕?jù)轉換規(guī)則對整個dut或dut的一部分執(zhí)行語義轉換。

參考圖3,其圖示出了根據(jù)一個實施例的語義轉換模塊240的詳細框圖。在一個實施例中,語義轉換模塊240包括信號轉換模塊310、布爾邏輯轉換模塊320、觸發(fā)器轉換模塊330、鎖存器轉換模塊335和存儲器電路轉換模塊340。信號轉換模塊310以能夠表示未知狀態(tài)的格式對dut的信號進行轉換。此外,布爾邏輯轉換模塊320轉換dut的布爾邏輯電路,以使得能夠利用具有未知狀態(tài)的信號進行邏輯操作。另外,觸發(fā)器轉換模塊330轉換dut的觸發(fā)器,以使得觸發(fā)器能夠基于由于參考信號的未知狀態(tài)引起的參考信號的推測轉變進行操作。此外,鎖存器轉換模塊335轉換dut的鎖存器以使得能夠利用具有未知狀態(tài)的參考信號進行鎖存操作。此外,存儲器電路轉換模塊340轉換dut的存儲器電路以基于包含具有未知狀態(tài)的至少一個比特的不明確地址信號而可操作。這些組件一起將dut或dut的一部分轉換成四狀態(tài)語義,以實現(xiàn)未知狀態(tài)的信號的表示和未知狀態(tài)的傳播。

信號轉換模塊310將以兩狀態(tài)語義所表示的dut的數(shù)字信號進行轉換,以使得能夠表示信號的未知狀態(tài)。信號以一個或多個比特來表示。單個比特由寄存器或另一個邏輯電路的輸出來表示。每個比特都具有二進制狀態(tài),諸如高狀態(tài)(在本文中也稱為邏輯1、vdd和真)和低狀態(tài)(在本文中稱為邏輯0、gnd和假)。信號轉換模塊310實現(xiàn)至少兩個比特,以用于表示兩狀態(tài)語義中的一個比特以表示未知狀態(tài)(在本文中也稱為邏輯x、不清楚和不確定)。優(yōu)選地,信號轉換模塊310實現(xiàn)兩個比特,以用于表示兩狀態(tài)語義中的信號的一個比特的未知狀態(tài)。在一種方法中,通過使用在兩狀態(tài)語義中使用的基本電路或邏輯塊來實現(xiàn)語義轉換,如關于圖4到圖7所詳細描述的。

在圖4a中,圖示出了由信號轉換模塊310執(zhí)行的信號轉換400a的一個示例實施例。在這個示例中,在兩狀態(tài)語義中使用寄存器405以單個比特來表示信號410。根據(jù)信號轉換400a,使用附加寄存器的附加比特被實現(xiàn)以在四狀態(tài)語義中表示信號410。在一個方面中,實現(xiàn)第一寄存器405a以表示比特信號_bin410a,用于指示信號410的可能的低狀態(tài)或可能的高狀態(tài)。另外,實現(xiàn)第二寄存器405b以表示比特信號_x410b,用于指示信號的狀態(tài)是已知的還是未知的。在這種四狀態(tài)語義中,當比特信號_x410b處于低狀態(tài)(例如,信號410的狀態(tài)是已知的)時,信號410的狀態(tài)如比特信號_bin410a所指示。在比特信號_x410b處于高狀態(tài)(例如,信號410的狀態(tài)是未知的)的情況下,信號410被表示為具有未知狀態(tài)。可以根據(jù)下面的示例verilog碼來實現(xiàn)信號轉換400a。

表1示出了信號轉換中的一種方法,如關于圖4a所解釋的。

在圖4b中圖示出了由信號轉換模塊310執(zhí)行的信號轉換400b的另一示例實施例。根據(jù)信號轉換400b,使用附加寄存器的附加比特被實現(xiàn)來以四狀態(tài)語義表示信號410。在該方法中,第一寄存器405c被實現(xiàn)以表示用于指示信號410的可能的高狀態(tài)的比特信號_高_可能410c。另外,第二寄存器405d被實現(xiàn)以表示用于指示信號410的可能的低狀態(tài)的比特信號_低_可能410d。在這個四狀態(tài)語義中,當比特信號_高_可能410c和信號_低_可能410d均處于高狀態(tài)時,信號410被表示為具有未知狀態(tài)。當比特信號_高_可能410c處于高狀態(tài)并且比特信號_低_可能410d處于低狀態(tài)時,信號410被表示為具有高狀態(tài)。類似地,當比特信號_高_可能410c處于低狀態(tài)且比特信號_低_可能410d處于高狀態(tài)時,信號410被表示為具有低狀態(tài)。當比特信號_高_可能410c和信號_低_可能410d均處于低狀態(tài)時,信號410可被表示為具有未知狀態(tài)或未分配狀態(tài)(即不影響邏輯運算)。可以根據(jù)下面的示例verilog碼來實現(xiàn)信號轉換400b。

表2示出了信號轉換中的另一種方法,如關于圖4b所解釋的。

在圖5中,圖示出了由布爾邏輯轉換模塊320執(zhí)行的布爾邏輯轉換500的示例實施例。布爾邏輯轉換模塊320根據(jù)轉換規(guī)則轉換布爾邏輯運算器,以基于具有未知狀態(tài)的輸入信號來確定已轉換的布爾邏輯運算器的輸出以及輸出的不確定性。

作為圖5中所圖示的示例,布爾邏輯轉換500將布爾邏輯運算器505a變換成已轉換的布爾邏輯運算器505b,用于利用具有未知狀態(tài)的信號執(zhí)行邏輯運算。在這個示例中,在兩狀態(tài)語義中的布爾邏輯運算器505a基于輸入信號510和520來執(zhí)行布爾邏輯運算以生成輸出信號530,其中每個信號以單個比特來表示。執(zhí)行布爾邏輯轉換500,使得布爾邏輯運算器505b接收輸入信號510和520,并且在四個狀態(tài)語義的任何一個中生成輸出信號530,如關于圖4a和圖4b所解釋的。根據(jù)信號轉換400a和400b(在本文中稱為信號轉換器400)中的任何一個,輸入信號510用輸入比特510a、510b表示,輸入信號520用輸入比特520a、520b表示,并且輸出信號530用輸出比特530a、530b表示。為了簡潔起見,圖5中的布爾邏輯轉換500在具有兩個輸入信號510和520的布爾邏輯運算器505a上執(zhí)行。然而,布爾邏輯轉換500可以在具有多于兩個輸入信號的其他邏輯電路上執(zhí)行,以確定一個或多個輸出信號的狀態(tài)和該一個或多個輸出信號的不確定性。

布爾邏輯運算器505b基于輸入信號510和520的狀態(tài)來確定輸出信號530的狀態(tài)和輸出信號530的狀態(tài)的不確定性。例如,在布爾邏輯運算器505a為“與”(and)或“與非”(nand)邏輯并且輸入信號510的狀態(tài)是未知的情況下,響應于輸入信號520具有高狀態(tài),輸出信號530被確定為是未知的。在另一示例中,在布爾邏輯運算器505a為“或”(or)或“或非”(nor)邏輯并且輸入信號510的狀態(tài)是未知的情況下,響應于輸入信號520具有低狀態(tài),輸出信號530被確定為是未知的。在另一示例中,在布爾邏輯運算器505a是xor、xnor、xand或xnand邏輯的情況下,響應于輸入信號510和520中的任何一個具有未知狀態(tài),輸出信號530被確定為是未知的。以這種方式,未知狀態(tài)可以通過已轉換的布爾邏輯運算器505b而被傳播??梢愿鶕?jù)下面的示例verilog碼來實現(xiàn)and邏輯的布爾邏輯轉換500。

表3示出了根據(jù)四種狀態(tài)語義的and邏輯的示例轉換。

在圖6a中,圖示出了由觸發(fā)器轉換模塊330所執(zhí)行的觸發(fā)器轉換600的示例實施例。在兩狀態(tài)語義中的觸發(fā)器605a基于參考信號620的上升沿或下降沿以及在參考信號620的狀態(tài)轉變之前接收的輸入信號610來生成輸出信號630,其中每個信號以單個比特來表示。觸發(fā)器轉換模塊330根據(jù)轉換規(guī)則來轉換觸發(fā)器605a,使得已轉換的觸發(fā)器605b可利用具有未知狀態(tài)的信號以及參考信號620中的推測轉變而操作。

觸發(fā)器轉換600被執(zhí)行,使得觸發(fā)器605b接收輸入信號610和參考信號620,并且在四個狀態(tài)語義中的任何一個中生成輸出信號630,如關于圖4a和圖4b所解釋的。根據(jù)信號轉換400,輸入信號610用輸入比特610a、610b表示,參考信號620用參考比特620a、620b表示,輸出信號630用輸出比特630a、630b表示。

在信號被轉換以表示未知狀態(tài)的情況下,參考信號620可以從未知狀態(tài)轉變或轉變到該未知狀態(tài),由此引起具有上升沿或下降沿的推測轉變。作為示例,對于上升沿觸發(fā)的觸發(fā)器605b,對于參考信號620從低狀態(tài)到未知狀態(tài)(即,[0x])或從未知狀態(tài)到高狀態(tài)(即,[x1])的轉變,可能發(fā)生推測轉變。類似地,對于下降沿觸發(fā)的觸發(fā)器605b,對于參考信號620從高狀態(tài)到未知狀態(tài)(即,[1x])或從未知狀態(tài)到低狀態(tài)(即,[x0])的轉變,可能發(fā)生推測轉變。

在一個方面中,對于正沿觸發(fā)的觸發(fā)器605b,已轉換的觸發(fā)器605b使用寄存器或邏輯電路的輸出來實現(xiàn)轉變狀態(tài)比特650,以用于確定參考信號620從低狀態(tài)到未知狀態(tài)的推測轉變。在根據(jù)圖4a的信號轉換400a來對信號進行轉換的情況下,通過對與指示參考信號620的可能低狀態(tài)的參考信號_bin相對應的參考比特620a和與指示參考信號620的狀態(tài)已知的參考信號_x相對應的參考比特620b執(zhí)行and運算來獲得轉變狀態(tài)比特650。(例如,轉換狀態(tài)比特=(!參考信號_bin)&(!參考信號_x)=!(參考信號_bin|參考信號_x))。在參考信號620從低狀態(tài)轉變?yōu)槲粗獱顟B(tài)的情況下(即,當轉換狀態(tài)比特650為高狀態(tài)時,參考信號_x變?yōu)楦?,轉變狀態(tài)比特650的狀態(tài)轉變?yōu)榈蜖顟B(tài)。因此,檢測到轉變狀態(tài)比特650的下降沿之后跟隨處于未知狀態(tài)中的參考信號620,使得能夠檢測參考信號620從低狀態(tài)到未知狀態(tài)的轉變。

對于正沿觸發(fā)的觸發(fā)器605b,由于參考信號620從未知狀態(tài)轉變到高狀態(tài)(即,[x1]),可能發(fā)生參考信號620的另一推測轉變。在一種方法中,通過檢測到參考信號_x的下降沿之后跟隨處于高狀態(tài)中的參考信號_bin來實現(xiàn)確定參考信號620從未知狀態(tài)到高狀態(tài)的轉變。

一旦檢測到參考信號620的推測轉變,則觸發(fā)器605b可以更新輸出信號630的狀態(tài)。在一個方面中,響應于檢測到推測轉變,可以將不確定性延續(xù)到輸出信號630上。在推測轉變的情況下,基于在推測轉變之前的輸出信號630的狀態(tài)和輸入信號610的狀態(tài)來確定輸出信號630的當前狀態(tài)。

在一種方法中,可以將輸出信號630的當前狀態(tài)確定為在推測轉變之前的輸出信號630的狀態(tài)和輸入信號610的狀態(tài)的組合(例如,{q}=merge_emul(q,d)或{q_bin,q_x}<=merge_emul(q_bin,q_x,d_bin,d_x),其中q是觸發(fā)器的輸出,d是觸發(fā)器的輸入)。例如,如果在推測轉變之前觸發(fā)器605b的輸出信號630和觸發(fā)器605b的輸入信號610處于相同狀態(tài),那么在推測轉變之后保持觸發(fā)器605b的輸出信號630。因此,當在推測轉變之前的輸出信號630和輸入信號610處于相同狀態(tài)時,參考信號620的推測轉變不影響輸出信號630。如果在推測轉變之前的觸發(fā)器605b的輸出信號630和輸入信號610處于不同狀態(tài),則觸發(fā)器605b的輸出信號630變得未知。

除了推測轉變之外,觸發(fā)器605b基于參考信號620的確實轉變來操作。在一個方面中,對于正沿觸發(fā)的觸發(fā)器605b,確定參考信號620的確實轉變是基于轉變狀態(tài)比特650。例如,通過檢測到轉變狀態(tài)比特650的下降沿之后跟隨處于已知狀態(tài)(例如,高狀態(tài))中的參考信號620,來確定參考信號620的正沿,使得能夠檢測參考信號620從低狀態(tài)到高狀態(tài)(即[01])的轉變。

觸發(fā)器轉換600的一個實施例可以根據(jù)下面的示例verilog碼來實現(xiàn)。

表4示出了根據(jù)四種狀態(tài)語義之一的觸發(fā)器的示例轉換。

在圖6b中,圖示出了由鎖存器轉換模塊335執(zhí)行的鎖存器轉換660的示例實施例。在兩狀態(tài)語義中的鎖存器665a基于參考信號620的狀態(tài)來生成輸出信號630,其中每個信號以單個比特來表示。鎖存器轉換模塊335根據(jù)轉換規(guī)則來轉換鎖存器665a,使得已轉換的鎖存器665b可利用具有未知狀態(tài)的信號而操作。

執(zhí)行鎖存器轉換660,使得鎖存器665b接收輸入信號610和參考信號620,并且在四個狀態(tài)語義的任一個中生成輸出信號630,如關于圖4a和圖4ba所解釋的。根據(jù)信號轉換400,輸入信號610用輸入比特610a、610b表示,參考信號620用參考比特620a、620b表示,輸出信號630用輸出比特630a、630b表示。除了鎖存器665b基于參考信號620的狀態(tài)而不是基于參考信號620的狀態(tài)的轉變來操作、并且可能不實現(xiàn)轉變狀態(tài)比特之外,鎖存器665b的操作類似于觸發(fā)器605b。

如果參考信號620的狀態(tài)未知,則鎖存器665b可以更新輸出信號630的狀態(tài)。在一個方面,響應于檢測到參考信號620具有未知狀態(tài),可以將不確定性轉移到輸出信號630上。在參考信號620或輸入信號610具有評估狀態(tài)(例如,可能的高狀態(tài))的情況下,鎖存器665b執(zhí)行評估。當參考信號620或輸入信號610具有評估狀態(tài)時,可以連續(xù)地或離散地評估鎖存器665b的輸出。在評估期間參考信號620的狀態(tài)未知的情況下,可以基于輸入信號610的狀態(tài)和在評估之前接收的輸出信號630的狀態(tài)來確定輸出信號630的當前狀態(tài)。

在一種方法中,可以將輸出信號630確定為在評估之前輸入信號610的狀態(tài)和輸出信號630的狀態(tài)的組合(例如,{q}<=merge_emul(q,d)或{q_bin,q_x}<=merge_emul(q_bin,q_x,d_bin,d_x),其中q是鎖存器的輸出,d是鎖存器的輸入)。例如,如果在評估之前的鎖存器665b的輸入信號610和輸出信號630處于相同的狀態(tài),則保持鎖存器665b的輸出信號630。因此,當評估之前的輸入信號610和輸出信號630處于相同狀態(tài)時,具有未知狀態(tài)的參考信號620不影響輸出信號630。如果在評估之前的鎖存器665b的輸入信號610和輸出信號630處于不同的狀態(tài),則鎖存器665b的輸出信號630變得未知。

鎖存器665b還基于參考信號620的確實狀態(tài)進行操作。例如,響應于檢測到參考信號620的評估狀態(tài),當參考信號620處于評估狀態(tài)時,根據(jù)輸入信號610來更新輸出信號630。

鎖存器轉換660的一個實施例可以根據(jù)以下示例verilog碼來實現(xiàn)。

表5示出了根據(jù)四種狀態(tài)語義之一的鎖存器的示例轉換。

在圖7中,圖示出了由存儲器電路轉換模塊340執(zhí)行的存儲器電路轉換700的示例實施例。在兩狀態(tài)語義中的存儲器電路705a基于地址信號710和控制信號730來執(zhí)行讀取和寫入操作。對于寫入操作,輸入信號720被存儲在存儲器電路705a中,并且對于讀取操作,基于存儲在存儲器電路705a中的內(nèi)容來生成輸出信號770。存儲器電路轉換模塊340根據(jù)轉換規(guī)則來轉換存儲器電路705a,使得已轉換的存儲器電路705b可利用具有未知狀態(tài)的信號以及不明確地址信號710而操作。

在兩狀態(tài)語義中的存儲器電路705a包括用于存儲所接收的輸入信號720的內(nèi)容760(0)、760(1)...760(n)(通常在本文中被稱為內(nèi)容760)。每個內(nèi)容760與來自地址740(0)、740(1)...740(n)(通常在本文中被稱為地址740)的對應地址740相關聯(lián)。控制信號730指示是否執(zhí)行讀取操作或寫入操作。對于寫入操作,將輸入信號720存儲在與由地址信號710指示的對應地址740相關聯(lián)的內(nèi)容760中。對于讀取操作,基于與由地址信號710指示的對應地址740相關聯(lián)的內(nèi)容760生成輸出信號770。

在一個實現(xiàn)中,存儲器電路轉換700將存儲器電路705a轉變成已轉換的存儲器電路705b,以可利用具有未知狀態(tài)的信號而操作。執(zhí)行存儲器電路轉換700使得存儲器電路705b接收地址信號710、輸入信號720和控制信號730,并且在四個狀態(tài)語義的任何一個中生成輸出信號770,如關于圖4a和圖4b所解釋的。在一個方面中,每個信號以一個或多個比特來表示。根據(jù)信號轉換400,地址信號710中的每個比特用地址比特710a、710b表示,輸入信號720中的每個比特用輸入比特720a、720b表示,控制信號730中的每個比特用控制比特730a、730b表示,以及輸出信號770中的每個比特用輸出比特770a、770b表示。

在信號被轉換以表示未知狀態(tài)的情況下,地址信號710可能變得不明確。優(yōu)選地,地址信號710以多個比特表示。當至少一個比特未知時,地址信號710變得不明確。例如,在地址信號710以三個比特表示并且包含未知狀態(tài)[1x1]的情況下,地址信號710可以是指地址[101]或[111],使得與該不明確的地址信號710相關聯(lián)的內(nèi)容760呈現(xiàn)是未知的。

在一個方面中,已轉換的存儲器電路705b實現(xiàn)存儲器指示符750(0)、750(1)...750(n)(通常在本文中被稱為存儲器指示符750),以指示與對應地址740相關聯(lián)的內(nèi)容760是未知的。每個存儲器指示符750與對應地址740和對應內(nèi)容760相關聯(lián)。優(yōu)選地,每個存儲器指示符750以單個比特來實現(xiàn)。

為了執(zhí)行寫入操作,當?shù)刂沸盘?10是不明確時,存儲器電路705b根據(jù)地址信號710識別兩個或更多候選地址740。與由地址信號710指示的候選地址740相關聯(lián)的存儲器指示符750被激活(例如,被設置為高狀態(tài))以表示與存儲器指示符750相關聯(lián)的對應內(nèi)容760是未知的。優(yōu)選地,省略(或繞過)將輸入信號720存儲在與存儲器指示符750相關聯(lián)的對應內(nèi)容760中。例如,地址信號710在[1x1]的情況下可以是不明確的,并且存儲器電路705b將[101]和[111]識別為候選地址。此外,存儲器電路705b激活與對應于[101]和[111]的候選地址相關聯(lián)的存儲器指示符750,以指示與候選地址[101]和[111]相關聯(lián)的內(nèi)容是未知的。

在地址信號710是確實的(即,不是不明確的)且輸入信號720是未知的情況下,與由地址信號710指示的地址740相關聯(lián)的存儲器指示符750被激活。類似地,可以省略(或繞過)將具有未知狀態(tài)的輸入信號720存儲在與存儲器指示符750相關聯(lián)的對應內(nèi)容760中。

為了執(zhí)行讀取操作,當?shù)刂沸盘?10是不明確時,在一個實施例中,存儲器電路705b生成具有未知狀態(tài)的輸出信號770,并且繞過讀取任何內(nèi)容760。在一個實現(xiàn)中,存儲器電路705b根據(jù)地址信號710識別兩個或更多候選地址740。在另一實現(xiàn)中,存儲器電路705b根據(jù)地址信號710省略識別候選地址740。

此外,對于執(zhí)行讀取操作,在地址信號710是確實的(即,不是不明確的)并且與由地址信號710指示的對應地址740相關聯(lián)的存儲器指示符750被激活的情況下,存儲器電路705b生成具有未知狀態(tài)的輸出信號770,并繞過讀取任何內(nèi)容760。

存儲器電路705b還利用已知狀態(tài)中的信號執(zhí)行讀取和寫入操作。對于寫入操作,存儲器電路705b將輸入信號720存儲在與由地址信號710指示的對應地址740相關聯(lián)的內(nèi)容760中。對于讀取操作,存儲器電路705b基于與由地址信號710指示的對應地址740相關聯(lián)的內(nèi)容760來生成輸出信號770。

通過以單個比特指示與存儲器指示符750相關聯(lián)的內(nèi)容760的確定性,可以提高讀取和寫入操作速度。優(yōu)選地,內(nèi)容760包括在存儲器電路705b中的多個比特,因此執(zhí)行讀取和寫入操作可能伴隨著高時延。結果,避免對不明確的地址信號710或不明確的輸入信號720的實際的讀取和寫入操作允許了存儲器電路705b的更快的讀取和寫入操作。

在一個方面中,所有存儲器指示符750在存儲器電路705b的初始化期間被激活,以指示所存儲的所有內(nèi)容760是未知的。因此,在沒有確實的存儲器分配(即,具有確實的地址信號710和已知的輸入信號720的寫入操作)的情況下,一個或多個存儲器指示符750保持被激活。優(yōu)選地,在確實的存儲器分配之后,存儲器指示符750被去激活(例如,被設置為低狀態(tài))。因此,可以容易地識別未初始化的存儲器地址,以促進嚴格的設計實踐。

有益地,根據(jù)四狀態(tài)語義來對信號進行初始化可以代表未知值的族,從而代替特定的單個分配。因此,可以暴露dut的未知操作,而執(zhí)行特定值分配的隨機初始化方法可能不會導致問題表現(xiàn)。

表示信號的未知狀態(tài)并傳播未知狀態(tài)可以實現(xiàn)在識別dut的不正確或未知操作(例如由于電源關閉或不正確的初始化引起)時的速度改善。在最近的工藝(例如,22nm及以下)中實現(xiàn)了數(shù)十億個邏輯電路的情況下,可以在100萬個仿真周期中實現(xiàn)識別在兩狀態(tài)語義中的dut的不正確或未知操作。相比之下,利用以四狀態(tài)語義表示信號的未知狀態(tài)并傳播未知狀態(tài)的能力,可以在1000個仿真周期內(nèi)實現(xiàn)識別dut的不正確或未知操作。

另外,四狀態(tài)語義中的dut可以用常規(guī)數(shù)字電路塊來實現(xiàn),而無需采用定制的模擬/混合信號電路(例如,三態(tài)緩沖器)。因此,可以以相對低的成本來實現(xiàn)dut的轉換。此外,當在兩狀態(tài)邏輯中無縫地實現(xiàn)dut的一部分時,可以在四狀態(tài)邏輯中實現(xiàn)dut的另一部分。

此外,可以識別引起故障的dut的ip/塊級硬件組件。因為dut的一部分可以被轉換成四狀態(tài)語義,所以可以進一步檢查由用戶選擇的預定義的ip/塊級組件或區(qū)域或邏輯電路,以便在仿真周期的數(shù)量方面更加快速地分離出問題的根本原因。因此,用于在四狀態(tài)語義中實現(xiàn)dut的一部分的硬件資源保持在不會使仿真器120過載的合理水平處。

圖8是圖示出根據(jù)一個示例實施例的主機系統(tǒng)110準備被轉換為表示數(shù)字信號的未知狀態(tài)的待測設備(dut)以用于仿真的流程圖。其他實施例可以以不同的順序來執(zhí)行圖8的步驟。此外,其他實施例可以包括與這里所描述的不同的和/或附加的步驟。

主機系統(tǒng)110從用戶獲得810hdl中的dut的描述。主機系統(tǒng)110對dut進行轉換820以表示信號的未知狀態(tài)。主機系統(tǒng)110將已轉換dut的hdl描述進行合成830以創(chuàng)建門級網(wǎng)表。在另一實施例中,代替在合成之前對dut進行轉換,在合成dut的hdl描述之后對dut進行轉換。

主機系統(tǒng)110使用門級網(wǎng)表來以門級將dut分區(qū)840成多個分區(qū)。主機系統(tǒng)110將每個分區(qū)映射850到仿真器120的一個或多個fpga。

在圖9中,圖示出了由主機系統(tǒng)110執(zhí)行的dut的轉換820。主機系統(tǒng)110以能夠表示信號的未知狀態(tài)的形式、根據(jù)轉換規(guī)則來轉換910信號。在一個方面中,通過針對信號中的每個比特實現(xiàn)至少兩個比特,將信號轉換成四狀態(tài)語義。此外,主機系統(tǒng)110根據(jù)轉換規(guī)則轉換920布爾邏輯運算器505a,以基于表示未知狀態(tài)的輸入信號510來確定已轉換的布爾邏輯運算器505b的輸出信號530以及輸出信號530的不確定性。此外,主機系統(tǒng)110根據(jù)轉換規(guī)則來轉換930觸發(fā)器605a。已轉換的觸發(fā)器605b可利用包括參考信號620的狀態(tài)從未知狀態(tài)的轉變或到未知狀態(tài)的轉變的推測轉變而操作。此外,主機系統(tǒng)110根據(jù)轉換規(guī)則來轉換935鎖存器665a。已轉換的鎖存器665b可利用具有未知狀態(tài)的參考信號620而操作。此外,主機系統(tǒng)110根據(jù)轉換規(guī)則來轉換940存儲器電路705a。已轉換的存儲器電路705b可利用不明確的地址信號710或包含具有未知狀態(tài)的至少一個比特的不明確的輸入信號720而操作。

在圖10中,圖示出了根據(jù)一個實施例的仿真器120執(zhí)行數(shù)字邏輯運算以基于信號狀態(tài)識別dut的未知操作的流程圖。優(yōu)選地,被主機系統(tǒng)110以能夠表示dut中的信號的未知狀態(tài)的形式來轉換dut。其他實施例可以以不同的順序來執(zhí)行圖10的步驟。此外,其他實施例可以包括與這里所描述的不同的和/或附加的步驟。此外,其他實施例可以省略這里所描述的某些步驟。

在初始化步驟中,將dut中的信號初始化為1010或設置為未知狀態(tài)。例如,在存儲器電路705b中,存儲器指示符750被激活以指示存儲器電路705b中的內(nèi)容760是未知的。此外,其他信號或邏輯電路的狀態(tài)可以被初始化為未知狀態(tài)。在初始化步驟期間或在電源關閉之后打開dut期間,dut的所有信號或信號的子集將被分配為具有未知狀態(tài)。

仿真器120將具有已知狀態(tài)的輸入信號應用1020于dut。輸入信號的一部分可以具有未知狀態(tài)。仿真器120基于輸入信號來執(zhí)行1030數(shù)字邏輯運算,并且基于執(zhí)行1030的數(shù)字邏輯運算來確定1040信號狀態(tài)。數(shù)字邏輯運算的結果可以被用來執(zhí)行附加的數(shù)字邏輯運算,從而可以針對dut的不正確或未知的操作而傳播未知狀態(tài)。仿真器120可以在具有已更新的輸入信號的另一個仿真周期中繼續(xù)1050仿真至少預定數(shù)量的周期。

對于正確設計的dut,dut被預期將從例如由于電源關閉而具有未知狀態(tài)的信號中恢復。因此,dut的輸出被預期在預定數(shù)量的周期之后具有良好定義的狀態(tài)??梢酝ㄟ^設計選擇或通過dut的仿真來獲得預定數(shù)量的周期。在對dut仿真了至少預定數(shù)量的周期之后,監(jiān)控dut的輸出,并且可以基于輸出信號來確定1060dut的未知操作。

參考圖11,圖示出了根據(jù)一個實施例的仿真器120操作觸發(fā)器605b或鎖存器665b的流程圖。優(yōu)選地,觸發(fā)器605b或鎖存器665b以能夠表示dut中的信號的未知狀態(tài)的形式由主機系統(tǒng)110轉換。因此,觸發(fā)器605b可利用參考信號620中的推測轉變而操作,并且鎖存器665b可利用具有未知狀態(tài)的參考信號620而操作。其他實施例可以以不同的順序執(zhí)行圖11的步驟。此外,其他實施例可以包括與這里所描述的不同的和/或附加的步驟。此外,其他實施例可以省略這里所描述的某些步驟。

觸發(fā)器605b或鎖存器665b接收1110輸入信號610和參考信號620。在一種方法中,輸入信號610和參考信號620以四狀態(tài)語義表示。

觸發(fā)器605b或鎖存器665b監(jiān)控1120推測狀況。對于觸發(fā)器605b,推測狀況可以是參考信號620中的推測轉變。對于鎖存器665b,如果參考信號620或輸入信號610具有評估狀態(tài)(例如,可能的高狀態(tài)),推測狀況可以是具有未知狀態(tài)的參考信號620。在一個方面中,響應于檢測到推測狀況,觸發(fā)器605b或鎖存器665b基于推測狀況之前的輸入信號610和輸出信號630生成1150輸出信號。因此,可以將不確定性轉移到輸出信號630上。

此外,觸發(fā)器605b或鎖存器665b監(jiān)控1140參考信號620中的確實狀況。對于正沿觸發(fā)的觸發(fā)器605b,確實狀況可以是參考信號620從低狀態(tài)轉變到高狀態(tài)。對于鎖存器665b,確實狀況可以是具有評估狀態(tài)(例如,高狀態(tài))的參考信號620。對于觸發(fā)器605b,如果檢測到參考信號620的確實狀況,則觸發(fā)器605b基于參考信號620的確實轉變之前的輸入信號610來生成1160輸出信號630。對于鎖存器665b,如果檢測到參考信號620的確實狀況,則鎖存器665b基于當參考信號620具有確實評估狀態(tài)時所接收的輸入信號610來生成1160輸出信號630。

如果參考信號620的推測狀況和確實狀況都沒有被檢測到,則觸發(fā)器605b或鎖存器665b保持1170輸出信號630。

參考圖12a和圖12b,圖示出了根據(jù)一個實施例的仿真器120操作存儲器電路705b的流程圖。優(yōu)選地,存儲器電路705b以能夠表示dut中的信號的未知狀態(tài)的形式由主機系統(tǒng)110轉換。因此,存儲器電路705b可利用不明確的地址信號710而操作。其它實施例可以以不同的順序執(zhí)行圖12a和圖12b的步驟。此外,其他實施例可以包括與這里所描述的不同的和/或附加的步驟。此外,其他實施例可以省略這里所描述的某些步驟。

圖12a圖示出了根據(jù)一個實施例的仿真器120對存儲器電路705b執(zhí)行寫入操作。存儲器電路705b接收1210輸入信號720和地址信號710。存儲器電路705b確定1220輸入信號720或地址信號710是否是不明確的。響應于確定輸入信號720和地址信號710是確實的,存儲器電路705b將輸入信號720存儲1235在與由地址信號710指示的地址740相關聯(lián)的內(nèi)容760中。響應于確定輸入信號720和地址信號710中的至少一個是不明確的,存儲器電路705b用存儲器指示符750來指示1230:與由地址信號710指示的地址740相關聯(lián)的內(nèi)容760是未知的。在一個示例中,存儲器電路705b根據(jù)地址信號710識別候選地址740。在一種方法中,存儲器指示符750被激活以指示內(nèi)容760是未知的,并且優(yōu)選地,省略了將輸入信號720存儲在內(nèi)容760中。

圖12b圖示出了根據(jù)一個實施例的仿真器120對存儲器電路705b執(zhí)行讀取操作。存儲器電路705b接收1250地址信號710,并且存儲器電路705b確定1260地址信號710是否是不明確的。響應于確定地址信號710是不明確的,存儲器電路705b生成具有未知狀態(tài)的輸出信號770。優(yōu)選地,省略(或繞過)內(nèi)容760的實際讀取。

響應于確定地址信號710是確實的,存儲器電路705b確定1270與由地址信號710指示的地址740相關聯(lián)的內(nèi)容760是否是未知的。在一種方法中,存儲器電路705b檢查與內(nèi)容760相關聯(lián)并與地址740相關聯(lián)的存儲器指示符750,以確定內(nèi)容760是否是未知的。例如,如果存儲器指示符750被激活,那么內(nèi)容760被確定為是未知的。此外,響應于確定內(nèi)容760是未知的,存儲器電路705b生成1290具有未知狀態(tài)的輸出信號770。優(yōu)選地,省略(或繞過)內(nèi)容760的實際讀取。

響應于確定內(nèi)容760是已知的,存儲器電路705b基于與由地址信號710指示的地址740相關聯(lián)的內(nèi)容760生成1280輸出信號770。

計算機器架構

現(xiàn)在轉到圖13,其圖示出了能夠從機器可讀介質讀取指令并在處理器(或控制器)中執(zhí)行它們的示例機器的組件的框圖。具體地,圖13以計算機系統(tǒng)1300的示例形式示出了機器的示意表示,在其中用于使機器進行(執(zhí)行)利用圖1-圖12所描述的任何一個或多個方法的指令1324(例如,軟件或程序代碼)。計算機系統(tǒng)1300可以用于在圖1的仿真環(huán)境100中圖示出的一個或多個實體(例如,主機系統(tǒng)110,仿真器120)。

示例計算機系統(tǒng)1300包括硬件處理器1302(例如,中央處理單元(cpu)、圖形處理單元(gpu)、數(shù)字信號處理器(dsp)、一個或多個專用集成電路(asic)、一個或多個射頻集成電路(rfic)或這些的任何組合)、主存儲器1304和靜態(tài)存儲器1306,其被配置為經(jīng)由總線1308彼此通信。處理器1302可以包括一個或多個處理器。計算機系統(tǒng)1300還可以包括圖形顯示單元1310(例如等離子體顯示面板(pdp)、液晶顯示器(lcd)、投影儀或陰極射線管(crt))。計算機系統(tǒng)1300還可以包括字母數(shù)字輸入設備1312(例如鍵盤)、光標控制設備1314(例如鼠標、軌跡球、操縱桿、運動傳感器或其他指向儀器)、存儲單元1316、信號生成設備1318(例如揚聲器)和網(wǎng)絡接口設備1320,其也被配置為經(jīng)由總線1308進行通信。

存儲單元1316包括機器可讀介質1322,其上存儲了體現(xiàn)本文所描述的任何一個或多個方法或功能的指令1324(例如,軟件)。在指令由計算機系統(tǒng)1300執(zhí)行期間,指令1324(例如,軟件)也可以完全地或至少部分地駐留在主存儲器1304內(nèi)或處理器1302內(nèi)(例如,在處理器的高速緩存存儲器內(nèi)),主存儲器1304和處理器1302也構成機器可讀介質??梢越?jīng)由網(wǎng)絡接口設備1320通過網(wǎng)絡1326發(fā)送或接收指令1324(例如,軟件)。

雖然在示例性實施例中將機器可讀介質1322示出為單個介質,但是術語“機器可讀介質”應被認為包括能夠存儲指令(例如,指令1324)的單個介質或多個介質(例如,集中式或分布式數(shù)據(jù)庫,或相關聯(lián)的高速緩存和服務器)。術語“機器可讀介質”還應被認為包括能夠存儲指令(例如,指令1324)以供機器執(zhí)行并且使機器執(zhí)行本文公開的任何一個或多個方法的任何介質。術語“機器可讀介質”包括但不限于固態(tài)存儲器、光學介質和磁介質形式的數(shù)據(jù)貯存庫。

如本領域中已知的,計算機系統(tǒng)1300可以具有與圖13所示出的不同的和/或其他組件。此外,計算機系統(tǒng)1300可以缺少某些所示出的組件。例如,用作仿真器120的計算機系統(tǒng)1300可以包括硬件處理器1302、存儲單元1316、網(wǎng)絡接口設備1320以及多個可配置邏輯電路(如上面參考圖1所描述的)以及其他組件,但是可以缺少字母數(shù)字輸入設備1312和光標控制設備1314。

其他配置考慮

注意,雖然在用于仿真數(shù)字電路和系統(tǒng)的仿真環(huán)境的上下文中描述了主題,但是所描述的原理可以被應用于任何數(shù)字電子設備的分析。所公開的配置的優(yōu)點包括以能夠表示未知狀態(tài)的形式變換信號和數(shù)字邏輯電路。以這種方式,可以將未知狀態(tài)傳播到其他邏輯電路,因此可以以計算有效的方式識別例如由于電源關閉或不正確的初始化而造成的dut的不正確或未知操作。此外,雖然本文的示例是在仿真環(huán)境的上下文中,但是本文所描述的原理可以應用于數(shù)字電路的硬件實現(xiàn)的其他分析,包括fpga和asic或諸如eda的軟件仿真。

在整個說明書中,多個實例可以實現(xiàn)被描述為單個實例的組件、操作或結構。雖然一個或多個方法的個體操作被圖示出和描述為分離的操作,但是可以并行地執(zhí)行一個或多個個體操作,并且不需要以所圖示出的順序執(zhí)行操作。作為示例配置中的分離組件而呈現(xiàn)的結構和功能可以被實現(xiàn)為組合結構或組件。類似地,作為單個組件而呈現(xiàn)的結構和功能可以被實現(xiàn)為分離的組件。這些和其他變型、修改、添加和改進落入本文主題的范圍內(nèi)。

某些實施例在本文中被描述為包括邏輯或多個組件、模塊或機制,例如如圖1-圖12所圖示的。模塊可以構成軟件模塊(例如,在機器可讀介質上或在傳輸信號中體現(xiàn)的代碼)或硬件模塊。硬件模塊是能夠執(zhí)行某些操作的有形單元并且可以以某種方式被配置或布置。在示例實施例中,一個或多個計算機系統(tǒng)(例如,獨立的計算機系統(tǒng)、客戶端計算機系統(tǒng)或服務器計算機系統(tǒng))或者計算機系統(tǒng)的一個或多個硬件模塊(例如,處理器或一組處理器)可以由軟件(例如,應用或應用部分)配置為操作以執(zhí)行如本文所描述的某些操作的硬件模塊。

在各種實施例中,硬件模塊可以被機械地或電子地實現(xiàn)。例如,硬件模塊可以包括被永久配置(例如,作為諸如現(xiàn)場可編程門陣列(fpga)或專用集成電路(asic)的專用處理器)來執(zhí)行某些操作的專用電路或邏輯。硬件模塊還可以包括由軟件臨時配置來執(zhí)行某些操作的可編程邏輯或電路(例如,包含在通用處理器或其他可編程處理器內(nèi))。應當理解,在專用和永久配置的電路中或在(例如,由軟件配置的)臨時配置的電路中機械地實現(xiàn)硬件模塊的決定可以由成本和時間考慮來驅動。

可以至少部分地由一個或多個處理器例如處理器1302來執(zhí)行本文所描述的示例方法的各種操作,所述處理器被臨時配置(例如由軟件)或被永久配置來執(zhí)行相關操作。無論是臨時還是永久配置,此類處理器可以構成操作為執(zhí)行一個或多個操作或功能的處理器實現(xiàn)的模塊。在一些示例實施例中,本文所指代的模塊可以包括處理器實現(xiàn)的模塊。

一個或多個處理器還可以操作為支持“云計算”環(huán)境中的相關操作的執(zhí)行或作為“軟件即服務”(saas)。例如,至少一些操作可以由一組計算機(作為包括處理器的機器的示例)執(zhí)行,這些操作可以經(jīng)由網(wǎng)絡(例如,因特網(wǎng))以及經(jīng)由一個或多個適當?shù)慕涌?例如,應用程序接口(api))進行訪問。

某些操作的執(zhí)行可以分布在一個或多個處理器中,不僅駐留在單個機器內(nèi),而且部署在多個機器上。在一些示例實施例中,一個或多個處理器或處理器實現(xiàn)的模塊可以位于單個地理位置(例如,在家庭環(huán)境、辦公室環(huán)境或服務器群組內(nèi))。在其他示例實施例中,一個或多個處理器或處理器實現(xiàn)的模塊可以分布在多個地理位置。

在機器存儲器(例如,計算機存儲器)內(nèi)存儲為比特或二進制數(shù)字信號的數(shù)據(jù)上的操作的算法或符號表示方面,呈現(xiàn)本說明書的一些部分。這些算法或符號表示是數(shù)據(jù)處理領域中的普通技術人員用于將其工作的實質傳達給本領域其他技術人員的技術的示例。如本文所使用的,“算法”是導致期望結果的自我一致的操作序列或類似的處理。在這種上下文中,算法和操作涉及物理量的物理操縱。通常但不是必定的,這樣的量可以采取能夠被機器存儲、訪問、傳送、組合、比較或以其他方式操縱的電、磁或光信號的形式。有時,主要是出于公共使用的原因,使用諸如“數(shù)據(jù)”、“內(nèi)容”、“比特”、“值”、“元素”、“符號”、“字符”“項”、“數(shù)字”、“數(shù)”等。然而,這些詞僅僅是方便的標簽,并且與適當?shù)奈锢砹肯嚓P聯(lián)。

除非另有說明,否則本文中使用諸如“處理”、“計算”、“運算”、“確定”、“呈現(xiàn)”、“顯示”等等之類的詞語的討論可以是指機器(例如,計算機)的動作或過程,其在一個或多個存儲器(例如,易失性存儲器、非易失性存儲器或其組合)、寄存器、或其他接收、存儲、發(fā)送或顯示信息的機器組件內(nèi)操縱或變換被表示為物理(例如,電子、磁或光)量的數(shù)據(jù)。

如本文所使用的,對“一個實施例”或“實施例”的任何引用意味著結合該實施例描述的特定元件、特征、結構或特性被包括在至少一個實施例中。在說明書中各處出現(xiàn)的短語“在一個實施例中”不一定都指代同一實施例。

可以使用表達“耦合”和“連接”及其派生詞來描述一些實施例。例如,一些實施例可以使用術語“耦合”來描述以指示兩個或更多個元件處于直接物理或電接觸。然而,術語“耦合”還可以表示兩個或更多個元件彼此不直接接觸,但是仍然彼此協(xié)作或交互。實施例不限于此上下文。

如本文所使用的,術語“包括”、“包含”、“具有”或其任何其它變體旨在涵蓋非排他性的包括。例如,包括元素列表的過程、方法、物品或裝置不一定僅限于那些元素,而是可以包括未明確列出或固有于這些過程、方法、物品或裝置的其他元素。此外,除非明確地相反指出,否則“或”是指包括性的或而不是排他性的或。例如,狀況a或b由以下任何一個滿足:a是真(或存在)且b是假(或不存在),a是假(或不存在)且b是真(或存在),并且a和b都是真(或存在)。

此外,使用“一”或“一個”來描述本文中的實施例的元件和組件。這僅僅是為了方便和給出本發(fā)明的一般意義。該描述應該被理解為包括一個或至少一個,并且單數(shù)也包括復數(shù),除非明顯有其它含義。

在閱讀本公開內(nèi)容后,本領域技術人員將理解本文所述實施例的另外的替代結構和功能設計。因此,盡管已經(jīng)示出和描述了特定實施例和應用,但是應當理解,所公開的實施例不限于本文公開的精確構造和組件。在不脫離所附權利要求中限定的精神和范圍的情況下,可以對本文公開的方法和裝置的布置、操作和細節(jié)進行對于本領域技術人員顯而易見的各種修改、改變和變型。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1