<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于FPGA的ASIC協同原型驗證設計方案

電子設計 ? 來源:CSDN 博主 ? 作者:時光-易逝 ? 2020-12-30 12:00 ? 次閱讀

鑒于芯片設計的復雜度提升, 成功設計一個芯片所牽扯的步驟與過程也愈加復雜,所需花費的資金也成倍增加,一個典型的芯片開發項目的周期和花銷如下所示

可以見到在芯片制造出來之前,很多精力會花費在RTL代碼驗證工作上,另外軟件的相關開發工作,也會在得到芯片前開始,這2方面都需要借助FPGA原形來模擬芯片的行為,幫助硬件開發和軟件開發者,共同提升工作效率。

FPGA原型在數字芯片設計中,基本是必不可少的,原因非常明顯,相比用仿真器,或者加速器等來跑仿真,FPGA的運行速度,更接近真實芯片,可以配合軟件開發者來進行底層軟件的開發。當然FPGA原型作為芯片的替身,也是有諸多限制的,比如規模限制,速度限制,功耗限制,結構限制等,在使用FPGA原型作為芯片的替代時,需要進行相應的修改,才能完成相應功能,甚至有些功能最終無法覆蓋。

如果對FPGA中可以映射為ASIC的資源做逐一對比,我們可以得到這樣的表格。

pIYBAF9uJ4aAQSh4AAD7nwm1X60635.jpg

以上表格看出,除了普通的RTL邏輯以及基本端口,其他的類似存儲時鐘DSP等,最好都是做手動修改進行映射,把ASIC設計轉換為FPGA比較靠譜。

要把一塊ASIC做出FPGA的原型,需要大致一下步驟,

1 FPGA選型

2 做板或者購買原型板。

3 將ASIC設計轉換裝入FPGA

4 調試啟動FPGA原型

5 載入軟件協同運行

6 軟硬件系統驗證

下文就按照這些步驟逐一討論:

o4YBAF9uJ4iAMXp3AAEBWzRc4q8702.jpg

第一個就是FPGA的選型問題,在選型前,當然需要對ASIC的設計進行大致的了解,包括以下各方面:

o4YBAF9uJ4qAdelEAAGmAICMiGc702.jpg

選型問題最關心的幾個維度:

1 容量 其中包括純邏輯容量,存儲容量,dsp單元容量這些

2 內置IP 包括時鐘,存儲控制,cpu等的硬核

3 接口 普通接口與專用高速接口

4 速度 資源占用率在50%左右時的速度,一般被用來評估原型

其中純邏輯容量,也就是ASIC中組合電路與觸發器的容量,是可以直接與FPGA中的資源換算的。

pIYBAF9uJ4uAdkgtAADaR2TgtwY986.jpg

比如上圖xilinx V7 2000T中有2.4M FF,大致對應ASIC的2輸入與非門10M gates,如果使用率按照50%算,大概放置5M邏輯門沒問題。

內置的存儲器,可以實現21M的單雙端口ram,rom,fifo等,如果ASIC中使用的存儲稍微多一點,也可以用lut實現部分的存儲,替代block ram。

如果使用較多乘加運算,也可以映射fpga中的dsp器件實現,具體各種型號的FPGA包含多少器件,可以參考xilinx文檔。

對于內置ip,最先要考慮的,就是時鐘模塊MMCM,一般FPGA會有幾個到幾十個時鐘模塊,例如下表2000T中包含24個CMTs,也就是24個PLL和MMCM,每組PLL和MMCM可以對一個時鐘域的時鐘進行分頻倍頻。一般ASIC會包含多個時鐘域,每個時鐘域至少需要一個CMTs對時鐘進行操作,可以據此選擇使用哪個FPGA器件。

o4YBAF9uJ42ARDBeAADnTpKHPqw154.jpg

如要選擇帶有ARM硬核的FPGA來模擬ASIC中的ARM核,則需要選擇zynq系列。系統中自研的邏輯,則通過AXI掛入總線中,當然這樣未必能使FPGA與ASIC中的系統完全一致,但是作為一個圓形,也是足夠的,以下是部分帶有ARM核的FPGA的容量以及相應IP情況

o4YBAF9uJ4-AUvhVAAFKa3PxTxc007.jpg

對于接口的限制,一般FPGA的普通接口數量夠大,不會成為瓶頸,主要在于ASIC所需的特定接口,在FPGA中是否能夠滿足,很多時候這些特定接口需要外接phy才能完成相應功能。

