亚洲日韩久久|国偷自产一区二区三区蜜臀国|国产一区二区日韩|99热这里只亚洲无码,无码

紫光同創(chuàng)PGL22G開發(fā)平臺試用連載(2)---PDS軟件試用

日期:2020-07-22 來源:電子創(chuàng)新網(wǎng)作者:LuoGuibin閱讀:132

作者:羅桂斌

一款好用的FPGA永遠離不開強大的開發(fā)工具作為支持。對于設計FPGA的公司而言,設計出優(yōu)秀的FPGA器件還不足以獲得市場和FPGA開發(fā)人員的青睞。優(yōu)秀的開發(fā)工具軟件卻能最快速度的討好一線工程,培養(yǎng)他們的開發(fā)流程和使用習慣。一旦習慣了一款開發(fā)工具之后,再使用其他家的工具,只要不符合之前的經(jīng)驗就會覺得這個工具不好用、不人性。這種先入為主的情況,各大廠家也是心知肚明,所以才會積極的推進自家的器件在大學的推廣。這些未來的FPGA工程師一旦適應了某一家的開發(fā)思想和流程,當他們走上工作崗位之后,也會毫不猶豫地選擇自己熟悉的器件。培養(yǎng)自己的潛在客戶,是面向未來的投資。

Quartus、Vivado和Diamond,相信前兩個大家都比較熟悉,Diamond是Lattice的FPGA開發(fā)工具。Quartus和Vivado都是業(yè)界比較優(yōu)秀的軟件,可以完成FPGA從評估、設計、調(diào)試的各個環(huán)節(jié)。FPGA開發(fā)軟件都是按照FPGA的開發(fā)流程來設計的,下面來簡要回顧一下FPGA的開發(fā)流程:

  1. FPGA選型、資源和功耗評估;
  2. FPGA RTL代碼、約束設計;
  3. RTL代碼仿真和驗證;
  4. FPGA版本集成和綜合(Synthsis);
  5. 布局布線(Place and Route)和生成bitstream文件;
  6. 上板調(diào)試;
  7. 發(fā)布FPGA版本

以上各個環(huán)節(jié)其實都是可以在廠商提供的集成開發(fā)環(huán)境中完成的,Quartus和Vivado自然不用多說,相信大家再熟悉不過了。今天我們要看試用的主角-PDS是否能夠完成以上各個環(huán)節(jié)的開發(fā)。

