衡阳派盒市场营销有限公司

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

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

3天內不再提示

spinalhdl轉Verilog可讀性 SpinalHDL開發流程

FPGA開源工坊 ? 來源:FPGA開源工坊 ? 2023-07-27 09:29 ? 次閱讀

SpinalHDL是基于Scala全新的硬件描述語言,解決了不少Verilog等傳統HDL語言的痛點,可以快速的完成某些IP的開發,和完美的融入現有的開發流程。

誠然SpinalHDL的學習路線是比較陡峭的。另外在團隊協作中,你可以要求你的同伴對Verilog,VHDL語言進行掌握,但是不能要求他們也掌握SpinalHDL,Chisel這些語言,所以你的代碼怎么安排別人接手也是一個問題。但是這并不妨礙我們采用SpinalHDL來快速驗證我們某個想法是否是合理的,快速驗證某個架構是否合理。

在SpinalHDL的lib里面有一個eda目錄,里面有Xilinx,Altera公司的一套工具庫。

860588c0-2bbf-11ee-a368-dac502259ad0.png

我們以Xilinx的為例來說明怎么利用里面的工具庫來驗證我們的代碼能夠跑的頻率和占用的資源。

861c7ecc-2bbf-11ee-a368-dac502259ad0.png

可以看到里面只有一個VivadoFlow的文件,在VivadoFlow里面需要我們指定Vivado的路徑,工作目錄,以及RTL,目標器件,頻率等一系列參數

8633b0a6-2bbf-11ee-a368-dac502259ad0.png

之后便可以獲取到當前RTL能夠跑到的最大頻率和所需的資源了??梢钥吹紸7和K7返回的是利用的LUT和FF,而KU,VU等器件把BRAM和URAM的資源利用也得到了。

8665ed5a-2bbf-11ee-a368-dac502259ad0.png

8692bc90-2bbf-11ee-a368-dac502259ad0.png

通過一個直方圖均衡化的例子來說明這個VivadoFlow如何評估資源的消耗。

86c63610-2bbf-11ee-a368-dac502259ad0.png

86f87666-2bbf-11ee-a368-dac502259ad0.png

通過上面的代碼指明vivado的路徑,工作路徑,以及目標器件和頻率就可以愉快的開始等著頻率和資源的利用報告了。

可以看到IDEA的窗口已經開始打印相關的log了。

87180aa8-2bbf-11ee-a368-dac502259ad0.png

875bff10-2bbf-11ee-a368-dac502259ad0.png

可以看到實際能夠跑到的頻率只有147M,資源利用了976個LUT,1058個FF,因為選了A7的器件,所以BRAM的利用并沒有輸出。但是可以在中間日志中看到。

87786222-2bbf-11ee-a368-dac502259ad0.png

我們在之前設置的目標頻率是200MHz,但是經過評估之后只能跑到147M,說明我們還需要優化下現在的代碼,繼續查看日志,可以看到建立時間不滿足。具體不滿足的地方在日志中也有輸出。

87a17586-2bbf-11ee-a368-dac502259ad0.png

87c514c8-2bbf-11ee-a368-dac502259ad0.png

Intra 說明是同一時鐘下的,不存在跨時鐘的問題,當然這個在我們設計的時候已經確定了。

87e8e5c4-2bbf-11ee-a368-dac502259ad0.png

通過上面的日志可以確定是divSum和divMul之間的時序不滿足。這一部分是一個乘法和截尾操作。乘法被映射到DSP上,我們知道xilinx的DSP內部有幾級的寄存器,如果把這幾級寄存器給利用起來那么就可以提高時鐘頻率,所以可以通過打拍的方式,讓這幾個寄存器被DSP所吸收掉,從而達到時序收斂的目的。(PS:如果是異步復位的寄存器是不能被7系列的FPGA的DSP所吸收的)

883e3bb4-2bbf-11ee-a368-dac502259ad0.png

88592c4e-2bbf-11ee-a368-dac502259ad0.png

所以兩種不同的代碼如上。

887931c4-2bbf-11ee-a368-dac502259ad0.png

經過評估后可以跑到218MHz,的確有性能上的提升。

這個只是一個很小的模塊,可以這樣很快完成設計上的探索。

當我們要進行不同實現方式的探索的時候,便可以這樣快速的完成,不斷的完善模塊的架構。

責任編輯:彭菁

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

    關注

    0

    文章

    370

    瀏覽量

    40920
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110400

原文標題:SpinalHDL--快速評估代碼性能