影響FPGA最終運行速度的因素很多,包括代碼風格,具體設計,資源占用率,FPGA型號等,所以這需要在RTL代碼基本框架完成后,通過工具綜合才能得到一個大致數值,所以作為ASIC原型,盡量選擇速度夠快的FPGA。

通過以上限定條件,基本可以選出使用哪種FPGA型號,但是可能ASIC資源占用太多,任何一種都裝不下,這就有2種解決方式了。一種是分塊分別驗證,當然這樣風險極高,且沒法直接驗證最終系統。

另外就是使用多片FPGA得到原型,這就要涉及不同FPGA之中功能劃分的問題,這個是比較麻煩且有難度的事情,對FPGA電路設計,以及ASIC到FPGA的代碼轉換,都有挺多新問題。

第2步就是制版,這需要考量的方面也是相當多,比如信號完整性,電源問題,時鐘問題,可擴展性等,本人對此沒有直接經驗,也就無從展開。當然對于需要多個FPGA的驗證板,一般實力的團隊,未必能搞定,所以選擇花錢買平安,直接選用類似HAPS這樣的驗證系統,可能更靠譜。

第3步就是ASIC的設計裝入FPGA。這需要對原本面向ASIC的代碼,進行修改。

對于一般的純RTL邏輯,在ASIC中與FPGA中都可以綜合出可用結果,但是以下表中的器件,需要修改

pIYBAF9uJ5GAGe_YAAFHNTiKRdo580.jpg

芯片中的pad,一般是fab廠給出的硬核,具有輸入輸出,驅動上下拉控制等。在轉換成FPGA時,一般會在例化中直接用assign替代,并.XDC或者.v中指定上下拉等

如果有ASIC門級網表,可以把底層ASIC實例器件用verilog行為描述替換,在FPGA綜合中則可以對應實現。其他的簡單cell例化,也可以這樣轉換一下。

對于存儲器,一般可以在FPGA中找到與ASIC功能一致的SRAM,ROM ,可以直接把FPGA MEM 外包一層改變端口名字,替代ASIC MEM。小的嵌入flash,則可以把FPGA的SRAM包一層邏輯來模仿。

其他的硬核IP, 可能需要在FPGA中尋找功能一致的,并相應修改接口,與ASIC代碼中其他部分有效連接。

對于BIST,最直接的辦法是去除,一般不會影響實際功能。

對于各種門控時鐘,倍頻分頻等,一般需要針對FPGA做手動修改,使用DCM完成與芯片中時鐘一致的行為。

以下就一些修改中會出現的具體問題,詳細說明。

首先我們拿到的ASIC設計的結構,基本如下圖所示,最外一圈是各種pad ring,里邊先是芯片的各種輔助功能,包括 clk, rst, power, test,debug等。然后是與芯片實際功能相關的部分,可能包括部分模擬電路,數字電路包括cpu,mem 總線,各種邏輯控制等。我們需要明確用FPGA來原形驗證的,主要是數字電路中的那些核心功能,芯片核心外部的那些輔助邏輯,很多是需要修改的,也是無法得到驗證的。這里的pad一般直接在FPGA中直接去例化一個包含幾個assign語句的 FPGA PAD 等效實例,clk rst 需要根據具體上電順序,時鐘資源做調整,一般會對rst功能進行簡化,做成一個全局復位,clk中的分頻與關斷功能會放在CMT中實現。power控制,一般在FPGA中直接忽略,因為用FPGA幾乎無法模擬各種UPF指定的行為。debug test可以根據實際情況保留或者去除,但是即使保持,一般也不會真的去用。核心功能中需要更改的,一般就是各種內部存儲器了。

o4YBAF9uJ5KAU4ItAABr-sbLcfw959.jpg

時鐘門控 clock gating 一般在ASIC中廣泛使用,一般會在clk模塊中例化成由latch與門組成的門控單元,對某個模塊進行時鐘控制。這些門控單元,如果直接在FPGA中例化為相同邏輯的latch與門,邏輯功能是沒有問題的。但是這時與門出來的受控時鐘,則不能再FPGA的專用時鐘網絡中走線,而是走普通的信號網絡,這樣FPGA能達到的頻率很差。為了糾正這樣情況,可以把對寄存器的門控,放在寄存器端,也就是選用FPGA中行如FDCE這樣帶門控的寄存器。這個過程可以手動完成,但是比較麻煩,一般來說專門的FPGA綜合工具能做這種自動轉換。比如 vivado中使用 (* gated_clock = "true" *) input clk_a; 標定受控時鐘,并在腳本加入 -gated_clock_conversion on 綜合選項。

