專利名稱:使用綜合用于有效數(shù)據(jù)加載和下載的基于分組的協(xié)議的邏輯的硬件輔助的設(shè)計(jì)驗(yàn)證系統(tǒng)的制作方法
發(fā)明的領(lǐng)域本發(fā)明一般涉及數(shù)字硬件設(shè)計(jì)驗(yàn)證系統(tǒng),特別涉及使用一個(gè)硬件加速器于邏輯模擬的硬件輔助的設(shè)計(jì)驗(yàn)證系統(tǒng)。
發(fā)明的背景在現(xiàn)代化電子工業(yè)中,許多數(shù)字硬件設(shè)計(jì)是用一種硬件說明語言描述的。例如,在1996年由IEEE公布的“基于Verilog硬件說明語言的IEEE標(biāo)準(zhǔn)硬件說明語言”中定義的該IEEE標(biāo)準(zhǔn)1364-1995硬件說明語言是流行的硬件說明語言之一。用這樣一種硬件說明語言寫的數(shù)字硬件設(shè)計(jì)在它被編譯以產(chǎn)生用于制作的最終基本表格之前為了其所要求的功能度不得不加以驗(yàn)證。該設(shè)計(jì)驗(yàn)證任務(wù)長期與邏輯模擬相關(guān)。
一個(gè)硬件輔助設(shè)計(jì)驗(yàn)證系統(tǒng)使用一個(gè)硬件加速器為要求比基于軟件的驗(yàn)證系統(tǒng)能提供的性能更高的一類設(shè)計(jì)驗(yàn)證任務(wù)增強(qiáng)邏輯模擬性能。該硬件加速器是由大量邏輯處理器組成的專業(yè)化的邏輯模擬機(jī)器,每個(gè)邏輯處理器具有可模擬一個(gè)邏輯門的能力。例如,1981年12月15日授于Cocke等的名稱為“邏輯模擬機(jī)器”的美國專利U.S.4,306,286公開了這樣一種邏輯模擬機(jī)器。要指出有可能不使用這樣的一個(gè)硬件加速器來執(zhí)行驗(yàn)證。
用作一個(gè)硬件加速器的一類硬件器件是來自California,San Jose的Quickturn Design Systems公司(本發(fā)明的受讓人)的CobaltTM產(chǎn)品。在一個(gè)典型的硬件輔助設(shè)計(jì)驗(yàn)證系統(tǒng)中,該硬件加速器被連接到一個(gè)主工作站,其運(yùn)行一個(gè)驗(yàn)證控制程序,以便將該編譯的驗(yàn)證下設(shè)計(jì)(在此還稱為“DUV”或“用戶設(shè)計(jì)”)裝入到該硬件加速器,初始邏輯模擬,終止邏輯模擬中,并從該硬件加速器下載該模擬結(jié)果。用戶相對(duì)于期望結(jié)果校驗(yàn)該模擬結(jié)果以了解該DUV是否已被模擬為所期望的。在設(shè)計(jì)驗(yàn)證的早期階段,當(dāng)該用戶發(fā)現(xiàn)該模擬結(jié)果不正確時(shí),對(duì)該用戶而言,相對(duì)容易發(fā)現(xiàn)在該DUV中的問題。但是,在后來的設(shè)計(jì)驗(yàn)證階段調(diào)整DUV變得更加困難。由于該問題,在邏輯模擬期間,用戶經(jīng)常想校驗(yàn)在該DUV中的某些鍵控信號(hào)(Key Signal)的中間值。為滿足來自該用戶的這樣的一個(gè)要求,該設(shè)計(jì)驗(yàn)證系統(tǒng)對(duì)信號(hào)的能見度操作提供支持,以使得在邏輯模擬期間在該DUV中的信號(hào)對(duì)該用戶可見或可訪問。
一個(gè)基于軟件的驗(yàn)證系統(tǒng)對(duì)信號(hào)能見度操作提供這樣的支持是容易的,但是對(duì)于一個(gè)硬件輔助的驗(yàn)證系統(tǒng)就不很容易了,這是因?yàn)樗笤谥鞴ぷ髡竞湍M該DUV的硬件加速器之間的額外的通信。
通常通過一個(gè)很一般的I/O接口例如SCSI接口初始加載該DUV到該硬件加速器中。在邏輯模擬期間有可能使用該I/O接口訪問該DUV中少量信號(hào)。在該情況下,在該硬件加速器中的該接口控制程序首先識(shí)別該要求的信號(hào),定位它們,讀出其值,然后將它送回該主工作站。
信號(hào)能見度操作通常不僅包括審查一個(gè)特定信號(hào)的中間值的操作,而且還包括存儲(chǔ)一個(gè)邏輯值于該信號(hào)上用于后續(xù)模擬步驟。使用這些基本操作,用戶可以審查一個(gè)寄存器的值或通過訪問一組相應(yīng)于該寄存器位的信號(hào)存儲(chǔ)一個(gè)值于該寄存器上。通過訪問一組有關(guān)的寄存器,該用戶還可寫入數(shù)據(jù)到一個(gè)存儲(chǔ)器或從一個(gè)存儲(chǔ)器讀出數(shù)據(jù)。
為利用該先進(jìn)的半導(dǎo)體芯片技術(shù)的優(yōu)點(diǎn),增加DUV的數(shù)量包括大容量存儲(chǔ)器。用常規(guī)的信號(hào)能見度操作,可采取長時(shí)間從該DUV中的大容量存儲(chǔ)器加載或下載數(shù)據(jù),因?yàn)樵摶拘盘?hào)能見度操作基于低等級(jí)審查或在單個(gè)信號(hào)上的儲(chǔ)存操作。
為加速DUV中的寄存器和存儲(chǔ)器的加載和下載操作,一個(gè)硬件輔助的設(shè)計(jì)驅(qū)證系統(tǒng)可使用在該主工作站和專用于信號(hào)能見度操作的該硬件加速器之間的一個(gè)專用的通信頻道。為了在訪問在該硬件加速器模擬的DUV中的請求的信號(hào)的情況下使開銷最小,該專門的通信頻道被直接連接到輸入和輸出數(shù)據(jù)緩沖器,后者依次直接接口該DUV而沒有任何接口控制程序。
在1998年2月24日授權(quán)于Fogg,Jr等的美國專利5,721,953中公開了具有數(shù)據(jù)緩沖的接口方案之一,該專利的發(fā)明名稱為“Interface forLogic Simulation Using Parallel Bus for Concurrent Transfersand Having F1F0 Buffers for Sending Data to ReceivingUnits When Ready”,其討論了關(guān)于具有F1F0或在該主計(jì)算機(jī)和該邏輯模擬機(jī)器之間提供F1F0緩沖器的接口以使該接口延遲最小。美國專利5,721,953的公開全部包括在此作為參考。
輸出信號(hào)被分派到輸出數(shù)據(jù)緩沖器的位,而輸入信號(hào)被分派到輸入數(shù)據(jù)緩沖器的位。對(duì)于一個(gè)審查操作(即,觀察或讀出一個(gè)信號(hào)值),該驗(yàn)證控制程序啟動(dòng)一個(gè)數(shù)據(jù)傳送裝置將該儲(chǔ)存在該輸出數(shù)據(jù)緩沖器中的信號(hào)值傳送到該主工作站并選擇該請求的信號(hào)的值。對(duì)于一個(gè)儲(chǔ)存操作(即,寫一個(gè)信號(hào)的值),該驗(yàn)證控制程序匯編該值以儲(chǔ)存和啟動(dòng)一個(gè)數(shù)據(jù)傳送裝置將它們傳送到在該硬件加速器中的該輸入數(shù)據(jù)緩沖器。當(dāng)編輯該DUV用于邏輯模擬時(shí)綜合附加的寫和邏輯元件用于接口到該DUV。
綜合用于信號(hào)能見度操作的寫和邏輯元件不是該DUV的部分,而是虛擬元件同該DUV合并用于邏輯模擬。如在一篇技術(shù)論文中所描述的那樣,虛擬邏輯元件通常用于產(chǎn)生輸入到該DUV并校驗(yàn)該模擬輸出的測試臺(tái),該技術(shù)論文為Beece等于1998年6月在刊物Procceedings ofthe 25thACM/IEEE Design Automation Conference上公布,其題目為“The IBM Engineering Verification Engine”。
只要對(duì)于信號(hào)能見度操作可見信號(hào)的數(shù)量相對(duì)少,則靜態(tài)分配該輸入和輸出信號(hào)到該輸入和輸出數(shù)據(jù)緩沖器的位是可接受的。然而對(duì)于大量可見信號(hào)是不理想的,因?yàn)閷?duì)物理上可利用數(shù)據(jù)緩沖器位的數(shù)量存在一定的限制。
為有效地增加可見信號(hào),對(duì)該DUV中的信號(hào)的可訪問性問題的一個(gè)解決方案是對(duì)在該數(shù)據(jù)緩沖器內(nèi)的每一位時(shí)分多路復(fù)用兩個(gè)或多個(gè)信號(hào),以便有效地增加可見的信號(hào)數(shù)。時(shí)分多路復(fù)用多個(gè)信號(hào)的一種方法在1997年1月21日授權(quán)于Agarwal等的美國專利U.S.5,596,742中公開,該專利的名稱為“Virtual Interconnections for Reconfigurable LogicSystem”,其討論了一種靈巧地多路復(fù)用多根邏輯導(dǎo)線中的每根物理導(dǎo)線并使這些連結(jié)流水線化的編輯技術(shù)。另一種截然不同于Agarwal公開的時(shí)分多路復(fù)用方法在1999年9月28日授權(quán)于Sample等的美國專利U.S.5,960,191中公開,該專利的名稱為“Emulation System With Time-Multipexed Interconnect”,其討論了時(shí)分多路復(fù)用多個(gè)設(shè)計(jì)信號(hào)到物理邏輯芯片管腳和印刷電路板的一個(gè)硬件仿真系統(tǒng)。另一個(gè)有關(guān)時(shí)分多路復(fù)用的公開是公開在于2000年2月1日授于Sample等的美國專利6,020,760中,該專利的名稱為“I/O Buffer Circuit With PiaMultiplexing”,其公開了一個(gè)集成電路,用于實(shí)施重新配置邏輯到一個(gè)輸入/輸出管腳以增加有效I/O管腳適用性,該邏輯具有時(shí)分多路復(fù)用至少兩個(gè)信號(hào)的一個(gè)輸入/輸出緩沖器電路。U.S.5,596,742,5,960,191和6,020,760全部包括在此作為參考。
雖然這些時(shí)分多路復(fù)用方法能有效地通過該數(shù)據(jù)緩沖器增加可見信號(hào)的數(shù)量,但是不能解決訪問該DUV中的寄存器和存儲(chǔ)器的執(zhí)行問題。組合被要求來訪問一個(gè)寄存器或存儲(chǔ)器的信號(hào)能夠減小由于對(duì)在一個(gè)組中的信號(hào)收集和散開該位值而引起的開銷。然而該信號(hào)組合方法將強(qiáng)加某些限制于時(shí)分多路復(fù)用多個(gè)信號(hào),因?yàn)樗性谝粋€(gè)組中的信號(hào)不得不在同一時(shí)間可被看見,和可存在很多這樣的信號(hào)組,和可存在若干由兩個(gè)或多個(gè)組共享的某些信號(hào)。
使用該低電平審查和存儲(chǔ)操作,在信號(hào)分組或不進(jìn)行信號(hào)分組的情況下要求某些步驟訪問一個(gè)寄存器;要求更多的步驟訪問一個(gè)存儲(chǔ)器字。因此,對(duì)于該驗(yàn)證控制程序期待提取一個(gè)很長的時(shí)間來加載/下載大量數(shù)據(jù)到/從一個(gè)存儲(chǔ)器。這樣的耗費(fèi)時(shí)間的加載和下載操作將明顯降低整個(gè)模擬性能,使模擬的效率大為降低,例如將模擬若干時(shí)鐘周期。
如果一個(gè)DUV包括許多大容量存儲(chǔ)器,這種性能降低將變得非常嚴(yán)重,用該硬件加速器將有效地使倍增模擬性能為零。希望提供一種方法和設(shè)備來減小數(shù)據(jù)負(fù)載和下載所要求的時(shí)間。還希望提供一種方法和設(shè)備以便更容易訪問該寄存器和存儲(chǔ)器。
發(fā)明概況本發(fā)明使用一個(gè)新的基于分組的協(xié)議執(zhí)行該主工作站和該硬件加速器之間的數(shù)據(jù)傳送操作,以便向一個(gè)驗(yàn)證下目標(biāo)設(shè)計(jì)(也稱為目標(biāo)設(shè)計(jì)或用戶的設(shè)計(jì)中)的寄存器和存儲(chǔ)器加載數(shù)據(jù)和由其下載數(shù)據(jù)。該協(xié)議是基于可變大小請求和響應(yīng)分組。一個(gè)請求分組是由該主工作站到該硬件加速器的一個(gè)輸入分組并包括命令,變元,和任意數(shù)據(jù),而一個(gè)響應(yīng)分組是由該硬件加速器到該主工作站的一個(gè)輸出分組并包括來自該DUV中的目標(biāo)寄存器或存儲(chǔ)器的讀出數(shù)據(jù)。
在本發(fā)明的一個(gè)實(shí)施例的一個(gè)方面,用于編輯一個(gè)用戶的設(shè)計(jì)的一種方法是公開在所有在用戶的設(shè)計(jì)中的存儲(chǔ)器和寄存器都被識(shí)別的場合。在識(shí)別該存儲(chǔ)器和寄存器之后,可訪問性邏輯綜合到用戶的設(shè)計(jì)中。該可訪問性邏輯包括對(duì)該存儲(chǔ)器和寄存器的訪問端口。在本發(fā)明的另一方面,一個(gè)唯一識(shí)別符被分配到該用戶的設(shè)計(jì)中的每個(gè)存儲(chǔ)器和寄存器。在本發(fā)明的再一方面,該可訪問性邏輯包括選擇邏輯。該選擇邏輯適于接收該唯一的識(shí)別符并選擇在該用戶的設(shè)計(jì)中特定的一個(gè)存儲(chǔ)器或寄存器。在本發(fā)明的再一方面,可訪問性邏輯包括從該用戶的設(shè)計(jì)中的特定的一個(gè)存儲(chǔ)器或寄存器讀出的邏輯或?qū)懭氲狡渲械倪壿?。在本發(fā)明的再一方面,該可訪問性邏輯包括解碼邏輯,其從一個(gè)主工作站接收命令并控制對(duì)該用戶的設(shè)計(jì)中的存儲(chǔ)器和寄存器讀寫數(shù)據(jù)的執(zhí)行。
為處理該請求的和響應(yīng)的分組,一個(gè)協(xié)議接口邏輯用在該目標(biāo)DUV中的寄存器和存儲(chǔ)器的大小參數(shù)在編輯時(shí)間進(jìn)行綜合并在運(yùn)行時(shí)間用該目標(biāo)DUV模擬。該綜合的協(xié)議接口邏輯包括寄存器分組,一個(gè)有限狀態(tài)機(jī)器,一個(gè)命令解碼邏輯,一個(gè)命令執(zhí)行邏輯,和一個(gè)數(shù)據(jù)讀和寫控制邏輯,用于數(shù)據(jù)加載和下載操作。它解碼來自在該主工作站上運(yùn)行的驗(yàn)證控制程序的一個(gè)請求分組并執(zhí)行在該分組中的編碼的命令。如果該命令是一個(gè)數(shù)據(jù)寫請求,則該協(xié)議接口邏輯將該分組中的數(shù)據(jù)寫到目標(biāo)寄存器或存儲(chǔ)器單元。如果該命令是一個(gè)數(shù)據(jù)讀請求,則協(xié)議接口邏輯從該目標(biāo)寄存器或存儲(chǔ)器單元讀出數(shù)據(jù)并將響應(yīng)分組中的數(shù)據(jù)送到該主工作站。
現(xiàn)在將參照附圖和在權(quán)利要求中的指示更具體地描述本發(fā)明的上述的和其他的優(yōu)選特征,包括實(shí)施的不同的新細(xì)節(jié)和元件組合。應(yīng)理解實(shí)施本發(fā)明的具體方法和電路僅用說明表示并不作為對(duì)本發(fā)明的限制。如由本專業(yè)技術(shù)人員將理解的那樣,本發(fā)明的原理和特征可應(yīng)用在不同的和多個(gè)實(shí)施例中而不脫離本發(fā)明的范圍。
附圖的簡要說明參照附圖,其中表示本發(fā)明范圍的說明性實(shí)施例,據(jù)此,新的特征和優(yōu)點(diǎn)將顯而易見。
圖1是說明綜合用于驗(yàn)證下設(shè)計(jì)或DUV示例的協(xié)議接口邏輯的主題系統(tǒng)的方塊圖。
圖2A是在同該協(xié)議接口邏輯連接的DUV示例中的寄存器決的方塊圖。
圖2B是在同該協(xié)議接口邏輯連接的DUV示例中的存儲(chǔ)器塊的方塊圖。
圖3是該協(xié)議接口邏輯的分組I/O塊的詳細(xì)方塊圖。
圖4是該協(xié)議接口邏輯的存儲(chǔ)器地址塊的詳細(xì)方塊圖。
圖5是該協(xié)議接口邏輯的讀數(shù)據(jù)塊的詳細(xì)方塊圖。
圖6是由該協(xié)議接口邏輯處理的協(xié)議命令的圖表。
圖7是該協(xié)議接口邏輯的命令解碼塊的詳細(xì)方塊圖。
圖8是該協(xié)議接口邏輯的狀態(tài)和狀態(tài)轉(zhuǎn)變圖。
圖9是該協(xié)議接口邏輯的狀態(tài)控制塊的詳細(xì)方塊圖。
圖10是該協(xié)議接口邏輯的讀/寫控制塊的詳細(xì)方塊圖。
圖11A是執(zhí)行在該協(xié)議接口邏輯中的寄存器寫命令的定時(shí)圖表。
圖11B是執(zhí)行該協(xié)議接口邏輯中的寄存器讀命令的定時(shí)圖表。
圖11C是執(zhí)行該協(xié)議接口邏輯中的存儲(chǔ)器寫命令的定時(shí)圖表。
圖11D是執(zhí)行該協(xié)議接口邏輯中的存儲(chǔ)器讀命令的定時(shí)圖表。
圖12是產(chǎn)生該協(xié)議接口邏輯的編輯時(shí)間步驟的流程圖。
圖13是計(jì)算用于該協(xié)議接口邏輯的協(xié)議字段大小的詳細(xì)流程圖。
圖14是構(gòu)造該協(xié)議接口邏輯的元件的詳細(xì)流程圖。
圖15是用于模擬具有該協(xié)議接口邏輯的DUV的運(yùn)行時(shí)間操作的流程圖。
圖16是用于描述具有該協(xié)議接口邏輯的操作的常數(shù),變量和功能的定義和說明的代碼列表。
圖17是用于發(fā)送分組到該協(xié)議接口邏輯和從其接收分組的功能的代碼列表。
圖18是用該協(xié)議接口邏輯寫寄存器,讀寄存器,寫存儲(chǔ)器,和讀存儲(chǔ)器功能的代碼列表。
發(fā)明的詳細(xì)說明轉(zhuǎn)到圖,現(xiàn)在將描述本發(fā)明的目前優(yōu)選的設(shè)備和方法。
第一步是識(shí)別DUV中存在的存儲(chǔ)器和寄存器,在一個(gè)實(shí)施例中第一步包含識(shí)別所有該DUV的存儲(chǔ)器和寄存器。在另一實(shí)施例中,該第一步包含僅識(shí)別該DUV中存在的一子組存儲(chǔ)器和寄存器。在該實(shí)施例中,用戶必須識(shí)別具有特定關(guān)系或興趣的那些存儲(chǔ)器和寄存器。僅識(shí)別該DUV的一子組存儲(chǔ)器和寄存器的一個(gè)優(yōu)點(diǎn)在于該DUV能更快地編輯以便驗(yàn)證。但是,僅用識(shí)別一子組存儲(chǔ)器和寄存器,由本發(fā)明不同實(shí)施例提供的優(yōu)點(diǎn)將限制到那些專門的欲被識(shí)別的存儲(chǔ)器和寄存器。如下面將更詳細(xì)討論的那樣,一旦識(shí)別了該存儲(chǔ)器和寄存器,它們必須進(jìn)行索引,以使每個(gè)識(shí)別的存儲(chǔ)器和寄存器具有一個(gè)唯一的識(shí)別符。
第二步是綜合將附加到該DUV的邏輯。該綜合的邏輯將提供對(duì)在第一步驟中識(shí)別的存儲(chǔ)器和寄存器的訪問。在該第二步中綜合的邏輯將在下面詳細(xì)討論。然而,一般地,該綜合的邏輯將包括選擇邏輯,其接收上述討論的唯一的識(shí)別符,使得一個(gè)特定的存儲(chǔ)器或寄存器能被訪問以進(jìn)行讀或?qū)憽?br>
第三步驟是產(chǎn)生到寄存器和存儲(chǔ)器的一個(gè)路徑的步驟。該步驟也將在下面作更詳細(xì)的討論。
圖1是本發(fā)明的一個(gè)優(yōu)選實(shí)施例的方塊圖。圖1表示該驗(yàn)證下設(shè)計(jì)(DUV)30,與綜合的邏輯一起為提供對(duì)該DUV 30的存儲(chǔ)器和寄存器的良好的訪問。圖1表示一個(gè)主工作站10,通過一個(gè)通信頻道14連接到一個(gè)硬件加速器20,該硬件加速器模擬驗(yàn)證下設(shè)計(jì)(DUV)30,和該協(xié)議接口邏輯40綜合用于該DUV 30,以便有效數(shù)據(jù)加載和下載操作。一個(gè)控制程序11是一個(gè)驗(yàn)證控制程序,在該主工作站10上運(yùn)行,以便通過該協(xié)議接口邏輯40加載數(shù)據(jù)到該DUV 30中的寄存器和儲(chǔ)存器以及從其下載數(shù)據(jù)。一個(gè)示例性硬件加速器20是從Quickurn DesignSystems公司可得到的CobaltTM產(chǎn)品。一個(gè)示例性控制程序11是從Quikturn Design Systems公司可得到的PowerSuiteTMsoftware packag。
當(dāng)該控制程序11加載數(shù)據(jù)到該DUV中的寄存器或存儲(chǔ)器單元時(shí),它首先經(jīng)由一根內(nèi)部總線12將具有數(shù)據(jù)的一個(gè)寫命令送到數(shù)據(jù)緩沖器13,然后啟動(dòng)數(shù)據(jù)轉(zhuǎn)移裝置經(jīng)由該通信頻道14從該數(shù)據(jù)緩沖器13轉(zhuǎn)到在該硬件加速器20中的一個(gè)數(shù)據(jù)緩沖器21。該協(xié)議接口邏輯40接收來自該數(shù)據(jù)緩沖器21的寫命令和寫數(shù)據(jù)并執(zhí)行該寫命令以加載該數(shù)據(jù)到該DUV 30中的目標(biāo)寄存器或存儲(chǔ)器單元。
當(dāng)該控制程序11從該DUV 30中的一個(gè)寄存器或存儲(chǔ)器單元下載數(shù)據(jù)時(shí),它首先通過內(nèi)部總線12送一個(gè)讀命令到數(shù)據(jù)緩沖器13中并接著啟動(dòng)數(shù)據(jù)轉(zhuǎn)移裝置通過通信頻道14從該數(shù)據(jù)緩沖器13送到在該硬件加速器20中數(shù)據(jù)緩沖器21。該協(xié)議接口邏輯40從該數(shù)據(jù)緩沖器21接收該讀命令并執(zhí)行該命令以便從該DUV 30的目標(biāo)寄存器或存儲(chǔ)器單元下載數(shù)據(jù)到該數(shù)據(jù)緩沖器21中。儲(chǔ)存在該數(shù)據(jù)緩沖器21中的數(shù)據(jù)接著通過由該控制程序11啟動(dòng)的轉(zhuǎn)移操作經(jīng)由通信頻道14轉(zhuǎn)移到該數(shù)據(jù)緩沖器13,該控制程序11通過內(nèi)部總線12接收來自該數(shù)據(jù)緩沖器13的數(shù)據(jù)。
如討論的,該協(xié)議接口邏輯40是綜合用于該DUV 30的一種專門邏輯。在目前優(yōu)選實(shí)施例中,協(xié)議接口邏輯40包括分組I/O塊41,狀態(tài)控制塊42,命令解碼塊43,讀/寫控制塊44,存儲(chǔ)器地址塊45,和讀數(shù)據(jù)塊46。
分組I/O塊41保持來自該主工作站10的命令和寫數(shù)據(jù)于其輸入分組寄存器(在圖1中未示)中。分組I/O塊41還保持來自該DUV 30的信息和讀數(shù)據(jù)于其輸出分組寄存器(圖1中未示)中。該分組I/O塊41接收來自數(shù)據(jù)緩沖器21的命令和寫數(shù)據(jù)信號(hào)22以及來自讀數(shù)據(jù)塊46的讀數(shù)據(jù)信號(hào)57。該分組I/O塊41送控制信息和讀數(shù)據(jù)信號(hào)23到數(shù)據(jù)緩沖器21以及送命令和數(shù)據(jù)信號(hào)50到狀態(tài)控制塊42,命令解碼塊43,讀/寫控制塊44,存儲(chǔ)器地址塊45,和DUV 30。
狀態(tài)控制塊42保持該協(xié)議接口邏輯40的當(dāng)前狀態(tài)并使?fàn)顟B(tài)轉(zhuǎn)變。狀態(tài)控制塊42接收來自命令解碼塊43的解碼命令信息信號(hào)51和來自分組I/O塊41的命令信號(hào)50。該狀態(tài)控制塊42產(chǎn)生狀態(tài)信號(hào)52到讀/寫控制塊44。
該命令解碼塊43解碼來自分組I/O塊41的命令。該命令解碼塊43接收來自該分組I/O塊41的命令信號(hào)50并產(chǎn)生該解碼的信息信號(hào)51到狀態(tài)控制塊42和讀/寫控制塊44。
該讀/寫控制塊44產(chǎn)生內(nèi)部的和外部的讀和寫控制信號(hào)。該讀/寫控制塊44接收來自命令解碼塊43的解碼的命令信息信號(hào)51,來自狀態(tài)塊42的狀態(tài)信息信號(hào)52,和來自分組I/O塊41的寫數(shù)據(jù)信號(hào)50。該讀/寫控制塊44產(chǎn)生內(nèi)部的讀和寫控制信號(hào)53到該協(xié)議接口邏輯40以及讀和寫控制信號(hào)54到該DUV 30中的寄存器和存儲(chǔ)器塊。
該存儲(chǔ)器地址塊45保持存儲(chǔ)器地址并更新它用于存儲(chǔ)器訪問操作。該存儲(chǔ)器地址塊45從分組I/O塊41接收存儲(chǔ)器地址信號(hào)50并產(chǎn)生目前存儲(chǔ)器地址信號(hào)55到該DUV 30。
該讀數(shù)據(jù)塊46從該DUV 30中的該寄存器和存儲(chǔ)器接收數(shù)據(jù)信號(hào)56并產(chǎn)生選擇的數(shù)據(jù)信號(hào)57到該分組I/O塊41。
圖2A表示三個(gè)寄存器例REG0、REG1,和REG2,它們都在示例性DUV 30中,而該訪問邏輯被綜合到該DUV 30中以允許對(duì)那些寄存器的讀和寫。寄存器REG0、REG1,和REG2可能已經(jīng)在上述第一步驟中加以識(shí)別,在該例中,寄存器REG0、REG1和REG2分別是48位,16位,和32位的寄存器60,63,和66,其允許說明本發(fā)明不同實(shí)施例的靈活性。在該DUV 30中,寄存器REG0、REG1,和REG2從DUV邏輯31接收寫數(shù)據(jù)和控制信號(hào)32并產(chǎn)生讀數(shù)據(jù)信號(hào)56到該DUV邏輯31。綜合數(shù)據(jù)多路復(fù)用器61,64,和67和控制多路復(fù)用器62,65,和68并附加到DUV 30,使得該協(xié)議接口邏輯40可加載數(shù)據(jù)到寄存器REG0、REG1,和REG2和從它們下載數(shù)據(jù)。該多路復(fù)用器61,62,64,65,67,和68由在來自該協(xié)議接口邏輯40的信號(hào)組54中的選擇信號(hào)REGS控制。REG0、REG1,和REG2是在來自該協(xié)議接口邏輯40的信號(hào)組54中的寄存器寫控制信號(hào)并分別連接到控制多路復(fù)用器62,65,和68。DIN<47:0>是來自該協(xié)議接口邏輯40的48位數(shù)據(jù)信號(hào)組50并連接到數(shù)據(jù)多路復(fù)用器61,64,和67。RRDO<47:0>是來自REG0的48位數(shù)據(jù)信號(hào)組,RRD1<15:0>是來自REG1的16位數(shù)據(jù)信號(hào)組,和RRD2<31:0>是來自REG2的32位數(shù)據(jù)信號(hào)組,RRD0、RRD1,和RRD2被連接到DUV邏輯31和協(xié)議接口邏輯40作為信號(hào)組56。
當(dāng)該選擇信號(hào)REGS未認(rèn)定時(shí),REG0、REG1,和REG2從該DUV邏輯31接收寫數(shù)據(jù)和控制信號(hào)32。當(dāng)認(rèn)定選擇信號(hào)REGS時(shí),REG0、REG1,和REG2從該協(xié)議接口邏輯40接收寫數(shù)據(jù)信號(hào)50和控制信號(hào)54。不管該選擇信號(hào)REGS,該讀數(shù)據(jù)信號(hào)56被送到該DUV邏輯31和該協(xié)議接口邏輯40。
圖2B表示在該DUV 30中的兩個(gè)存儲(chǔ)器例MEM0和MEM1,它們表示在一個(gè)示例性DUV 30中,和訪問邏輯被綜合到該DUV 30中,以允許對(duì)這些存儲(chǔ)器進(jìn)行讀和寫。存儲(chǔ)器MEM0和MEM1可能已在上述第一步驟中識(shí)別。MEM0是存儲(chǔ)器70,具有40位數(shù)據(jù)和8位地址,而MEM1是存儲(chǔ)器74,具有18位數(shù)據(jù)和14位地址。選擇這些數(shù)據(jù)大小和地址長度以便說明本發(fā)明的靈活性并且不限制能在該DUV 30中存在的存儲(chǔ)器的類型。在該DUV 30中MEM0和MEM1從該DUV邏輯33接收寫數(shù)據(jù),存儲(chǔ)器地址,和寫允許信號(hào)34并產(chǎn)生讀數(shù)據(jù)信號(hào)56到DUV邏輯33。數(shù)據(jù)多路復(fù)用器71和75,地址多路復(fù)用器72和76、和寫允許多路復(fù)用器73和77被綜合并附加到該DUV 30,使得該協(xié)議接口邏輯40可加載數(shù)據(jù)到MEM0和MEM1和從其下載數(shù)據(jù)。該多路復(fù)用器71,72,73,75,76,和77由在來自該協(xié)議接口邏輯41的信號(hào)組54中的選擇信號(hào)MEMS所控制。MWE0 MWE1是在來自該協(xié)議接口邏輯40的信號(hào)組54中的存儲(chǔ)器寫允許信號(hào)并分別連接到寫允許多路復(fù)用器73和77。DIN<39:0>是來自該協(xié)議接口邏輯40的40位數(shù)據(jù)信號(hào)組50并連接到數(shù)據(jù)多路復(fù)用器71和75。MAD<13:0>是來自該協(xié)議接口邏輯40的14位地址信號(hào)組55并連接到地址多路復(fù)用器72和76。MRDO<39:0>是來自MEM0的40位數(shù)據(jù)信號(hào)組,和MRD1<17:0>是來自MEM1的18位數(shù)據(jù)信號(hào)組。MRD0和MEM1連接到該DUV邏輯33和該協(xié)議接口邏輯40作為信號(hào)組56。
當(dāng)該選擇信號(hào)MEMS未認(rèn)定時(shí),存儲(chǔ)器MEM0和MEM1從該DUV邏輯33接收寫數(shù)據(jù),存儲(chǔ)器地址,和寫允許信號(hào)34。當(dāng)認(rèn)定該選擇信號(hào)MEMS時(shí),MEM0和MEM1從該協(xié)議接口邏輯40接收寫數(shù)據(jù)信號(hào)50,存儲(chǔ)器地址信號(hào)55,和寫允許信號(hào)54。不管選擇信號(hào)MEMS,該讀數(shù)據(jù)信號(hào)56送到DUV邏輯33和協(xié)議接口邏輯40。
圖3是該協(xié)議接口邏輯40中的分組I/O塊41的詳細(xì)方塊圖。在該數(shù)據(jù)緩沖器21中的請求分組經(jīng)由信號(hào)22移動(dòng)到輸入分組寄存器80用于命令的執(zhí)行。在目前的一個(gè)優(yōu)選實(shí)施例中,儲(chǔ)存在該寄存器80中的請求分組被分到五個(gè)字段中1位的TAG,3位的CMD,1位的END,2位的ID,和48位的DATA段。這些字段的長度并不限于這些特定的長度并可按特定系統(tǒng)的需要建立。在CMD,END,ID,和DATA字段中的值在信號(hào)50上送到其他的塊。在TAG字段中的值送到1位寄存器81,其保持在先周期的TAG值。在寄存器80的TAG字段中的值在“異-或”門82相對(duì)儲(chǔ)存在寄存器81中的在先TAG值進(jìn)行校驗(yàn),以便在信號(hào)83上產(chǎn)生NEWIN用于表示是否一個(gè)新的分組已到達(dá)該寄存器80中。如果NEWIN是一,該寄存器80已從數(shù)據(jù)緩沖器21接收到一個(gè)新的分組。雖然在圖3的示例性分組I/O塊41中TAG字段的大小在該特定實(shí)施例中是1位,但是它可以多于2位,在該情況下,該“異-或”門82不得不由一個(gè)合適的邏輯塊取代以校驗(yàn)該兩個(gè)數(shù)的相等性。
一個(gè)響應(yīng)分組儲(chǔ)存在輸出分組寄存器84中,然后在信號(hào)23上送到數(shù)據(jù)緩沖器21。在該特定實(shí)施例中,該響應(yīng)分組在該寄存器84中被分到三個(gè)字段中1位的TAG,6位的UNUSED,和48位的DATA字段。這些字段的長度并不限制到這些特定的長度和可以根據(jù)一個(gè)特定系統(tǒng)的需要建立。信號(hào)57的值被儲(chǔ)存到寄存器84的DATA字段中。在UNUSED字段中的值并不使用和通常為零。TAG字段的值由NOT門85觸發(fā)。在信號(hào)86上的NEWOWT控制寄存器84,使得僅當(dāng)NEWOUT認(rèn)定時(shí)該寄存器84儲(chǔ)存一個(gè)新數(shù)據(jù)和一個(gè)新tag位。雖然在該特定實(shí)施例中,在該示例性分組I/O塊41中該TAG字段的大小是1位,但它可以多于2位。在該情況下,該NOT門85不得不由一個(gè)合適的邏輯塊取代以更新該TAG字段值。
圖4是在協(xié)議接口邏輯40中的存儲(chǔ)器地址塊45的目前優(yōu)選實(shí)施例的詳細(xì)方塊圖。寄存器90保持經(jīng)歷地址多路復(fù)用器91的14位存儲(chǔ)器地址。該多路復(fù)用器選擇信號(hào)MADS和該寄存器控制信號(hào)MADE在信號(hào)53上到達(dá)。當(dāng)MADS是零時(shí),該多路復(fù)用器91選擇由地址增量器92增加的地址。當(dāng)MADS是一時(shí),該多路復(fù)用器選擇在信號(hào)50上的一個(gè)存儲(chǔ)器地址DIN<13:0>。保持在寄存器90中的目前存儲(chǔ)器地址MAD<13:0>在信號(hào)55上送到DUV 30。
圖5是在協(xié)議接口邏輯40中的目前優(yōu)選的讀數(shù)據(jù)塊46的詳細(xì)方塊圖。三個(gè)寄存器讀數(shù)據(jù)RRD0<47:0>,RRD1<15:0>,和RRD2<31:0>在信號(hào)56上傳送到一個(gè)寄存器數(shù)據(jù)多路復(fù)用器93,其由信號(hào)53上的RRDS<1:0>控制。RRDS<1:0>的值0,1,和2分別選擇RRD0,RRD1和RRD2。兩個(gè)存儲(chǔ)器讀數(shù)據(jù)MRD0<39:0>和MRD<17:0>在信號(hào)56上送到存儲(chǔ)器數(shù)據(jù)多路復(fù)用器94,其由信號(hào)53上的MRDS控制。MRDS的值0和1分別選擇MRD0和MRD1。來自多路復(fù)用器93和94的數(shù)據(jù)送到另一個(gè)數(shù)據(jù)多路復(fù)用器95,其由一個(gè)選擇信號(hào)MRS所控制。MRS的值1和0分別選擇多路復(fù)用器93的輸出和多路復(fù)用器94的輸出。多路復(fù)用器95的輸出是在信號(hào)57上送到分組I/O塊41的最后讀數(shù)據(jù)。
圖6是由協(xié)議接口邏輯41解碼和執(zhí)行的目前優(yōu)選協(xié)議命令的圖表。如圖3所說明的,來自數(shù)據(jù)緩沖器21的儲(chǔ)存在輸入分組寄存器80中的一個(gè)請求分組被分到5個(gè)字段中。3位的CMD字段編碼7個(gè)命令。NOP(NOOperation)命令由CMD=0或1指定和不做任何事情但消耗至少一個(gè)時(shí)鐘周期。WR(Write Register)命令由CMD=2指定并寫入由寄存器ID或ID字段中的Rid以及DATA字段中的寫數(shù)據(jù)指定的目標(biāo)寄存器。RR(Read Register)命令由CMD=3指定,讀在由寄存器ID或ID字段中Rid指定的目標(biāo)寄存器中的數(shù)據(jù),并將其儲(chǔ)存在輸出分組寄存器84的DATA字段中。
SWM(Select Write Memorg)和WM(Write Memorg)命令用于將數(shù)據(jù)以連續(xù)模式加載到一個(gè)存儲(chǔ)器。該SWM命令由CMD=4指定并將ID字段中的存儲(chǔ)器ID或MID儲(chǔ)存到圖10的存儲(chǔ)器ID寄存器130中和將DATA字段中的開始地址儲(chǔ)存到圖4的存儲(chǔ)器地址寄存器90中。該SWM命令的執(zhí)行以存儲(chǔ)器寫模式賦予該協(xié)議接口邏輯40。該WM命令由CMD=5指定,并將DATA字段中的寫數(shù)據(jù)寫入到由存儲(chǔ)器ID寄存器130指示的目標(biāo)存儲(chǔ)器中;該目標(biāo)寫存儲(chǔ)器地址是儲(chǔ)存在存儲(chǔ)器地址寄存器90中的地址。當(dāng)該WM命令寫該最后數(shù)據(jù)于該目標(biāo)存儲(chǔ)器中時(shí),值一被賦予在該END字段中;否則,值零被賦予在該END字段中。當(dāng)該協(xié)議接口邏輯40處存儲(chǔ)器寫模式狀態(tài)時(shí),該WM命令僅僅是接受的和執(zhí)行的命令。該END字段的最后數(shù)據(jù)指示賦予該協(xié)議接口邏輯40塊返回正常的非-存儲(chǔ)器模式。
SRM(Select Read Memory)和RM(Read Memory)命令用于將數(shù)據(jù)以連續(xù)模式從一個(gè)存儲(chǔ)器下載該SRM命令由CMD=6指定并儲(chǔ)存ID字段中的存儲(chǔ)器ID或MID到存儲(chǔ)器ID寄存器130中和將DATA字段中的開始地址儲(chǔ)存到存儲(chǔ)器地址寄存器90中。該SRM命令的執(zhí)行以存儲(chǔ)器讀模式賦予該協(xié)議接口邏輯40。該RM命令由CMD=7指定并從由存儲(chǔ)器ID寄存器130指示的目標(biāo)存儲(chǔ)器讀數(shù)據(jù);該目標(biāo)讀存儲(chǔ)器地址是儲(chǔ)存在存儲(chǔ)器地址寄存器90中的地址。從該目標(biāo)存儲(chǔ)器單元讀出的數(shù)據(jù)儲(chǔ)存在輸出分組寄存器84的DATA字段中。當(dāng)該RM命令從該目標(biāo)存儲(chǔ)器讀該最后數(shù)據(jù)時(shí),值一被賦予在該END字段中;否則值零被賦予在該END字段中。當(dāng)該協(xié)議接口邏輯40處于存儲(chǔ)器讀模式狀態(tài)時(shí),該RM命令是僅僅接受和執(zhí)行的命令。該END字段的最后數(shù)據(jù)指示賦于該協(xié)議接口邏輯40塊返回正常的非-存儲(chǔ)器模式。
如圖4中所說明的,每個(gè)WM或RM命令的執(zhí)行使該存儲(chǔ)器地址遞增1。第一存儲(chǔ)器地址由該SWM或SRM命令儲(chǔ)存。在該SWR命令之后的第一WM命令寫入由儲(chǔ)存在存儲(chǔ)器地址寄存器90中的存儲(chǔ)器地址指示的存儲(chǔ)器單元,和第二WM命令寫入下一個(gè)存儲(chǔ)器單元,等等。類似地,在該SRM命令之后的第一RM命令讀由儲(chǔ)存在存儲(chǔ)器地址寄存器90中的存儲(chǔ)器地址指示的存儲(chǔ)器單元,該第二RM命令讀下一個(gè)存儲(chǔ)器單元,等等。
圖7是該協(xié)議接口邏輯40中的目前優(yōu)選的命令解碼塊43的詳細(xì)方塊圖。在信號(hào)50上的來自輸入分組寄存器80的CMD字段的CMD<2:0>送到解碼器100產(chǎn)生6個(gè)信號(hào),它們同信號(hào)83上的NEWIN相與以在AND門101產(chǎn)生WR命令信號(hào)CMDWR,在AND門102產(chǎn)生RR命令信號(hào)CMDRR,在AND門103產(chǎn)生SMW命令信號(hào)CMDSMW,在AND門104產(chǎn)生WN命令信號(hào)CMDWM,在AND門105產(chǎn)生SRM命令信號(hào)CMDSRM,以及在AND門106產(chǎn)生RM命令信號(hào)CMDRM命令信號(hào),所有在信號(hào)51上的信號(hào)被送到其他塊。
圖8是該協(xié)議接口邏輯40的狀態(tài)和狀態(tài)轉(zhuǎn)移圖。存在三個(gè)狀態(tài)NM(非-存儲(chǔ)器),MW(存儲(chǔ)器寫),和MR(存儲(chǔ)器讀)狀態(tài),分別由110,111,和112表示。當(dāng)模擬在該硬件加速器20上開始時(shí),協(xié)議接口邏輯40進(jìn)入NM狀態(tài)。執(zhí)行NOP,WR,和RR命令不改變狀態(tài)。在該NM狀態(tài)執(zhí)行SWM命令將NM狀態(tài)改變到MW狀態(tài)。執(zhí)行END=0時(shí)的WM命令和NOP命令不改變狀態(tài);執(zhí)行END=1時(shí)的WM命令將MW狀態(tài)改變到NM狀態(tài)。在NM狀態(tài)執(zhí)行SRM命令將NM狀態(tài)改變到MR狀態(tài)。執(zhí)行END=0時(shí)的RM命令和NOP命令不改變狀態(tài);執(zhí)行END=1時(shí)的RM命令將MR狀態(tài)改變到NM狀態(tài)。
圖9是該協(xié)議接口邏輯40中的目前優(yōu)選的狀態(tài)控制塊42的詳細(xì)方塊圖。目前狀態(tài)STATE儲(chǔ)存在狀態(tài)寄存器120中并送到狀態(tài)轉(zhuǎn)移控制121以產(chǎn)生返回儲(chǔ)存在該狀態(tài)寄存器120中的下一個(gè)狀態(tài)。輸入到該狀態(tài)轉(zhuǎn)移控制121的信號(hào)包括在信號(hào)51上的CMDSWM和CMDSRM,由在信號(hào)51上的CMDRM和在信號(hào)51上的END在AND門122相與產(chǎn)生的信號(hào),和在信號(hào)51上的CMDWM和在信號(hào)50上的END在AND門123相與產(chǎn)生的信號(hào)。該狀態(tài)轉(zhuǎn)移控制121實(shí)現(xiàn)在圖8中說明的狀態(tài)轉(zhuǎn)移。該目前狀態(tài)STATE在解碼器124解碼以產(chǎn)生在信號(hào)52上的三個(gè)狀態(tài)信號(hào)STATENM,STATEMW,和STATEMR。
圖10是在該協(xié)議接口邏輯40中的目前優(yōu)選的讀/寫控制塊44的詳細(xì)方塊圖。該讀/寫控制塊44從輸入信號(hào)50,52,和51產(chǎn)生輸出控制信號(hào)54,53,和86。在信號(hào)50上的來自輸入分組寄存器80的ID字段的ID<1:0>送到控制邏輯131和存儲(chǔ)器ID寄存器130。從該存儲(chǔ)器ID寄存器130輸出的MID也送到該控制邏輯131。該控制邏輯131由(CMDWR+CMDRR)*STATENM產(chǎn)生寄存器讀數(shù)據(jù)選擇信號(hào)REGS,由(CMDWR*STATENM*(ID=0)產(chǎn)生寄存器寫允許0信號(hào)RWE0,由CMDWR*STATENM*(ID=1)產(chǎn)生寄存器寫允許1信號(hào)RWE1,由CMDWR*STATENM*(ID=2)產(chǎn)生寄存器寫允許2信號(hào),由STATEMW+STATEMR產(chǎn)生存儲(chǔ)器讀數(shù)據(jù)選擇信號(hào)MEMS,由CMDWM*STATEWM*(MID=0)產(chǎn)生存儲(chǔ)器寫允許0信號(hào)MWE0,由CMDWM*STATEWM*(MID=1)產(chǎn)生存儲(chǔ)器寫允許1信號(hào)MWE1,由MEMS產(chǎn)生存儲(chǔ)器/寄存器選擇信號(hào)MRS,(CMDSWM+CMDSRM)*STATENM產(chǎn)生存儲(chǔ)器地址選擇信號(hào)MADS,由MEMS+MADS產(chǎn)生存儲(chǔ)器地址允許信號(hào)MADE,和由CMDRR*STATENM+CMDRM*STATEMR產(chǎn)生NOUT,這里“+”是邏輯OR操作符,“*”是邏輯AND操作符,和“=”是相等性操作符。來自該控制邏輯131的REGS,RWE0,RWE1,RWE2,MWE0,和MWE1在信號(hào)54上送到外部。來自該控制邏輯是131的MRS,MADS,和MADE在信號(hào)53上送到外部。來自該控制邏輯131的NOUT儲(chǔ)存在1位寄存器132中,從該寄存器132的輸出NEWOUT在信號(hào)86上送到外部。
圖11A是在該協(xié)議接口邏輯40中的執(zhí)行寄存器寫命令的示例性定時(shí)圖表。行140(CYCLE),141(NEWIN),142(CMD),143(DIN),和144(REG)分別表示時(shí)鐘周期,NEWIN信號(hào)值,命令,寫數(shù)據(jù),和目標(biāo)寄存器值。四個(gè)WR命令和寫數(shù)據(jù)A,B,C,和D分別在周期N,N+1,N+3,和N+4到達(dá)。該寫數(shù)據(jù)A,B,C,和D分別在周期N+1,N+2,N+4和N+5被儲(chǔ)存到目標(biāo)寄存器中。在該示例性定時(shí)圖表中假定執(zhí)行一個(gè)WR命令將耗費(fèi)一個(gè)周期。如果執(zhí)行一個(gè)WR命令耗費(fèi)二個(gè)或更多個(gè)周期,則要求一個(gè)簡單的控制邏輯中斷下一個(gè)命令的執(zhí)行,直到完成該WR命令的執(zhí)行。
圖11B是在協(xié)議接口邏輯40中的執(zhí)行寄存器讀命令的示例性定時(shí)圖表。行145(POUT)和146(TRANSFER)分別表示儲(chǔ)存在輸出分組寄存器84中的讀數(shù)據(jù)和從硬件加速器20轉(zhuǎn)移到主工作站10的數(shù)據(jù)。在周期N到達(dá)的命令RR從目標(biāo)寄存器讀數(shù)據(jù)A并在周期N+1將它儲(chǔ)存到輸出分組寄存器84的DATA字段中。在周期N+2數(shù)據(jù)轉(zhuǎn)移將在該輸出分組寄存器84中具有該寄存器數(shù)據(jù)的響應(yīng)分組經(jīng)由數(shù)據(jù)緩沖器21送到主工作站10。在周期N+3到達(dá)的RR命令將從目標(biāo)寄存器讀出數(shù)據(jù)B并在周期N+4將它儲(chǔ)存到該輸出分組寄存器84的DATA字段中。在周期N+5數(shù)據(jù)轉(zhuǎn)移將在該輸出分組寄存器84中的具有寄存器數(shù)據(jù)的響應(yīng)分組經(jīng)由數(shù)據(jù)緩沖器21送到主工作站10。在該示例性定時(shí)圖表中假定執(zhí)行一個(gè)RR命令耗費(fèi)一個(gè)周期。如果執(zhí)行一個(gè)RR命令耗費(fèi)兩個(gè)或更多個(gè)周期,則要求一個(gè)簡單控制邏輯中斷下一個(gè)命令的執(zhí)行,直到完成該RR命令的執(zhí)行。
儲(chǔ)存在輸出分組寄存器中的響應(yīng)分組的數(shù)據(jù)轉(zhuǎn)移由在主工作站10上運(yùn)行的驗(yàn)證控制程序11啟動(dòng)。在該示例性定時(shí)圖表中,為簡化而假定該驗(yàn)證控制程序11識(shí)別在送出一個(gè)RR命令之后何時(shí)啟動(dòng)該數(shù)據(jù)轉(zhuǎn)移以獲得讀數(shù)據(jù)。如果該驗(yàn)證控制程序無法識(shí)別何時(shí)啟動(dòng)該數(shù)據(jù)轉(zhuǎn)移,則它將不得不重復(fù)數(shù)據(jù)轉(zhuǎn)移操作,直到它接收一個(gè)具有不同于在先TAG定段值的TAG字段值的響應(yīng)分組為止,以表示該分組包括一個(gè)新的讀數(shù)據(jù)。由于該驗(yàn)證控制程序11優(yōu)先識(shí)別該協(xié)議接口邏輯在它執(zhí)行一個(gè)RR命令之后的一個(gè)周期能使該寄存器數(shù)據(jù)立即進(jìn)入該輸出分組寄存器84,它能在該RR命令之后送一個(gè)NOP命令和接著啟動(dòng)該數(shù)據(jù)轉(zhuǎn)移,使得該驗(yàn)證控制程序11能接收在該響應(yīng)分組中的寄存器數(shù)據(jù)?;蛘咴擈?yàn)證控制程序11還能送一個(gè)不具有更新TAG字段值的命令,其實(shí)際地等效于消耗至少一個(gè)時(shí)鐘周期并接著啟動(dòng)數(shù)據(jù)轉(zhuǎn)移的一個(gè)NOP命令。
圖11C是在該協(xié)議接口邏輯40中的連續(xù)模式存儲(chǔ)器寫操作的示例性定時(shí)圖表。行147(MAD)和148(MEM)分別表示該目標(biāo)存儲(chǔ)器的存儲(chǔ)器地址和數(shù)據(jù)。在周期N到達(dá)的SWM命令在周期N+1將第一寫存儲(chǔ)器地址10儲(chǔ)存到儲(chǔ)存器地址寄存器90。在周期N+1協(xié)議接口邏輯40進(jìn)入到存儲(chǔ)器寫模式。在周期N+1隨寫數(shù)據(jù)A第一WM命令到達(dá)。在周期N+1,該寫數(shù)據(jù)A被儲(chǔ)存在該目標(biāo)存儲(chǔ)器的存儲(chǔ)器單元10。在周期N+1存儲(chǔ)器地址遞增1,和在周期N+2更新的存儲(chǔ)器地址11被儲(chǔ)存到存儲(chǔ)器地址寄存器90。在周期N+2隨寫數(shù)據(jù)B到達(dá)的第二WM命令在周期N+2在目標(biāo)存儲(chǔ)器的存儲(chǔ)器單元11寫數(shù)據(jù)B。在周期N+3存儲(chǔ)器地址遞增1,和更新的存儲(chǔ)器地址12被儲(chǔ)存到存儲(chǔ)器地址寄存器90中。在周期N+4隨寫數(shù)據(jù)C到達(dá)的第三MW命令在周期N+4在目標(biāo)存儲(chǔ)器的存儲(chǔ)器單元12寫數(shù)據(jù)C。在周期N+4存儲(chǔ)器地址遞增1,和在周期N+5,更新的存儲(chǔ)器地址13儲(chǔ)存到存儲(chǔ)器地址寄存器90中。在該示例性定時(shí)圖表中,假定一個(gè)SWM命令執(zhí)行耗費(fèi)一個(gè)周期并使存儲(chǔ)器地址立即在下一周期進(jìn)入存儲(chǔ)器地址寄存器90。如果執(zhí)行一個(gè)SWM命令耗費(fèi)兩個(gè)或更多個(gè)周期,則要求一個(gè)簡單的控制邏輯去中斷下一命令的執(zhí)行直到完成該SWM命令的執(zhí)行為止。對(duì)一個(gè)WM命令保持相同的考慮。
圖11D是在該協(xié)議接口邏輯40中的連續(xù)模式存儲(chǔ)器讀操作的示例性定時(shí)圖表。在周期N到達(dá)的SRM命令在周期N+1將第一讀存儲(chǔ)器地址10儲(chǔ)存到存儲(chǔ)器地址寄存器90。在周期N+1該協(xié)議接口邏輯40進(jìn)入到存儲(chǔ)器讀模式。在周期N+1第一RM命令到達(dá)和在周期N+1從目標(biāo)存儲(chǔ)器的存儲(chǔ)器單元10讀數(shù)據(jù)A并將它儲(chǔ)存到輸出分組寄存器84的DATA字段中。在周期N+1存儲(chǔ)器地址遞增1,和在周期N+2儲(chǔ)存更新的存儲(chǔ)器地址11。在周期N+3數(shù)據(jù)轉(zhuǎn)移經(jīng)由數(shù)據(jù)緩沖器21將在輸出分組寄存器84中具有該存儲(chǔ)器數(shù)據(jù)的響應(yīng)分組送到主工作站10。類似地,在周期N+4到達(dá)第二RM命令從目標(biāo)存儲(chǔ)器的存儲(chǔ)單元11讀數(shù)據(jù)B并在周期N+5將它儲(chǔ)存在該輸出分組寄存器84的DATA字段中。在周期N+4存儲(chǔ)器地址遞增1,和在周期N+5儲(chǔ)存更新的存儲(chǔ)器地址12。在周期N+6數(shù)據(jù)轉(zhuǎn)移經(jīng)由數(shù)據(jù)緩沖器21將在輸出分組寄存器84中具有該存儲(chǔ)器數(shù)據(jù)的響應(yīng)分組送到主工作站10。在該示例性定時(shí)圖表中,假定執(zhí)行一個(gè)SRM命令占用一個(gè)周期并在下一周期使該存儲(chǔ)器地址立即進(jìn)入存儲(chǔ)器地址寄存器90。如果執(zhí)行一個(gè)SRM命令占用兩個(gè)或更多周期,則要求一個(gè)簡單控制邏輯去中斷下一命令的執(zhí)行,直到完成該SRM命令的執(zhí)行為止。對(duì)一個(gè)RM命令保持相同的考慮。再者,在該示例性定時(shí)圖表中,為簡單性假定該驗(yàn)證控制程序11識(shí)別何時(shí)在送一個(gè)RM命令之后啟動(dòng)該數(shù)據(jù)轉(zhuǎn)移得到每個(gè)存儲(chǔ)器數(shù)據(jù)。如果該驗(yàn)證控制程序11無法識(shí)別何時(shí)啟動(dòng)數(shù)據(jù)轉(zhuǎn)移得到在一個(gè)響應(yīng)分組中的一個(gè)有效存儲(chǔ)器數(shù)據(jù),則對(duì)一個(gè)RR命令所討論的選擇對(duì)一個(gè)RM命令也可利用。
圖12是表示用來產(chǎn)生協(xié)議接口邏輯的編輯-時(shí)間步驟的流程圖。在150處理開始。第一步驟151編輯寫在一個(gè)或多個(gè)HDL或硬件說明語言文件中的目標(biāo)設(shè)計(jì)以產(chǎn)生該目標(biāo)設(shè)計(jì)的基本表格(netlist)。第二步驟152校驗(yàn)151產(chǎn)生的基本表格中的寄存器和存儲(chǔ)器的大小并基于該寄存器和存儲(chǔ)器的大小計(jì)算協(xié)議字段大小。第三步驟153綜合用于該目標(biāo)設(shè)計(jì)的協(xié)議接口邏輯并將其附加到該基本表格。在154處理結(jié)束。
圖13是圖12中步驟152的詳細(xì)流程圖,以便根據(jù)該目標(biāo)設(shè)計(jì)的基本表格計(jì)算該協(xié)議字段的大小。在160處理開始。步驟161調(diào)用CountNumOfRegs功能以求得在該基本表格中表示成變量“Nr”的寄存器數(shù)并分配一個(gè)唯一的識(shí)別符到每個(gè)寄存器。步驟162調(diào)用CountNumOfMems功能以求得在該基本表格中表示成變量“Nm”的存儲(chǔ)器數(shù)并分配一個(gè)唯一的識(shí)別符到每個(gè)存儲(chǔ)器。步驟163調(diào)用“max”功能比較Nr和Nm值并分配該較大的值到變量Ns。步驟164調(diào)用具有由用Ns值調(diào)用的log2功能返回的結(jié)果的“Ceil”功能計(jì)算表示Ns最大值所要求的位數(shù)并將它分配到變量Nsl,步驟165調(diào)用“findWidestRegData”功能求得在該基本表格中最寬寄存器數(shù)據(jù)的位數(shù)并將它分配到變量“Rd”。步驟166調(diào)用“findWidestMemData”功能求得在該基本表格中最寬存儲(chǔ)器數(shù)據(jù)的位數(shù)并將它分配到變量“Md”。步驟167調(diào)用“findWidestMemAddress”功能求得在該基本表格中最寬存儲(chǔ)器地址的位數(shù)并將它分配到變量“Ma”。步驟168調(diào)用“max”功能比較Rd,Md和Ma值并將最大值分配到變量Nd。步驟169分配1到變量sizeTag用于TAG字段尺寸,分配3到變量sizeCmd用于CMD字段尺寸,分配1到變量sizeEnd用于END字段尺寸,分配Nsl值到sizeId用于ID字段尺寸,和分配Nd值到變量sizeData用于DATA字段尺寸。在170處理結(jié)束。
當(dāng)應(yīng)用圖2A和2B中所說明的示例性DUV 30時(shí),如圖3中所說明的那樣分別計(jì)算Nr=3,Nm=2,Ns=3,Nsl=2,Rd=48,Md=40,Ma=14,和Nd=48,和設(shè)置ID和DATA字段大小到2和48位。
圖14是圖12的步驟153的詳細(xì)的流程圖,其構(gòu)造一個(gè)協(xié)議接口邏輯的組成部分。在171處理開始。步驟172調(diào)用具有“Nsl”和“Nd”值的“CreatePacketIoBlock”功能產(chǎn)生如圖3所說明的分組I/O塊41。Nsl和Nd的值確定了輸入和輸出分組寄存器80和84的大小以及ID和DATA字段信號(hào)50和57的數(shù)量。步驟173調(diào)用“CreateCommandDecodeBlock”功能產(chǎn)生如圖7中所示的命令解碼塊43。該塊43與DUV無關(guān)。步驟174調(diào)用“CreateStateControlBlock”功能產(chǎn)生如圖8和9中所說明的狀態(tài)控制塊42。該塊42也與DUV無關(guān)。步驟175調(diào)用具有Ma值的“CreateMemoryAddressBlock”功能產(chǎn)生如圖4中所說明的存儲(chǔ)器地址塊45。Ma值確定了存儲(chǔ)器地址寄存器90的大小。步驟176調(diào)用具有Nd值的“CreateReadDataBlock”功能產(chǎn)生如圖5所示的讀數(shù)據(jù)塊46。Nd值確定了從寄存器和存儲(chǔ)器的讀數(shù)據(jù)57的最大尺寸。步驟177調(diào)用具有Nsl,Nr,和Nm的值的“CreateReadWriteControlBlock”功能產(chǎn)生如圖10中說明的讀/寫控制塊44。Nsl的值確定了ID信號(hào)50的數(shù)和存儲(chǔ)器ID寄存器130的大小。Nr和Nm的值分別確定了寄存器寫允許信號(hào)的數(shù)和存儲(chǔ)器寫允許信號(hào)的數(shù)。步驟178調(diào)用“modifyRegBlockInDuv”功能以附加數(shù)據(jù)和控制多路復(fù)用器(參見例如圖2A中的61,62,63,64,65,66,67)到DUV中的寄存器,只要在該DUV中存在至少一個(gè)寄存器。如圖2A所說明的,附加到DUV的多路復(fù)用器允許該協(xié)議接口邏輯能直接訪問DUV中的任一寄存器,步驟179調(diào)用“modifyMemBlockInDuv”功能以附加數(shù)據(jù)和控制多路復(fù)用器(參見例如圖2B中的71,72,73,75,76,77)到DUV中的存儲(chǔ)器,只要在該DUV中存在至少一個(gè)存儲(chǔ)器。如圖2B所說明的附加的多路復(fù)用器允許該協(xié)議接口邏輯能直接訪問DUV中的任一存儲(chǔ)器。在步驟180處理結(jié)束。
圖15是模擬DUV和綜合用于該DUV的協(xié)議接口邏輯操作的典型的運(yùn)行時(shí)間序列的流程圖。在190處理開始。在步驟191編輯的DUV加載到硬件加速器20。在步驟192建立與DUV的通信頻道14。在步驟193初始數(shù)據(jù)加載到該DUV的寄存器和存儲(chǔ)器中。在步驟194該DUV對(duì)大量周期進(jìn)行模擬。在步驟195該模擬結(jié)果從該寄存器和存儲(chǔ)器下載。在步驟196對(duì)照期望值校驗(yàn)?zāi)M結(jié)果。在步驟197處理結(jié)束。在步驟193和195用在此公開的該協(xié)議接口邏輯40訪問DUV中的寄存器和存儲(chǔ)器??纱嬖谀承┣闆r,即在該DUV中的某些寄存器和存儲(chǔ)器在步驟194的模擬期間被訪問。
圖16-18表示用C編程語言寫的碼本(code listing),具有某些忽略的本地變量說明。該C編程語言是廣泛用于開發(fā)軟件的已知的編程語言。例如它在由B.W.Kernighan和D.M.Ritchie編寫的由Prentice Hall于1988年出版的“The C Programning Language(2ndedition)”中描述。在下列碼本解釋中,只用于更好可讀性的空格行不加陳述。
圖16是用于描述具有協(xié)議接口邏輯的操作的主要常數(shù),變量,和功能的定義和說明的碼本。行1-7定義七個(gè)常數(shù)CMD_NOP,CMD_WR,CMD_RR,CMD_SWM,CMD_WM,CMD_SRM,和CMD_RM,分別用于七個(gè)協(xié)議命令NOP(No Operation),WR(Write Register),RR(Read Register),SWM(Select Writc Memory),WM(Write Mamory),SRM(Select Read Memory),和RM(Read Memory)。行10定義“uint”為“unsigned int.”,行11和12說明“int”變量“sizeId”和“sizeData”以分別保持響應(yīng)分組的ID和DATA字段的大小。行14和15說明具有初始值零的“uint”變量“tagOut”和tagIn”以分別保持用于輸出和輸入分組的TAG值。行17和18說明“uint”指針變量“packet Out”和“packetIn”以分別保持對(duì)請求和響應(yīng)分組的指針。
行20-25說明六個(gè)外部的實(shí)用功能。行20說明返回不具有四個(gè)變元的值的Put_bits功能,以便將該數(shù)據(jù)位放到目標(biāo)分組中voidput_bits(uint*packet,int pos,int size,uint data),這里“packet”是指向目標(biāo)分組的指針,“POS”是在該目標(biāo)分組中數(shù)據(jù)的第一位的位置,“size”是拷貝的數(shù)據(jù)位的數(shù),和“data”保持拷貝的數(shù)據(jù)位。行21說明返回不具有四個(gè)變元的值的get_bits功能,以便從該目標(biāo)分組得到該數(shù)據(jù)位voidget_bits(uint*packet,int pos,int size,uint*data),這里“packet”是指向目標(biāo)分組的指針,“pos”是在該目標(biāo)分組中的數(shù)據(jù)位的第一位的位置,“size”是拷貝的數(shù)據(jù)位的數(shù),和“data”保持來自該目標(biāo)分組的數(shù)據(jù)位。行22說明返回不具有兩個(gè)變元的值的Copy_to_dbuff功能,以便拷貝一個(gè)分組到主工作站中的數(shù)據(jù)緩沖器中voidcopy_to_dbuff(int size,uint*packet),這里“size”是在該分組中拷貝的總位數(shù)和“packet”是指向保持該分組位的位置的指針。行23說明返回不具有兩個(gè)變元的值的copy_from_dbuff功能,以便從該主工作站中的數(shù)據(jù)緩沖器拷貝一個(gè)分組voidcopy_from_dbuff(int size,uint*packet),這里“size”是在該分組中拷貝的總位數(shù)和“packet”是指向保持該拷貝的分組數(shù)據(jù)的位置的指針。行24說明返回不具有一個(gè)變化的值的transfer_to_haccel功能,以便將在該主工作站的數(shù)據(jù)緩沖器中的一個(gè)分組轉(zhuǎn)移到該硬件加速器voidtransfer_to_hacce(int size),這里“size”是在該分組中轉(zhuǎn)移的總位數(shù),行25說明返回不具有一個(gè)變元的值的transfer_from_haccel功能,以便將來自該硬件加速器的一個(gè)分組轉(zhuǎn)移到該主工作站中的數(shù)據(jù)緩沖器voidtransfer_from_hacce(int size),這里“size”是在該分組中轉(zhuǎn)移的總位數(shù)。
為簡化性假定數(shù)據(jù)位的最大數(shù)等于或小于32。如果大于32,則該put-bits功能的四個(gè)變元數(shù)據(jù)應(yīng)當(dāng)是指向保持該數(shù)據(jù)位的一個(gè)uint陣列的一個(gè)指針。類似地,該get_bits功能的四個(gè)變元數(shù)據(jù)應(yīng)當(dāng)是指向保持該數(shù)據(jù)位的一個(gè)陣列的一個(gè)指針。在下列碼段(code fragment)中,為簡化性還假定數(shù)據(jù)位的最大數(shù)等于或小于32。如果大于32,對(duì)該代碼必須進(jìn)行某些改變。但是對(duì)于那些本專業(yè)技術(shù)人員而言這是不困難的任務(wù)。
圖17是送一個(gè)請求分組到該協(xié)議接口邏輯和從其接收一個(gè)響應(yīng)分組兩功能的碼本。行30-41定義返回不具有五個(gè)變元的值的SendPacket功能,以便送一個(gè)請求分組到該硬件加速器void sendPacket(uint cmd,uint end,uint id,int ds,uint data),這里“cmd”是CMD字段值,其是在圖16中行1-7處定義的七個(gè)命令常數(shù)之一,“end”是ENd字段位指示該分組是否為最后存儲(chǔ)器訪問命令,“id”是ID字段值指示目標(biāo)寄存器/存儲(chǔ)器ID,“ds”是傳送的數(shù)據(jù)位數(shù),“data”保持傳送的數(shù)據(jù)位。行32通過附加5(用于TAG,CMD,和END字段的總位數(shù)),值“sizeId”,和“ds”值計(jì)算請求分組的總位數(shù)并將其分配到一個(gè)變量“ps”。行33反相“tagOut”的一位值并將它返回儲(chǔ)存到用于該請求分組的“tagOut”。行34調(diào)用put_bits(packetOut,0,1,tagOut),以拷貝“tagOut”的值到由“packetOut”指向的請求分組的TAG字段中。行35調(diào)用put_bits(packetOut,1,3,cmd),以拷貝“cmd”值到由“packetOut”指向的請求分組的CMD字段中。行36調(diào)用put_bits(packetOut,4,1,end),以拷貝“end”的值到由“packetOut”指向的請求分組的ENd字段中。行37調(diào)用put_bits(packetOut,5,sizeId,id),以拷貝“id”值到由“packetOut”指向的請求分組的ID字段中。行38調(diào)用put_bits(packetOut,5+sizeId,ds,data),以拷貝“data”中的數(shù)據(jù)位到由“packetOut”指向的請求分組的DATA字段中。行39調(diào)用copy_to_dbuff(ps,packetOut),以拷貝由“packetOut”指向的請求分組到主工作站的數(shù)據(jù)緩沖器。行40調(diào)用transfer_to_hacce(ps)以便將該請求分組從該主工作站的數(shù)據(jù)緩沖器轉(zhuǎn)移到該硬件加速器。
行43-54定義返回不具有兩個(gè)變元的receivePacket功能,以便從硬件加速器接收具有數(shù)據(jù)的響應(yīng)分組void receivePacket(int ds,uint*data),這里“ds”是在一個(gè)響應(yīng)分組中的總位數(shù)和“data”是指向保持該響應(yīng)分組數(shù)據(jù)位的位置的指針。行45通過附加5,sizeId值,和“ds”值計(jì)算該響應(yīng)分組的總位數(shù)并將它分配到變量“ps”。行46-51編碼一個(gè)“while”循環(huán)以從該硬件加速器讀取一個(gè)有效響應(yīng)分組。行47調(diào)用transfer_from_haccel(ps)將一個(gè)分組從該硬件加速器轉(zhuǎn)移到主工作站中的數(shù)據(jù)緩沖器。行48調(diào)用copy_from_dbuff(ps,packet In),以拷貝一個(gè)分組從該數(shù)據(jù)緩沖器到由“packetIn”指向的位置。行49調(diào)用get_bits(packetIn,0,1,&tag),以提取該分組的TAG字段值并將其儲(chǔ)存在變量“tag”中。行50相對(duì)“tagIn”值比較“tag”值,該“tagIn”值儲(chǔ)存在先的“tag”值并離開“while”循環(huán),只要這兩值是不相同的,從而意味著該接收的分組是新的且有效;否則,該操作在行47-50重復(fù)。行52將該新“tag”值儲(chǔ)存到“tagIn”中。行53調(diào)用get_bits(packet In,5+sizeId,ds,data)以提取該響應(yīng)分組的DATA字段中的數(shù)據(jù)位并將它們儲(chǔ)存到由“data”變量指向的位置中。
圖18是四個(gè)功能的碼本writeReg,readReg,writeMem,和readMem。行60-63定義返回不具有三個(gè)變元的值的writeReg功能void writeReg(uint rid,int ds,uint data),這里“rid”是目標(biāo)寄存器ID,“ds”是寫的數(shù)據(jù)位數(shù),而“data”保持寫的數(shù)據(jù)位。在行62,該writeReg功能調(diào)用sendPacket(CMD_WR,O,rid,ds,data)以便送具有該數(shù)據(jù)位的一個(gè)RW命令分組寫。行65-69定義返回不具有三個(gè)變元的值的readReg功能void readReg(uint rid,int ds,uint data),這里“rid”是目標(biāo)寄存器ID,“ds”是讀的位數(shù),而“data”保持從該目標(biāo)寄存器讀的數(shù)據(jù)位。在行67該readReg功能調(diào)用sendPacket(CMD_RR,O,rid,O,Null)送不具有數(shù)據(jù)的一個(gè)RR命令分組和在行68調(diào)用receivePackt(ds,data)從該目標(biāo)寄存器讀該數(shù)據(jù)位。
行71-80定義返回不具有六個(gè)變元的writeMem功能void write Mem(uint mid,int as,uint start,int nw,int ds,uint*data),這里“mid”是目標(biāo)存儲(chǔ)器ID,“as”是存儲(chǔ)器地址位數(shù),“start”是開始存儲(chǔ)器地址,“nw”是寫的存儲(chǔ)器字的數(shù),“ds”是每個(gè)存儲(chǔ)器字的位數(shù),和“data”是指向保持該存儲(chǔ)器字寫的陣列的指針。在行74,該writeMem功能調(diào)用sendPacket(CMD_SWM,O,mid,as,start)送具有目標(biāo)存儲(chǔ)器ID和開始存儲(chǔ)器地址的一個(gè)SWM命令。在行75,在設(shè)置初始值零到變量“end”之后,在行76-79該writeMem功能進(jìn)入到一個(gè)“for”循環(huán),以便在行77-78重復(fù)該操作用于寫的存儲(chǔ)器字?jǐn)?shù)。行77設(shè)置值一到該變量“end”,只要第i次迭代是最后的一次。行78調(diào)用sendPacket(CMD_WM,O,end,ds,data[i])從該數(shù)據(jù)陣列的第i個(gè)元素送具有該存儲(chǔ)器字的一個(gè)WM命令。
行82-92定義返回不具有六個(gè)變元的readMem功能void read Mem(uint mid,int as,uint start,int nw,int ds,uint*data),這里“mid”是目標(biāo)存儲(chǔ)器ID,“as”是地址位數(shù),“start”是開始存儲(chǔ)器地址,“nw”是讀的存儲(chǔ)器字?jǐn)?shù),“ds”是每個(gè)存儲(chǔ)器字的位數(shù),和“data”是指向保持從目標(biāo)存儲(chǔ)器讀出的存儲(chǔ)器字的陣列的指針。在行85,該readMem功能調(diào)用sendPacket(CMD_SRM,O,mid,as,start)送具有目標(biāo)存儲(chǔ)器ID和開始存儲(chǔ)器地址的一個(gè)SRM命令。在行86設(shè)置初始值零到變量“end”后,在行87-91該readMem功能進(jìn)入“for”循環(huán),以便在行88-90重復(fù)該操作用于讀的存儲(chǔ)器字?jǐn)?shù)。行88設(shè)置值一到變量“end”,只要第i次迭代是最后的一次。行89調(diào)用sendPacket(CMD_RM,O,end,ds,data[i])送一個(gè)RM命令從該目標(biāo)存儲(chǔ)器的讀該第i個(gè)存儲(chǔ)器字。行90調(diào)用receivePacket(ds,&data[i])接收該第i個(gè)存儲(chǔ)器字并將它儲(chǔ)存到該數(shù)據(jù)陣列的第i個(gè)元素中。
概括地,已提供了一個(gè)硬件輔助的驗(yàn)證系統(tǒng),其大大地改善了對(duì)一個(gè)用戶的經(jīng)受功能驗(yàn)證的設(shè)計(jì)的存儲(chǔ)器和寄存器的訪問。某些實(shí)施例使用基于分組的協(xié)議執(zhí)行主工作站和硬件加速器之間的數(shù)據(jù)轉(zhuǎn)移以便從該目標(biāo)DUV中的寄存器和存儲(chǔ)器加載和下載數(shù)據(jù)。該協(xié)議與一個(gè)協(xié)議接口邏輯相關(guān),而該邏輯在編輯時(shí)間用該目標(biāo)DUV中寄存器和存儲(chǔ)器大小參數(shù)綜合并在運(yùn)行時(shí)間用該目標(biāo)DUV模擬。該綜合的協(xié)議接口邏輯根據(jù)在主工作站運(yùn)行的驗(yàn)證控制程序解碼在一個(gè)請求分組中編碼的請求命令并執(zhí)行它。只要該請求命令是一個(gè)讀命令,則它將送在一個(gè)響應(yīng)分組中的數(shù)據(jù)到該主工作站。
本發(fā)明的一個(gè)示例性實(shí)施例已對(duì)如在圖2A和2B中所示的具有三個(gè)寄存器和兩個(gè)存儲(chǔ)器的示例性DUV詳細(xì)地作了公開,那些本專業(yè)技術(shù)人員將理解在本發(fā)明的精神范圍內(nèi)可實(shí)踐多種修改和變型。這樣,在已描述最佳方法和設(shè)備的同時(shí),如對(duì)那些本專業(yè)技術(shù)人員所顯見的那樣,可能有更多的實(shí)施例和應(yīng)用而不脫離在此公開的創(chuàng)造性的概念。因此除附加的權(quán)利要求的精神外本發(fā)明不受限制。
權(quán)利要求
1.一種為讀和寫而用于編輯一個(gè)用戶的設(shè)計(jì)以允許對(duì)在該用戶的設(shè)計(jì)中的存儲(chǔ)器和寄存器更大量訪問的方法,包括識(shí)別在該用戶的設(shè)計(jì)中的所有存儲(chǔ)器和寄存器;綜合可訪問性邏輯于該用戶的設(shè)計(jì)中,所說訪問性邏輯產(chǎn)生對(duì)該存儲(chǔ)器和寄存器的訪問端口。
2.權(quán)利要求1的方法還包括分配一個(gè)唯一的識(shí)別符到該用戶的設(shè)計(jì)中的每個(gè)存儲(chǔ)器和寄存器的步驟。
3.權(quán)利要求2的方法,其中所說可訪問性邏輯包括選擇邏輯,所說選擇邏輯適于接收所說唯一識(shí)別符并選擇該用戶的設(shè)計(jì)中的存儲(chǔ)器和寄存器的特定的一個(gè)。
4.權(quán)利要求3的方法,其中所說可訪問性邏輯包括從該用戶的設(shè)計(jì)中的存儲(chǔ)器和寄存器的所說特定的一個(gè)讀或向其寫的邏輯。
5.權(quán)利要求4的方法,其中所說可訪問性邏輯包括譯碼邏輯,其從一個(gè)主機(jī)接收命令并控制執(zhí)行對(duì)該用戶的設(shè)計(jì)中的存儲(chǔ)器和寄存器的讀和寫數(shù)據(jù)。
6.一個(gè)用于驗(yàn)證一個(gè)目標(biāo)設(shè)計(jì)的硬件輔助設(shè)計(jì)驗(yàn)證系統(tǒng),所說驗(yàn)證系統(tǒng)具有與一個(gè)硬件加速器通信的一個(gè)主工作站,該目標(biāo)設(shè)計(jì)包括寄存器和存儲(chǔ)器,該主工作站加載數(shù)據(jù)到該寄存器和存儲(chǔ)器或從其下載數(shù)據(jù),包括綜合到該邏輯電路中的協(xié)議邏輯,所說協(xié)議邏輯包括一個(gè)輸入分組寄存器,與所說主工作站通信;一個(gè)輸出分組寄存器,與所說主工作站通信;命令解碼邏輯,所說命令解碼邏輯解碼在所說輸入分組寄存器中的一個(gè)命令,以識(shí)別在所說目標(biāo)設(shè)計(jì)中的一個(gè)特定操作,寄存器或存儲(chǔ)器單元;寫命令執(zhí)行邏輯,寫儲(chǔ)存在所說輸入分組寄存器中的數(shù)據(jù)到在所說目標(biāo)設(shè)計(jì)中的所說寄存器或存儲(chǔ)器單元中用于在所說命令解碼邏輯中解碼的一個(gè)寫命令;讀命令執(zhí)行邏輯,從所說目標(biāo)設(shè)計(jì)中的所說寄存器或存儲(chǔ)器單元讀數(shù)據(jù)并儲(chǔ)存所說數(shù)據(jù)于所說輸出分組寄存器中用于在所說命令解碼邏輯中解碼的一個(gè)讀命令;以及接口邏輯,接口在所說目標(biāo)設(shè)計(jì)中的所說寄存器和存儲(chǔ)器。
7.權(quán)利要求6的硬件輔助設(shè)計(jì)驗(yàn)證系統(tǒng),其中所說協(xié)議邏輯包括確定來自所說輸入分組寄存器的數(shù)據(jù)是否為新的以及控制激活命令譯碼和執(zhí)行。
8.一種綜合基于分組的協(xié)議邏輯的方法,當(dāng)使用一個(gè)硬件加速器執(zhí)行功能驗(yàn)證時(shí)用于提供對(duì)在一個(gè)目標(biāo)設(shè)計(jì)中的寄存器和存儲(chǔ)器訪問,包括確定一個(gè)請求分組的固定尺寸,所說請求分組包括標(biāo)記,命令,和數(shù)據(jù)終止字段;計(jì)算在該目標(biāo)設(shè)計(jì)中存在多少寄存器;計(jì)算在該目標(biāo)設(shè)計(jì)中存在多少存儲(chǔ)器;確定所說請求分組的一個(gè)最大識(shí)別字段尺寸;確定在該目標(biāo)設(shè)計(jì)中該寄存器的一個(gè)最大數(shù)據(jù)位數(shù);確定在該目標(biāo)設(shè)計(jì)中該存儲(chǔ)器的一個(gè)最大數(shù)據(jù)位數(shù);確定在該目標(biāo)設(shè)計(jì)中該存儲(chǔ)器的一個(gè)最大地址位數(shù);確定一個(gè)最大位數(shù),送該寄存器數(shù)據(jù),存儲(chǔ)器數(shù)據(jù),和存儲(chǔ)器地址到該目標(biāo)設(shè)計(jì)以確定所說請求分組的數(shù)據(jù)字段大小。
9.權(quán)利要求8的方法,進(jìn)一步包括步驟產(chǎn)生連接到該硬件加速器中的一個(gè)輸入數(shù)據(jù)緩沖器的一個(gè)輸入分組寄存器;產(chǎn)生連接到該硬件加速器中的一個(gè)輸出數(shù)據(jù)緩沖器的一個(gè)輸出分組寄存器;產(chǎn)生一個(gè)命令解碼塊以解碼在所說輸入分組寄存器中的一個(gè)命令;產(chǎn)生一個(gè)執(zhí)行邏輯以執(zhí)行在所說解碼塊中解碼的一個(gè)命令;以及產(chǎn)生接口邏輯,以訪問在所說目標(biāo)設(shè)計(jì)中的寄存器和存儲(chǔ)器。
10.權(quán)利要求9的方法,進(jìn)一步包括步驟產(chǎn)生一個(gè)存儲(chǔ)器識(shí)別寄存器,以識(shí)別在目標(biāo)設(shè)計(jì)中的存儲(chǔ)器;產(chǎn)生一個(gè)存儲(chǔ)器地址寄存器,以提供一個(gè)目前存儲(chǔ)器地址用于訪問;在執(zhí)行一個(gè)存儲(chǔ)器讀命令或一個(gè)存儲(chǔ)器寫命令之后遞增所說目前存儲(chǔ)器;產(chǎn)生一個(gè)有限狀態(tài)機(jī)器指示該基于分組的協(xié)議邏輯是處于非存儲(chǔ)器模式,連續(xù)存儲(chǔ)器寫模式,或連續(xù)存儲(chǔ)器讀模式;以及產(chǎn)生一個(gè)狀態(tài)轉(zhuǎn)換控制,當(dāng)所說連續(xù)存儲(chǔ)器操作終止時(shí)其選擇所說非存儲(chǔ)器模式,當(dāng)所說連續(xù)存儲(chǔ)器寫操作啟動(dòng)時(shí),所說狀態(tài)轉(zhuǎn)換控制進(jìn)而選擇所說連續(xù)存儲(chǔ)器寫模式,當(dāng)所說連續(xù)存儲(chǔ)器讀操作啟動(dòng)時(shí),所說狀態(tài)轉(zhuǎn)換控制進(jìn)而選擇所說連續(xù)存儲(chǔ)器讀模式。
全文摘要
提供增加用戶的設(shè)計(jì)中的寄存器和存儲(chǔ)器的可訪問性的一個(gè)系統(tǒng),該用戶的設(shè)計(jì)經(jīng)歷在一個(gè)硬件輔助設(shè)計(jì)驗(yàn)證系統(tǒng)中的功能驗(yàn)證。使用一個(gè)基于分組的協(xié)議執(zhí)行在一個(gè)主工作站和硬件加速器之間的數(shù)據(jù)傳輸操作,以便在邏輯模擬期間向在目標(biāo)驗(yàn)證下設(shè)計(jì)(DUV)中的該寄存器和存儲(chǔ)器加載數(shù)據(jù)和由其下載數(shù)據(jù)。該方法和設(shè)備綜合接口邏輯到該DUV中以對(duì)在該目標(biāo)DUV中的寄存器和存儲(chǔ)器提供更多的訪問,該DUV是在該硬件加速器的輔助之下進(jìn)行模擬的。
文檔編號(hào)G06F17/50GK1543618SQ01820983
公開日2004年11月3日 申請日期2001年10月19日 優(yōu)先權(quán)日2000年10月20日
發(fā)明者T·奧卡米, T 奧卡米 申請人:快速轉(zhuǎn)動(dòng)設(shè)計(jì)系統(tǒng)公司