文章出處:【微信號:FPGA開源工坊,微信公眾號:FPGA開源工坊】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何實現SpinalHDL 環境搭建

    據說SpinalHDL相比chisel更具優勢,這讓我有了興趣,今天開始安裝搭建。平常用的linux系統的,但是Intel IDEA安裝在Ubuntu上的時候總是卡的不行,就放棄了,其實
    的頭像 發表于 08-24 14:43 ?8718次閱讀
    如何實現<b class='flag-5'>SpinalHDL</b> 環境搭建

    SpinalHDL里實現優雅的添加待跟蹤波形信號

    在FPGA的開發過程中,在線抓取波形往往是終極調試大法。而如何抓取信號,相信做邏輯開發的小伙伴都是輕車熟路,張口就來,無非兩種方式嘛:待跟蹤信號添加原語或者手動例化Ila。而在SpinalHDL
    發表于 06-22 14:37

    聊一聊SpinalHDL 1.6.1引入的blackbox inline功能

    編程都有極大的便利。在上面的blackbox的使用方式里,封裝成blackbox的Verilog代碼和SpinalHDL代碼是分開維護的,作為開發使用沒有什么問題,但如果你是作為一個第三方IP提供者,像
    發表于 06-29 16:02

    SpinalHDL中關于casez的使用

    SpinalHDL中的switch在之前的文章中曾提到過SpinalHDL中switch的使用:通常情況下,switch對應著我們日常Verilog代碼中的case。像下面的代碼:其生成的RTL代碼
    發表于 07-06 10:59

    SpinalHDL中的代碼組織結構如何實現Component參數化設計呢

    ;io_"前綴,若想在代碼中避免可在SpinalHDL里添加"noIoPrefix()"。在SpinalHDL里,Component對于端口的訪問與Verilog類似:可讀
    發表于 07-21 14:20

    SpinalHDL是如何讓仿真跑起來的

    倘若用SpinalHDL寫完代碼后需要用Verilog/SystemVerilog來進行驗證,那將是一件痛苦的事情。仿真設計不分家對于數字電路邏輯設計而言,設計與仿真往往是緊密結合的。在
    發表于 07-25 15:09

    如何在SpinalHDL里啟動一個仿真

    仿真的原理,盡管我們仿真對象是我們的SpinalHDL代碼生成Verilog文件交給仿真器去執行但我們的仿真環境搭建和case構建可以借助scala語言本身豐富的軟件庫來進行構建,這是我們用
    發表于 07-26 16:59

    SpinalHDL開發環境搭建步驟相關資料分享

    1、SpinalHDL開發環境搭建步驟開發所需軟件SpinalHDL 是 Scala 語言的一個庫,SpinaHDL 環境搭建所需的軟件開發
    發表于 10-17 15:33

    SpinalHDL設計錯誤總結相關資料分享

    1、SpinalHDL設計錯誤  SpinalHDL編譯器會做很多設計檢查,來確保生成的VHDL/Verilog是可仿真的可綜合的。基本上,SpinalHDL不會生成破損的VHDL/
    發表于 10-24 15:37

    基于Windows系統的SpinalHDL開發環境搭建步驟

    開發所需軟件SpinaHDL環境搭建所需的軟件安裝包,SpinalHDL是Scala語言的一個庫,開發Scala需要使用IDEA軟件;JDK17、SDK:Scala2.12.15,SBT1.5.5
    發表于 10-24 15:40

    VerilogSpinalHDL

    不點藍字,何來故事?  學習SpinalHDL已有近半年,其誠然小眾,但“小家碧玉”未嘗不是絕代佳人。出坑Verilog遙想當年本科之時畫過電路PCB、玩兒過單片機、PLC,亦學...
    發表于 12-20 18:56 ?3次下載
    從<b class='flag-5'>Verilog</b>到<b class='flag-5'>SpinalHDL</b>

    SpinalHDL中的對應關系及聲明形式

    針對SpinalHDL中的兩大類型Reg、Wire,來梳理下在SpinalHDL中的對應關系及聲明形式。
    的頭像 發表于 07-03 11:02 ?1619次閱讀

    SpinalHDL里如何實現Sobel邊緣檢測

    書接上文,趁著今天休假,采用SpinalHDL做一個小的demo,看看在SpinalHDL里如何優雅的實現Sobel邊緣檢測。
    的頭像 發表于 08-26 08:59 ?1332次閱讀

    SpinalHDL BlackBox時鐘與復位

    SpinalHDL中使用之前已有的Verilog等代碼的時候需要將這些代碼包在一個BlackBox里面,但是如果這些代碼里面有時鐘和復位,我們需要怎么將時鐘和復位端口和SpinalHDL中已有的時鐘域連接起來呢?
    的頭像 發表于 05-04 11:13 ?860次閱讀
    <b class='flag-5'>SpinalHDL</b> BlackBox時鐘與復位

    SpinalHDL Simulation性能提升測試

    昨晚看SpinalHDL的Issues,其中有一個關于性能提升的case 吸引到了我,嘗試實驗到深夜,測試下在SpinalHDL以及cocotb下的性能優化手段。
    的頭像 發表于 08-06 17:10 ?877次閱讀
    <b class='flag-5'>SpinalHDL</b> Simulation性能提升測試
    三星百家乐官网的玩法技巧和规则| 百家乐官网讯特| 百家乐桌手机套| 百家乐官网最低投注| 大发888娱乐城网站| A8百家乐娱乐城| 百家乐官网摇色子网站| 豪博百家乐娱乐城| 网络轮盘| 百家乐网站| 线上百家乐玩法| 澳门百家乐官网长赢打| 百家乐官网路单| 百家乐官网视频看不到| 德州扑克规则| 全讯网赢足一世| 澳门百家乐规律星期娱乐城博彩| 百家乐官网老千| 百家乐官网专业术语| 澳门百家乐官网几副牌| 郸城县| 今天六合彩开什么| 大发888娱乐场zb8| 威尼斯人娱乐城图| 百家乐娱乐网代理佣金| 百家乐现金网平台排行榜| 百家乐官网网址官网| 百家乐官网一起多少张牌| 百家乐官网投注信用最好的| 固始县| 易发娱乐| 银都娱乐| 澳门博彩| 百家乐网| 沐川县| 奉化市| 百家乐官网销售视频| 百家乐官网博弈之赢者理论坛| 百家乐官网2号技术| 百家乐官网赌场程序| 百家乐官网的战术|