pIYBAF9uJ5SAMgUDAACEUPLqIb8614.jpg

當然如果需要的可控時鐘不太多,也就是少于FPGA中BUFGCE的數量,則可以直接把門控信號加在 BUFGCE的控制端,輸出就是走時鐘網絡的門控信號了。如果FPGA器件中有 BUFHCE,則可以對更多層級的時鐘進行門控,也就可以得到更多的受控時鐘。

有關FPGA門控時鐘的更詳細解釋,可以參照 https://forums.xilinx.com/t5/General-Technical-Discussion/Reg-Clock-gati...

ASIC轉變到FPGA使用的綜合約束,在SDC與XDC基本相容,例如

o4YBAF9uJ5WASP10AABCNnQArGg415.jpg

這些都可以直接使用,當然很多情況下FPGA還是不可能跑到ASIC速度,必須降速運行。另外還需要添加FPGA中對管腳位置,類型,驅動強度等的約束,以及一些綜合選項

以上即為對ASIC代碼更改的主要部分,在下到FPGA板調試前,最好對更改的FPGA代碼進行仿真,確認功能正常,減少上板調試的工作量。

第4步為啟動調試FPGA原型。

在把修改后的FPGA代碼裝入調試前,先需要保證FPGA板本身是正??捎玫?,這時如果是外購的開發板或者類似haps的驗證系統,則會省去一些麻煩。

如果是頭次開發的FPGA板,則需要先裝入一個最簡單的FPGA鏡像文件,測試一下FPGA的電源供電,下載連接是否可用,然后通過幾個用于測試的FPGA文件,測試下板上與FPGA連接的其他器件是否正常工作。一般頭次設計的板子,多少會有各種問題,比如電源供電問題,管腳連接的差分信號匹配問題,阻抗匹配,電流驅動,信號質量等問題 如果板子通過了以上測試,則可以認為電路硬件設計沒有問題,可以裝入FPGA原形文件進行測試了。

裝入修改了的FPGA原型模擬ASIC,一般不會一次成功,一般出現的問題可以分為以下三類:

1 RTL邏輯錯誤,包括原本ASIC既有的和修改過程引入的錯誤。

2 接口錯誤 與外部器件的電信號連接錯誤,包括電壓不匹配,驅動電流不一致等。

3 軟件錯誤 MCU運行的軟件沒有正確配置相關功能導致,這種一般在仿真中難以發現,因為仿真很少運行真正的軟件系統。

對fpga原型的板上調試,可以歸納為以下步驟。

o4YBAF9uJ5eAT0qPAAEr1cN26H8340.jpg

當載入實際運行的軟件后,通過FPGA原型,就可以如同在實際芯片中一樣,對軟件進行測試修改,同時完成系統級的驗證工作了。也就進入了步驟5.6,這與普通的嵌入式軟件開發大致相同。

對于通過FPGA進行原型驗證,有以下設計流程上的建議,值得參考

o4YBAF9uJ5mALVsrAAEf9S9w9XY691.jpg

以上參考了xilinx網站內容,以及FPMM等書。

編輯:hfy


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1610

    文章

    21372

    瀏覽量

    595022
  • asic
    +關注

    關注

    34

    文章

    1163

    瀏覽量

    119593
  • Xilinx
    +關注

    關注

    70

    文章

    2129

    瀏覽量

    119691
  • 芯片設計
    +關注

    關注

    15

    文章

    942

    瀏覽量

    54486
