新聞中心

EEPW首頁(yè) > 汽車電子 > FPGA設(shè)計(jì)的驗(yàn)證技術(shù)及應(yīng)用原則

FPGA設(shè)計(jì)的驗(yàn)證技術(shù)及應(yīng)用原則

——
作者: 時(shí)間:2007-04-25 來源: 收藏
設(shè)計(jì)和工程師當(dāng)今面臨的最大挑戰(zhàn)之一是時(shí)間和資源制約。隨著在速度、密度和復(fù)雜性方面的增加,完成一個(gè)完整時(shí)序對(duì)人力和計(jì)算機(jī)處理器、存儲(chǔ)器提出了更多更高的要求。

  隨著器件體積和復(fù)雜性的不斷增加,設(shè)計(jì)工程師越來越需要有效的方。時(shí)序仿真可以是一種能發(fā)現(xiàn)最多問題的驗(yàn)證方法,但對(duì)許多設(shè)計(jì)來說,它常常是最困難和費(fèi)時(shí)的方法之一。過去,采用標(biāo)準(zhǔn)臺(tái)式計(jì)算機(jī)的時(shí)序仿真是以小時(shí)或分鐘計(jì)算的,但現(xiàn)在對(duì)某些項(xiàng)目來說,在要求采用高性能64位服務(wù)器的情況下,其測(cè)試時(shí)間卻要幾天甚至幾周。這樣,這種方法首先消弭了采用FPGA帶來的上市時(shí)間和實(shí)施成本方面的好處。

  FPGA設(shè)計(jì)和驗(yàn)證工程師當(dāng)今面臨的最大挑戰(zhàn)之一是時(shí)間和資源制約。隨著FPGA在速度、密度和復(fù)雜性方面的增加,為完成一個(gè)完整時(shí)序驗(yàn)證,不僅對(duì)人力也對(duì)計(jì)算機(jī)處理器和存儲(chǔ)器提出了更多更高的要求。另外,對(duì)設(shè)計(jì)和驗(yàn)證工程師來說(許多情況可能是同一個(gè)人),這為在更短的時(shí)限內(nèi),以更大信心對(duì)當(dāng)今的FPGA設(shè)計(jì)在第一次就可實(shí)施徹底成功驗(yàn)證提出了更艱巨的挑戰(zhàn)。

  時(shí)序仿真的重要性

  為確保設(shè)計(jì)可以工作及能連續(xù)穩(wěn)定工作,當(dāng)今的FPGA既需要功能又需要時(shí)序仿真。FPGA設(shè)計(jì)的復(fù)雜性在增加,而傳統(tǒng)的驗(yàn)證方法論又不再有效。過去,在FPGA設(shè)計(jì)流中,模擬并非一個(gè)重要階段。但眼下,卻成為最關(guān)鍵的步驟之一。當(dāng)采用類似Xilinx的Virtex-5 FPGA Family等更先進(jìn)FPGA設(shè)計(jì)時(shí),時(shí)序仿真就變得尤其重要。

  傳統(tǒng)的FPGA驗(yàn)證方法是:

  1.功能模擬

  在驗(yàn)證過程中,功能模擬是個(gè)非常重要的部分,但不應(yīng)是唯一部分。當(dāng)進(jìn)行功能模擬時(shí),它只對(duì)RTL設(shè)計(jì)的功能性進(jìn)行測(cè)試。它不包括任何時(shí)序信息,它也不考慮由實(shí)現(xiàn)和優(yōu)化對(duì)原初設(shè)計(jì)造成的改變。


  2. 靜態(tài)時(shí)序分析/形式驗(yàn)證

  許多工程師認(rèn)為為校驗(yàn)設(shè)計(jì)是否滿足時(shí)序要求,只需進(jìn)行靜態(tài)時(shí)序分析。將此作為唯一時(shí)序分析方法有很多缺陷。靜態(tài)分析無法發(fā)現(xiàn)當(dāng)設(shè)計(jì)動(dòng)態(tài)運(yùn)行時(shí),才能發(fā)現(xiàn)的任何問題。靜態(tài)分析僅能顯示該設(shè)計(jì)作為整體是否可滿足設(shè)置和保持要求且一般僅達(dá)到施加的時(shí)序約束的水平。在實(shí)際系統(tǒng)中,動(dòng)態(tài)因素可造成FPGA的時(shí)序違規(guī)。例子之一是塊RAM(Block Ram)沖突。在FPGA器件中,隨著雙端口塊RAM(Dual Port Block Rams)的引入,應(yīng)留心避免同時(shí)讀/寫同一個(gè)區(qū)域,否則,讀取的數(shù)據(jù)會(huì)不正確。靜態(tài)分析工具將永遠(yuǎn)無法發(fā)現(xiàn)該問題。類似,若有被誤讀的時(shí)間規(guī)范(timespec),靜態(tài)時(shí)序分析也將難以發(fā)現(xiàn)此問題。

  3. 在系統(tǒng)測(cè)試

  實(shí)際上,每位工程師都依賴該方法進(jìn)行最終測(cè)試。若設(shè)計(jì)能在板上工作且通過了各種測(cè)試,則該設(shè)計(jì)就將被發(fā)布。這肯定是個(gè)非常好的測(cè)試,但它也許沒能發(fā)現(xiàn)全部問題。有時(shí),在一些邊界情況(corner-case)被發(fā)現(xiàn)前,設(shè)計(jì)需運(yùn)行相當(dāng)長(zhǎng)的時(shí)間。諸如時(shí)序違約等問題并非在所有芯片中都以相同方式顯露出來。當(dāng)發(fā)現(xiàn)這些問題時(shí),設(shè)計(jì)通常已交到用戶手中。這意味著為找出此問題所導(dǎo)致的高成本、停工期和挫折感。為能正確完成在系統(tǒng)測(cè)試,必須清除全部硬件故障,其中包括與SSO相關(guān)的問題、交叉干擾以及其它與板卡關(guān)聯(lián)的問題。若在啟動(dòng)在系統(tǒng)測(cè)試前,有需要連接的外部接口,則將延緩產(chǎn)品的上市時(shí)間。

  從上可知,傳統(tǒng)的驗(yàn)證方法不足以進(jìn)行完整的系統(tǒng)驗(yàn)證。有充足理由進(jìn)行動(dòng)態(tài)時(shí)序分析。

  時(shí)序仿真是可在其中進(jìn)行動(dòng)態(tài)分析的唯一方法。許多工程師有令人信服的理由拒絕進(jìn)行時(shí)序分析。一些主要擔(dān)心問題是:
  它很費(fèi)時(shí);
  為執(zhí)行驗(yàn)證,需要大量存儲(chǔ)器和處理器資源;
  為沒有辦法重復(fù)使用取自功能模擬的測(cè)試基準(zhǔn),必須創(chuàng)制新測(cè)試基準(zhǔn);
  為因?yàn)檎麄€(gè)網(wǎng)絡(luò)表是展開的,所以設(shè)計(jì)調(diào)試成為一件瑣事,另外,沒辦法及時(shí)定位問題所在;
  為時(shí)序仿真顯示最壞情況的數(shù)量,設(shè)計(jì)本身可能足夠超脫,不至于如此興師動(dòng)眾;
  為并非所有子模塊都是在一個(gè)環(huán)境下進(jìn)行編程的;
  為無法將在各個(gè)不同場(chǎng)所編程的部分分開,因?yàn)檫@些部分的設(shè)計(jì)師應(yīng)是那些為能進(jìn)行驗(yàn)證從而對(duì)設(shè)計(jì)有更深刻把握的人。

  這些都是正當(dāng)?shù)年P(guān)注,這也就是為什么下一節(jié)將討論工程師能做些什么以克服其中某些問題的原因。

  在時(shí)序仿真中采用Netgen以獲得精準(zhǔn)結(jié)果

  Xilinx提出了一種革命性方法以從Netgen中得到用于動(dòng)態(tài)分析匹配的靜態(tài)時(shí)序分析數(shù)和時(shí)序數(shù)。與-pcf 開關(guān)一起運(yùn)行Netgen并指向一個(gè)有效PCF文件將確保得自Trce和Netgen的數(shù)將互相匹配。

  在時(shí)序計(jì)算時(shí),所有新Xilinx架構(gòu)都利用了相對(duì)最小數(shù)(Relative Minimums)的好處。利用相對(duì)最小數(shù)意味著在設(shè)置計(jì)算以及相反的保持計(jì)算時(shí),將采用最大時(shí)鐘延時(shí)和最小數(shù)據(jù)延時(shí)。目前的模擬器不支持使用相同SDF文件中分別取自MIN域和MAX域的數(shù)。基于該限制,Xilinx需要兩個(gè)不同的模擬-- 一個(gè)用于設(shè)置,另一個(gè)用于保持。

  Netgen編寫SDF文件,所以,當(dāng)運(yùn)行SDFMAX模擬時(shí),將利用最大時(shí)鐘延時(shí)和最小數(shù)據(jù)延時(shí)。SDFMAX保證設(shè)計(jì)能滿足目標(biāo)器件的設(shè)置要求。當(dāng)運(yùn)行SDFMIN模擬時(shí),利用最小時(shí)鐘延時(shí)和最大數(shù)據(jù)延時(shí)。SDFMIN保證設(shè)計(jì)能滿足目標(biāo)器件的保持要求。

  改進(jìn)時(shí)序仿真體驗(yàn)

  當(dāng)描述時(shí)序仿真時(shí),“總體大于部分的總合”這樣一句常語(yǔ)幾乎可被反過來說成:“部分的總合大于總體?!焙笠痪湓捒偨Y(jié)了本節(jié)所要闡釋的內(nèi)容。為縮短時(shí)序仿真所用的時(shí)間,我們將不得不依靠“分割后各個(gè)擊破”的方法。對(duì)一個(gè)大的展開網(wǎng)絡(luò)表來說,完成任何形式的驗(yàn)證都將是件費(fèi)時(shí)和枯燥的任務(wù)。因此,采取的措施是將網(wǎng)絡(luò)表分割為多個(gè)小部分。

  該方法論并非是數(shù)字邏輯領(lǐng)域的一場(chǎng)革命,它是一種漸進(jìn)的沿革。自從HDL出現(xiàn)后,設(shè)計(jì)師一直喜歡采用基于部分組件的模擬而非整個(gè)大設(shè)計(jì)。問題是,沒辦法將此手段引入時(shí)序仿真。這與在FPGA實(shí)現(xiàn)中,在保持層次中所取得的進(jìn)展不再一樣。其基于的理念很簡(jiǎn)單。許多設(shè)計(jì)創(chuàng)生于若干更小模塊,而驗(yàn)證在各個(gè)子模塊層次進(jìn)行。

  不久前,推出了一種稱為KEEP_HIERARCHY的方法。該方案允許設(shè)計(jì)在經(jīng)歷實(shí)現(xiàn)時(shí)也能保持層次。它在改進(jìn)時(shí)序仿真方案方面前進(jìn)了一小步,但它有助于解決的實(shí)際問題是在調(diào)試階段?,F(xiàn)在,設(shè)計(jì)不再是一個(gè)展開網(wǎng)絡(luò)表。后標(biāo)注的HDL文件具有不同的層次部分以匹配原初設(shè)計(jì)?,F(xiàn)在,當(dāng)在時(shí)序仿真中發(fā)現(xiàn)問題時(shí),能容易地多地對(duì)故障源進(jìn)行定位并進(jìn)行調(diào)試除錯(cuò)。正如上面提到的,這只是該特性全面能力的一個(gè)過度。

  KEEP_HIERARCHY的下一步是生成“多層次文件(Multiple Hierarchical Files)”的能力。這一引入到軟件工具中的特性能為層次的各部分編寫?yīng)毩⒌木W(wǎng)絡(luò)表及相應(yīng)的SDF(標(biāo)準(zhǔn)延時(shí)格式)文件。該特性的引入為與時(shí)序仿真一起使用的各種方法敞開了大門。一旦能為層次的各部分編寫,則每個(gè)時(shí)序模塊看起來與RTL版本一樣。這就支持能再利用在進(jìn)行功能模擬時(shí)使用的測(cè)試基準(zhǔn)。這在時(shí)序仿真中是個(gè)長(zhǎng)足進(jìn)步。

  現(xiàn)在,工程師不再需要僅為進(jìn)行時(shí)序仿真編寫一個(gè)獨(dú)立的測(cè)試基準(zhǔn)。若已為功能模擬編寫了一個(gè)測(cè)試基準(zhǔn),則幾乎不需任何改動(dòng)就可將其用于時(shí)序仿真。位于頂層的端口名稱將總是相同的,這樣,測(cè)試基準(zhǔn)就可被再利用。此類設(shè)計(jì)的主要優(yōu)勢(shì)之一是它可容易地定位問題所在。為能充分了解該特性的真實(shí)能力,我們將考察一個(gè)實(shí)際例子。

 

 FPGA設(shè)計(jì)的驗(yàn)證技術(shù)及應(yīng)用原則

  圖1中,子模塊A首先由工程團(tuán)隊(duì)1生成、子模塊B和C由工程團(tuán)隊(duì)2生成,另外,IP模塊D從第三方買進(jìn)。這些模塊都在不同時(shí)間及/或由不同工程師生成,且為了驗(yàn)證每個(gè)模塊的功能準(zhǔn)確性,各模塊都用其自己的測(cè)試基準(zhǔn)進(jìn)行了驗(yàn)證。一旦成功對(duì)各個(gè)獨(dú)立部分進(jìn)行了驗(yàn)證,它們就被整合進(jìn)FPGA以進(jìn)行實(shí)現(xiàn)。RTL模擬通常就是這樣做的?,F(xiàn)在,借助與KEEP_HIERARCHY一起使用MHF(多層級(jí)文件)的能力,甚至在進(jìn)行時(shí)序仿真時(shí)都可能保持相同策略。

  采用該特性能幫助想進(jìn)行時(shí)序仿真的設(shè)計(jì)師解決他們面臨的兩個(gè)最大難題:1)各個(gè)模塊重復(fù)使用測(cè)試基準(zhǔn)的能力;2)定位發(fā)生問題的具體模塊的能力。可有多種途徑進(jìn)行時(shí)序仿真。當(dāng)采用MHF時(shí),因?yàn)樗羞@些模塊的頂層端口都保持一致,所以可容易地重復(fù)使用RTL測(cè)試基準(zhǔn)。

  以組塊形態(tài)形成的最終網(wǎng)絡(luò)表確實(shí)可使用戶為其RTL等價(jià)物選取不同的模塊。這樣做,用戶將可加快模擬的運(yùn)行時(shí)間。RTL幾乎永遠(yuǎn)比結(jié)構(gòu)化網(wǎng)絡(luò)表等快得多,若有種方法在不影響設(shè)計(jì)功能的前提下可用RTL替換結(jié)構(gòu)碼,則就應(yīng)嘗試這種方法。幾乎沒一種設(shè)計(jì)在實(shí)現(xiàn)后就盡善盡美。這就是為什么需要進(jìn)行時(shí)序仿真的原因。

  采用上述同一個(gè)例子,我們可考察如何改進(jìn)整個(gè)設(shè)計(jì)的速度及可觀察性。為得到最短的運(yùn)行時(shí)間,理想的情況是在一個(gè)模塊上一次僅運(yùn)行時(shí)序仿真。此例中,我們可在子模塊A運(yùn)行時(shí)序仿真然后使子模塊B、C和D處在RTL形式。一旦我們進(jìn)行時(shí)序仿真并發(fā)現(xiàn)一切如預(yù)期的一樣,就可對(duì)任何子模塊進(jìn)行切換并以相同的方式進(jìn)行測(cè)試。采用該方法論還意味著,若在一個(gè)子模塊中發(fā)現(xiàn)了問題,則可容易地定位該問題子模塊并將它拿給該模塊的設(shè)計(jì)者進(jìn)行修改。 若發(fā)現(xiàn)多個(gè)子模塊存在問題,則該方法帶來的額外好處是,兩(多)個(gè)不同工程團(tuán)隊(duì)能同時(shí)著手解決發(fā)現(xiàn)的問題。

   在傳統(tǒng)流程中,當(dāng)發(fā)現(xiàn)設(shè)計(jì)的一個(gè)部分存在問題時(shí),只有在該部分的問題被解決后,設(shè)計(jì)師才可能處理設(shè)計(jì)的其它部分。在采用MHF設(shè)計(jì)流后將不再受這種限制。時(shí)序仿真用戶的另一個(gè)主要抱怨是:若其它工程團(tuán)隊(duì)不在國(guó)內(nèi),則完成最后的驗(yàn)證會(huì)相當(dāng)困難且需花很長(zhǎng)時(shí)間。這是因?yàn)?,它將浪費(fèi)許多時(shí)間以及當(dāng)采用傳統(tǒng)時(shí)序仿真方法論時(shí)的許多相互關(guān)聯(lián)和依賴問題。借助MHF方法論,去掉了關(guān)聯(lián)因素。利用MHF,不同工程團(tuán)隊(duì)可省去許多空閑時(shí)間。這將確保發(fā)揮團(tuán)隊(duì)的最大效率。具有模塊結(jié)構(gòu)的網(wǎng)絡(luò)表也能為驗(yàn)證小組提供幫助。過去,需要由一位驗(yàn)證工程師完成的工作現(xiàn)可由不同小組的多位驗(yàn)證工程師完成。開發(fā)小組采用的理念也可同樣用于驗(yàn)證小組。

  除在模擬領(lǐng)域取得持續(xù)進(jìn)展以外,在施加激勵(lì)的方法方面也有重要進(jìn)步。過去的設(shè)計(jì)通常非常小,所以以前的設(shè)計(jì)激勵(lì)方法是采用模擬器提示(prompt)的施力文件(force file)或簡(jiǎn)單刺激以切換每個(gè)信號(hào)。隨著設(shè)計(jì)變得益發(fā)復(fù)雜,施加激勵(lì)也需要更好的方法。這里,VHDL和Verilog 的能力將有用武之地。隨著HDL編碼語(yǔ)言的引入,測(cè)試基準(zhǔn)變得更復(fù)雜和緊湊。

  在該領(lǐng)域,出現(xiàn)了諸如PSL、SystemC和SystemVerilog等技術(shù)。這些語(yǔ)言覆蓋的范圍不在本文討論之內(nèi)。這些編程方式的一個(gè)不利方面是它要求將一個(gè)模擬的輸出作為另一個(gè)模擬的輸入。一些模擬器支持允許用戶準(zhǔn)確進(jìn)行這種操控的Extended Value Change Dump Format 格式。不采用這種方法進(jìn)行時(shí)序仿真的用戶遇到的主要障礙是:因?yàn)楫?dāng)將一切都展開后端口名稱將改變,所以沒辦法將輸出作為激勵(lì)。采用MHF方法會(huì)去掉此問題,因?yàn)椋F(xiàn)在這里有可施以激勵(lì)的獨(dú)立模塊,另外,現(xiàn)在一個(gè)模塊的輸出可被用作另一個(gè)模塊進(jìn)行RTL以及時(shí)序仿真的激勵(lì)。

  選擇層次

  取得層次模擬成功的一個(gè)主要部分是選取層次。沒有現(xiàn)成的公式可用于選擇正確的層次。這就是為什么沒有對(duì)或錯(cuò)的層次的原因,雖然在試圖選取層次還是有些原則可資借鑒的。確保滿足如下這些原則永遠(yuǎn)是明智之舉。

  1)設(shè)計(jì)應(yīng)當(dāng)是完全同步的。

  2)所有關(guān)鍵路徑應(yīng)包括在一個(gè)邏輯組(可被分別同步的設(shè)計(jì)的一部分)中。典型情況,每個(gè)邏輯組應(yīng)是在設(shè)計(jì)頂層例示(instantiated)的Verilog內(nèi)的一個(gè)模塊或VHDL內(nèi)的一個(gè)實(shí)體 。

  3)全部IOB(輸入/輸出塊)邏輯應(yīng)在頂層。器件的任一個(gè)輸入和輸出應(yīng)在頂層及I/O緩沖器和I/O三態(tài)門內(nèi)進(jìn)行聲明。但,邏輯組內(nèi)例示的I/O邏輯是可接受的。

  4)在每個(gè)邏輯組的輸入和/或輸出應(yīng)放置寄存器。高明的作法是在邏輯組的邊界對(duì)所有輸入信號(hào)或輸出信號(hào)進(jìn)行寄存處理。它確保邏輯組內(nèi)的所有關(guān)鍵路徑得到保持并免去了當(dāng)通過邏輯組邊界進(jìn)行邏輯優(yōu)化時(shí)可能導(dǎo)致的問題。在設(shè)計(jì)中的所有層次組內(nèi)都應(yīng)一致遵守該規(guī)則。

  5)頂層應(yīng)只包含例示的模塊或?qū)嶓w、IOB邏輯及時(shí)鐘邏輯(DCM、BUFG等)。

  6)選擇邏輯組時(shí),應(yīng)不使任一組過小以至對(duì)其單獨(dú)進(jìn)行驗(yàn)證的價(jià)值不大或不太關(guān)乎大局,還應(yīng)不使任一組過大以便當(dāng)發(fā)生問題時(shí)難以模擬和調(diào)試。但對(duì)此沒有確切的定律,另外,它可根據(jù)設(shè)計(jì)和驗(yàn)證要求而變。

  7)選擇邏輯組時(shí)還應(yīng)注意使設(shè)計(jì)中最可能在后續(xù)設(shè)計(jì)流中被改動(dòng)的部分與設(shè)計(jì)中更穩(wěn)定的部分獨(dú)立開來。這樣,當(dāng)進(jìn)行了這種明智選擇后,以后的設(shè)計(jì)變更對(duì)驗(yàn)證時(shí)間產(chǎn)生的影響最小。

  只要遵循上述提到的規(guī)則,保持層次就該不會(huì)對(duì)設(shè)計(jì)性能產(chǎn)生影響。為從保有的層次中得到最大利益,只應(yīng)將其應(yīng)用在設(shè)計(jì)中的其端口在門級(jí)模擬中需要可見性的塊中。一般情況,這些塊是遵循了上述規(guī)則的上層塊。通過對(duì)選擇的塊限制其保留層次,綜合和實(shí)現(xiàn)工具將具有更多的自由以優(yōu)化設(shè)計(jì)并改進(jìn)性能。下圖2顯示的是在一個(gè)范例設(shè)計(jì)中可在哪里保留層次的例子。

 

 FPGA設(shè)計(jì)的驗(yàn)證技術(shù)及應(yīng)用原則

  應(yīng)注意的是這里只有指導(dǎo)方針。沒有指定如何選擇或保持層次的確定規(guī)則。它的確因設(shè)計(jì)而異、因用戶而不同。應(yīng)由用戶來決定在哪里保持層次對(duì)驗(yàn)證最有價(jià)值、以及在哪里應(yīng)將其解構(gòu)。

  層次驗(yàn)證進(jìn)入實(shí)戰(zhàn)

  為對(duì)在時(shí)序仿真中采用層次方法的可能好處進(jìn)行量化,我們將檢查兩個(gè)設(shè)計(jì):VHDL和Verilog各一個(gè),它們都是以中等規(guī)模Xilinx FPGA為目標(biāo)器件的,且采用了500微秒的Model Technology ModelSim SE模擬器進(jìn)行模擬。這些模擬是在帶2GB RDRAM存儲(chǔ)器的雙2.0 GHz Xeon計(jì)算機(jī)上在Linux環(huán)境下運(yùn)行的。這是為表現(xiàn)該方法論能顯現(xiàn)的量值差別所進(jìn)行的一個(gè)適當(dāng)?shù)膰L試,它并不一定代表典型的模擬運(yùn)行時(shí)間或存儲(chǔ)器需求。

  VHDL設(shè)計(jì)在一定程度上代表了典型的以DSP為導(dǎo)向的設(shè)計(jì),這里用的是Xilinx的 Virtex-4 SX35 FPGA。我們選擇將設(shè)計(jì)分為9個(gè)子層和一個(gè)頂層,在每個(gè)期望子層都放置一個(gè)KEEP_HIERARCHY。

  在該測(cè)試中,我們選取代碼最不穩(wěn)定的部分,也即在設(shè)計(jì)流的這一部分它頻繁改變。執(zhí)行一個(gè)相對(duì)簡(jiǎn)單的模擬,并比較TRL模擬時(shí)間與設(shè)計(jì)的時(shí)序仿真時(shí)間,我們發(fā)現(xiàn)它對(duì)運(yùn)行時(shí)間和存儲(chǔ)器容量要求有顯著增加,見下表1。但,若我們采取僅對(duì)設(shè)計(jì)的改變部分施以時(shí)序仿真的方法,我們可相應(yīng)降低運(yùn)行時(shí)間24倍、減小存儲(chǔ)器容量21倍。即使我們選擇僅采用改變的部分對(duì)整個(gè)設(shè)計(jì)進(jìn)行時(shí)序驗(yàn)證,我們看到,與完全RTL模擬相比,其所需的運(yùn)行時(shí)間和存儲(chǔ)器容量與完全RTL模擬相比也只需增加約一倍。與更傳統(tǒng)的全時(shí)序仿真相比,其對(duì)上述兩個(gè)指標(biāo)的要求也有大幅降低。

 

 FPGA設(shè)計(jì)的驗(yàn)證技術(shù)及應(yīng)用原則

  看Verilog設(shè)計(jì),它代表了某種更大更復(fù)雜數(shù)據(jù)路徑方式的設(shè)計(jì),我們以Xilinx Virtex-4 LX80 FPGA為目標(biāo)器件。我們將其分為14個(gè)子層和一個(gè)頂層,采用KEEP_HIERARCHY約束以支持分段時(shí)序仿真。我們看到,與VHDL運(yùn)行相比,所需的時(shí)間長(zhǎng)了些,但對(duì)該設(shè)計(jì)仍取得類似的改進(jìn)。僅對(duì)改變部分進(jìn)行的時(shí)序仿真與對(duì)整個(gè)設(shè)計(jì)進(jìn)行時(shí)序仿真相比,運(yùn)行時(shí)間和模擬存儲(chǔ)器分別節(jié)省了6.3和6.6倍。僅將設(shè)計(jì)的改變部分代替以時(shí)序仿真網(wǎng)絡(luò)表然后模擬整個(gè)RTL設(shè)計(jì),運(yùn)行時(shí)間和存儲(chǔ)器需求仍分別縮短了3.6倍、減小了 5.5倍。

  在兩個(gè)設(shè)計(jì)中,被改變模塊的覆蓋范圍完全相當(dāng),且因?yàn)楦斓倪\(yùn)行時(shí)間以及需分析的設(shè)計(jì)更小,設(shè)計(jì)調(diào)試變得更容易。也許因?yàn)樾枰蟮拇鎯?chǔ)器,模擬器用起來也更覺靈便。我們注意到,采用該方法論(擴(kuò)展了驗(yàn)證設(shè)計(jì)的可用資源并允許并行運(yùn)行以進(jìn)一步降低總體運(yùn)行時(shí)間),可能用一款較低端的計(jì)算機(jī)(速度更慢、存儲(chǔ)器更少)執(zhí)行該模擬。

  本文小結(jié)

  本文覆蓋了利用目前可用的一種技術(shù)進(jìn)行高級(jí)驗(yàn)證的方法論。它并非一種革命性的方法論,而是一種大多數(shù)設(shè)計(jì)師并不完全了解或徹底把握的一種方法。這些技術(shù)過去一直用于不同類型的模擬和驗(yàn)證,但可能并沒發(fā)揮出全部效力。采用層次模擬可對(duì)需要多長(zhǎng)時(shí)間及多大努力才能完成一個(gè)設(shè)計(jì)驗(yàn)證產(chǎn)生巨大影響。令人欣慰的是,借助本文,在未來的FPGA設(shè)計(jì)中,在降低模擬對(duì)硬件需求的同時(shí)有可能實(shí)現(xiàn)更快和更高效的時(shí)序仿真。

fpga相關(guān)文章:fpga是什么


存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理




關(guān)鍵詞: FPGA 驗(yàn)證

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