<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > FPGA板級測試若干方法小結(jié)

          FPGA板級測試若干方法小結(jié)

          作者: 時間:2017-01-12 來源:網(wǎng)絡(luò) 收藏

          1)有關(guān)時序問題

          本文引用地址:http://www.ex-cimer.com/article/201701/338016.htm

          學習過FPGA的都知道,F(xiàn)PGA可以接受的時鐘和所允許的時序遠遠低于ASIC。這是由于ASIC時鐘樹與布線相對自由,故對于高速率設(shè)計解決起來相對容易。對于Xilinx FPGA而言,盡管采用了90nm工藝的Virtex-4可以支持的性能高達500M[1],但是其時鐘樹和布線資源相對固定,因此一旦在編譯和布局布線的時候處理不當,就會產(chǎn)生時序沖突(timing violation)。產(chǎn)生時序沖突的結(jié)果,輕則使設(shè)計的邏輯與實際布局布線后的網(wǎng)表不一致,重則導致布局布線根本無法通過,從而致使驗證無法進行。
          2)設(shè)計過程中注意時序問題
          若希望設(shè)計的產(chǎn)品能夠在FPGA驗證平臺上順利的完成驗證,在設(shè)計過程中就需要注意盡量多的使用FPGA的內(nèi)部資源,如DSP48,乘法器,RAM,DCM等。 畢竟IP核提供商最懂它們自己的產(chǎn)品。例如使用Xilinx工具時,Xilinx的ISE中配有Core Generator這個工具。通過該工具可以生成需要的乘法器。使用這些乘法器來代替普通的乘法器,可以達到滿意的效果。除了乘法器,還可以使用該工具產(chǎn)生RAM和DCM等。這些直接生成的IP性能都非常好。
          3)綜合過程解決時序問題
          使用Synplicity公司的Synplify工具進行綜合,這是業(yè)界通常使用的綜合工具之一。選擇該工具最主要的原因在于它與Xilinx的FPGA配合的很好。有人做過實驗,通過該工具綜合產(chǎn)生結(jié)果報表,再通過ISE產(chǎn)生真實布局布線后的報表。對這兩個報表的時序估計部分進行對比,我們發(fā)現(xiàn)兩者之間驚人的相似,最差路徑之間的差別不超過1ns。
          4)布局布線階段解決時序問題
          當綜合工作完成,進入布局布線的階段后,仍然有兩種方法可以改善邏輯時序問題。第一種是手動增加并調(diào)整BUFG(Global Clock Buffer)。BUFG是Xilinx的全局時鐘資源,所有時鐘樹的起點都是BUFG,位于FPGA的北極和南極。當布線后仍有負的slack時,有可能是某些當作時鐘使用的信號沒有被放上時鐘樹,此時就要手動將這些信號放上BUFG。若遇到門控時鐘,還應(yīng)該使用BUFGMUX資源。

          5)代碼一致性
          對于經(jīng)過FPGA驗證的代碼而言,最擔心的是經(jīng)過驗證的代碼和進行流片的代碼不一致。導致這個現(xiàn)象產(chǎn)生的原因是多種的,其中版本控制和由于FPGA、ASIC專用器件不一致而引起的問題是最常見的兩個問題。
          對于經(jīng)過FPGA驗證的代碼,為了能夠使被測代碼可以順利的在FPGA進行驗證,一般都采取了FPGA專用的器件。這些FPGA專用器件在ASIC中是不存在的。為了解決這個問題,通常采取"假代碼"(Fake Code)解決。顧名思義,"假代碼"就是在代碼中保留FPGA專用器件的名稱和接口,但是在FPGA和ASIC中使用不同的器件內(nèi)核。該器件若在FPGA下使用則使用FPGA專用器件,若在ASIC下使用,則使用自己編寫的代碼。盡管這種做法仍然無法保證代碼的完全一致,但是卻最大限度的避免了代碼的差別。



          關(guān)鍵詞: FPGA板級測

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();