收藏 人收藏

    評論

    相關推薦

    大規模 SoC 原型驗證面臨哪些技術挑戰?

    引言隨著電子設計自動化(EDA)驗證工具的重要性日益增加,開發者們開始尋求減少流片成本和縮短開發周期的方法。其中,使用可編程邏輯芯片(FPGA)來構建有效的驗證流程成為一種流行的解決方案
    的頭像 發表于 06-06 08:23 ?441次閱讀
    大規模 SoC <b class='flag-5'>原型</b><b class='flag-5'>驗證</b>面臨哪些技術挑戰?

    fpga原型驗證平臺與硬件仿真器的區別

    FPGA原型驗證平臺與硬件仿真器在芯片設計和驗證過程中各自發揮著獨特的作用,它們之間存在明顯的區別。
    的頭像 發表于 03-15 15:07 ?478次閱讀

    fpga原型驗證流程

    FPGA原型驗證流程是確保FPGA(現場可編程門陣列)設計正確性和功能性的關鍵步驟。它涵蓋了從設計實現到功能驗證的整個過程,是
    的頭像 發表于 03-15 15:05 ?586次閱讀

    FPGA與AISC的差異

    根據需求進行重新配置,而ASIC一旦制造完成,其功能就無法更改。 開發周期和成本 :FPGA的開發周期相對較短,成本較低,適合原型驗證和小批量生產。而
    發表于 02-22 09:54

    FPGA資源與AISC對應關系

    情況下,FPGA可以被用作ASIC原型驗證平臺,幫助設計師驗證和優化ASIC的設計。然而,由于
    發表于 02-22 09:52

    到底什么是ASICFPGA?

    ASIC,不是簡單的競爭和替代關系,而是各自的定位不同。 FPGA現在多用于產品原型的開發、設計迭代,以及一些低產量的特定應用。它適合那些開發周期必須短的產品。FPGA還經常用于
    發表于 01-23 19:08

    原型平臺是做什么的?proFPGA驗證環境介紹

    proFPGA是mentor的FPGA原型驗證平臺,當然mentor被西門子收購之后,現在叫西門子EDA。
    的頭像 發表于 01-22 09:21 ?746次閱讀
    <b class='flag-5'>原型</b>平臺是做什么的?pro<b class='flag-5'>FPGA</b><b class='flag-5'>驗證</b>環境介紹

    什么是FPGA原型驗證?FPGA原型設計的好處是什么?

    FPGA原型設計是一種成熟的技術,用于通過將RTL移植到現場可編程門陣列(FPGA)來驗證專門應用的集成電路(ASIC),專用標準產品(AS
    發表于 01-12 16:13 ?595次閱讀

    基于CPLD/FPGA的多串口擴展設計方案

    電子發燒友網站提供《基于CPLD/FPGA的多串口擴展設計方案.pdf》資料免費下載
    發表于 10-27 09:45 ?3次下載
    基于CPLD/<b class='flag-5'>FPGA</b>的多串口擴展<b class='flag-5'>設計方案</b>

    基于FPGA的PCI硬件加解密卡的設計方案

    電子發燒友網站提供《基于FPGA的PCI硬件加解密卡的設計方案.pdf》資料免費下載
    發表于 10-18 11:18 ?1次下載
    基于<b class='flag-5'>FPGA</b>的PCI硬件加解密卡的<b class='flag-5'>設計方案</b>

    基于FPGA原型設計的SoC開發

    所有形式的原型都為驗證硬件設計和驗證軟件提供了強大的方法,模型或多或少地模仿了目標環境?;?b class='flag-5'>FPGA原型設計在項目的關鍵后期階段尤其有益。
    發表于 10-11 12:39 ?383次閱讀
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>原型</b>設計的SoC開發

    FPGAASIC的優劣勢 FPGAASIC的應用場景及前景

      FPGAASIC是數字電路中常見的實現方式,因此人們經常會想要了解哪種芯片在未來的發展中更具有前途。然而,這取決于具體的應用場景和需求。在本文中,我們將探討FPGAASIC的優
    發表于 08-14 16:40 ?1389次閱讀

    FPGAASIC的區別與聯系

      FPGAASIC作為數字電路的常見實現方式,其聯系和區別備受關注。本文將從FPGAASIC的基本概念入手,深入研究它們的區別與聯系,以幫助讀者更好地理解兩者的應用場景和選擇方法
    發表于 08-14 16:38 ?2158次閱讀

    多片FPGA原型驗證的限制因素有哪些?

    當SoC系統的規模很大的時候,單片FPGA驗證平臺已經無法容納這么多容量,我們將采取將SoC設計劃分為多個FPGA的映射。
    發表于 06-19 15:42 ?600次閱讀

    有關FPGA的問答集錦

    FPGA做IC的原型驗證,速度大概跑多少?很多ASIC運行主頻遠遠高于FPGA,仿真能cover住嗎?
    的頭像 發表于 06-19 09:49 ?697次閱讀
    有關<b class='flag-5'>FPGA</b>的問答集錦
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>