PDS的安裝很容易,只要按照軟件的安裝教程操作即可。需要注意的是,PDS需要到紫光通創(chuàng)的官網(wǎng)(https://www.pangomicro.com/support/License-pds/index.html)申請PDS和Synplify的Node-lock Lisence,需要電腦網(wǎng)卡的MAC地址。官方審核通過之后,會以郵件附件的形式將Lisence發(fā)送給你。

PDS安裝過程很順利,然后打開一個demo工程led_test,功能是板上4個LED流水燈。重新綜合和布局布線,然后下載,一切順利,板上LED輪流點亮,試用結束!

如果就這樣敷衍的試用一下肯定是不行的,作為一個專業(yè)的FPGA工程師,可是每天都要和開發(fā)工具斗爭的,所以肯定要按照流程走一下,看看各個環(huán)節(jié)表現(xiàn)如何啊。

首先一般公司在開發(fā)一款產(chǎn)品的時候,F(xiàn)PGA設計可不是從零開始,大部分的代碼都是復用和移植。所以在評估資源的時候都是先集成一個近似的版本出來,綜合和布局布線,分析資源利用報告和功耗評估報告,初步評估資源的使用情況和功耗。在評估的基礎上留出一定的裕量,比如30%;當然是按照資源占用率最多的一項資源,比如IO、BRAM或DSP等。

至于仿真驗證就不用多說了,我從來沒用過Quartus和Vivado里面的仿真器,因為都沒有Modelsim/Questsim/VCS好用啊。實際上Quartus的仿真器關聯(lián)的也是Modelsim。Vivado集成了自己的仿真器,但是我沒用過(編譯、仿真速度和可視化肯定不如Modelsim)。

那么我直接打開了一個ov5640_ddr_hdmi的demo工程,在這個基礎上試試PDS。這里提示大家一下,打開help->HelpTopics,有關于PDS操作的說明文檔。重點是中文!中文!中文!

RTL代碼和約束開發(fā)

RTL代碼開發(fā)沒什么可說的,大家直接使用自己順手的編輯器和插件就好了,F(xiàn)PGA開發(fā)工具里的文本編輯器沒有一個是好用的。PDS的約束沒有使用標準的sdc文件,而是一個fdc文件。但是語法都類似。如果不懂語法可以直接使用PDS的約束編輯器開發(fā)約束,常用的基本約束都有:時鐘約束、輸入輸出延時和時序例外。引腳約束也可以在約束編輯器的Device->IO中設置,這一點跟Quartus一樣,引腳比較多的時候可能工作量大一點,好在引腳約束只需要項目開始的時候編寫一次就行了,之后創(chuàng)建新工程的時候直接把約束文件拷貝過來就行了。

綜合(Synthsis)

綜合器絕對是FPGA工具的核心組件,直接決定了綜合出來的電路實現(xiàn)。即使是Intel和Xilinx這樣的巨頭在這方面做的也不是很好,綜合速度和效率并不是最好的。Synopsys這家公司做ASIC設計的同行應該再熟悉不過了,Synopsys和Mentor是ASIC設計領域永遠繞不過的兩大家,其提供了ASIC全流程的開發(fā)工具。在FPGA/CPLD領域也一樣,Synopsys的Synplify是各家開發(fā)工具都支持的第三方綜合器。

PDS提供了兩個綜合器:ADS和Synplify,在Project Setting→Part中可以選擇。ADS應該是PDS內(nèi)置的綜合器,Synplify是第三方綜合器,需要在紫光同創(chuàng)官網(wǎng)申請OEM Lisence。那這兩個綜合器哪個更好一些呢?我很快得出了結論,下面來看兩個綜合器對同一個工程的綜合結果。

圖1.ADS綜合結果(上)Synplify綜合結果(下)

這個工程的資源占用率并不是很高,但是ADS卻有時序不過的情況,Synplify則沒有出現(xiàn)時序問題。出于好奇,我還是打開了時序報告和Design Editor看看是哪里時序不過。又對比了一下Synplify同一個端口的路徑有沒有問題。

圖2.資源利用率報告

圖3.ADS最差路徑(左)和Synplify最差路徑(右)

雖然看起來差不多,但是結果還是說明Synplify會好一些,這也是官方為什么默認使用Synplify作為綜合器的原因吧?

有時候在綜合的時候不確定某些資源和信號是否被優(yōu)化掉,偶爾會打開RTL視圖(Schematic)看看連線和端口有沒有別優(yōu)化掉。使用不同的綜合器,RTL 視圖也是不一樣的,Synplify會另外自動打開,ADS則還是在PDS里面。貌似還是Synplify好看一些呢。

圖4.ADS RTL視圖

圖5.Synplify RTL視圖

布局布線(Place and Route)

其實在綜合和布局布線中間應該還有一個步驟是-映射(Mapping),即把綜合出來的電路映射成FPGA中的資源。但是在PDS中沒有體現(xiàn)這一個步驟,咱也不知道,咱也不敢問。布局布線器也是FPGA開發(fā)工具中的核心技術,直接決定了能否布通和時序是否滿足。布局布線的細節(jié)就不得而知了,但是可以對實際的布局布線結果進行一下分析。

圖6.工程布局布線結果

這里想要重點夸一波PDS的Design Editor功能,通過這個視圖可以很清楚的看到FPGA內(nèi)部資源的分布和架構。可以簡單的看一下幾個基本的資源排布。

圖7.基本資源排布

圖8.布線資源

而且顯示這么多的資源和布線,我這么差的機器一點也不卡,很流暢。想想Vivado打開Device View的時候,我要感動的哭了。

這里的FPGA基本資源中有一個很有趣的東西,叫做SRB(Signal Relax Block),我在官方手冊里沒有找到關于他的細節(jié)介紹,但是很明顯他是負責完成FPGA內(nèi)部走線互聯(lián)的開關矩陣,相當于Xilinx FPGA的SwitchBox。每一個CLM旁邊都有一個SRB,相信經(jīng)過多少個SRB和每個SRB的內(nèi)部走線延時會對時序有很大的影響。

在做時序優(yōu)化的時候(一般由于時序裕量小或者時序不過),會看關鍵路徑在哪里,然后通過在長路徑中插入寄存器或者改變資源的位置來優(yōu)化時序。在PDS中可以很容易的找到關鍵路徑,只需要點擊最差時序路徑即可,這一點非常好用。

調(diào)試(Debugger)

對于調(diào)試這一點,我可能要吐槽一下。在實際的項目調(diào)試的時候,很多條件和情況是沒法通過仿真驗證覆蓋的,所以只能上板調(diào)試,然后抓FPGA內(nèi)部的信號分析。PDS的調(diào)試功能對于有經(jīng)驗的工程師可能還好,但是對于初學者肯定是不友好的。要實現(xiàn)片上信號的觸發(fā)捕獲,首先要創(chuàng)建兩個IP:debug_core和jtag_hub。debug_core需要設置觸發(fā)信號和需要捕獲的數(shù)據(jù)位寬等,然后將調(diào)試信號連接到debug_core;最后用jtag_hub連接到debug_core上。

PDS需要打開Debugger,如果連接正確,在Scan JTAG的時候會識別到FPGA器件和內(nèi)部的debug_core。點擊觸發(fā)就可以捕獲到信號了。此外在debugger中也可以看到內(nèi)部ADC監(jiān)控的溫度和核電壓。這種用法和Vivado有點像,Vivado也提供可以直接在代碼中例化的ILA IP。這要是沒幾年FPGA開發(fā)經(jīng)驗,這玩應真是不會玩。想想Vivado的Setup debug功能,綜合后直接設置想要調(diào)試的信號即可,在Vivado中可以設置任意信號做為觸發(fā)和觸發(fā)條件,簡直不要太好用。PDS這方面好好學學。

圖9.ADC溫度電壓監(jiān)控

圖10.debug_core代碼

圖11.調(diào)試界面

寫在最后

另外還有幾個地方想要說一下,PDS提供的IP實在是太少,少到什么情況呢。只有基本的片上資源IP,PLL、RAM、FIFO、QUEUE、乘法器這些。連片上的DDR控制IP都沒有集成在IP Compiler里面,需要另外導入。PGL22G內(nèi)部集成了硬核的DDR控制器,這個是我比較感興趣的,但是DDR的IP竟然沒有集成在PDS里面,而且配置也略顯麻煩,支持最多三組AXI,一組128bit位寬的,兩組64bit位寬的。

圖12.DDR控制器IP

跟Vivado對比一下,實在是差的比較多。

圖13.PDS IP Compiler(左)Vivado IP Catalog(右)

這一點對于具有一定規(guī)模的公司來言還好,畢竟一些常用的模塊都有內(nèi)部開發(fā)的IP可以調(diào)用。但是對于白手起家的,可能初期的版本要花費較長的時間了。在IP配置界面可以點擊datasheet,查看IP的使用方法,重點是中文!中文!中文!

寫在最后,對于國產(chǎn)FPGA開發(fā)工具我的心里預期是比較低的。但是PDS絕對出乎我的意料,因為它不僅僅是能用,有些方面還是挺好用的。我第一次用PDS,大概用了三四個小時,已經(jīng)可以熟練使用了,連debugger這么復雜的功能都玩起來了。要說紫光同創(chuàng)的FPGA是國貨之光可能有點過,但是目前看來基本替代低端的國外FPGA應該問題不大。只要是紫光同創(chuàng)的FPGA在開發(fā)過程中沒有潛在的坑,同時價格有優(yōu)勢,并且供貨有保障的情況;說真心話,我非常愿意在下一個項目里使用Logos系列FPGA替換掉Lattice的XO2。

說的好像我說的算一樣~

打賞
聯(lián)系客服 投訴反饋  頂部