日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

systemverilog硬件设计及建模_Chisel引领敏捷硬件开发浪潮

發布時間:2025/3/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 systemverilog硬件设计及建模_Chisel引领敏捷硬件开发浪潮 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載一篇18年6月的舊文

眾所周知,近來開源處理器項目RISC-V在半導體業界掀起了一片新的潮流。這股潮流同時帶來的,還包括了敏捷芯片開發。

“敏捷開發”對于IC設計工程師來說似乎比較陌生,事實上它已經在軟件開發中占有重要地位,主要是指開發團隊在面對多變的需求時,能快速實現版本迭代,以精干的團隊在短時間內快速提交高質量的代碼。

事實上,芯片開發周期過長已經是阻礙半導體數字設計快速發展的重要瓶頸。Verilog HDL能實現完整的數字電路開發,但是其代碼密度低,許多團隊為了加速開發還必須配合團隊約定的coding style自行開發非標準的Perl/Python腳本以完成部分代碼編寫的自動化,然而這種方式的可移植性存在問題。之前EDA業界也在嘗試把C代碼直接編譯成Verilog的高級語言綜合(high-level synthesis),但是該嘗試目前僅僅在FPGA領域獲得了有限的成功。U.C. Berkeley在設計和開發RISC-V標準和Core的過程中,引入了Chisel這樣的開發工具,并且很大程度上反哺和改進了Chisel。那么,U.C. Berkeley這么做的原因是什么?給整個數字IC設計領域會帶來哪些改變呢?

先擺事實再講道理,讓我們先跳過過程看下結果吧。

  • SiFive作為Berkeley孵化出的高科技公司,幾乎所有的研發均使用chisel

  • rocket-chip項目在Github上做為標志性的chisel項目,包含一個可定制型很強的CPU和總線等其他IP

  • rocket-chip項目到2018年6月有接近6000次提交

  • 2017年,SiFive在眾籌網站CrowdSupply上發布了Hifive1,板子上搭載的芯片就是基于rocket-chip并添加其他第三方IP的FE310芯片,工藝為TSMC 180nm,這是一塊Arduino兼容的開發板

  • 2018年,SiFive又在CrowdSupply上發布了其4+1核心的可以運行Linux操作系統的HiFive Unleashed開發板,芯片代號FEU540,工藝為TSMC 28nm,這款SoC芯片依然是基于rocket-chip的。

所以在我看來,為什么用chisel而不用其他語言自然是因為人家覺得好用,Berkeley可以稱得上是在諸多大學里非常接地氣的大學了,他們似乎除了提出超前的概念之外,更有能力去讓這些想法落地,去看看人家孵化出多少硅谷項目(Spark,Unix/BSD)就知道了。

所以,今天我們就在這里聊聊chisel吧。客觀地說chisel沒打算取代verilog或者systemverilog,而只是希望在這個基礎之上做一個高層次的構建語言,所以我們實際上可以把chisel叫做Hardware?construction?language,要明白這和高層次綜合(HLS)并無半點關系。(但是你也可以在chisel的基礎上構建HLS,這是另一碼事。)

聊到chisel,很多前端工程師就會想到Java和Scala,這是比較常見的誤區,所以不如先聊聊Scala吧。

Scala:天生適合做"新語言"的"高級玩具"

先想象下你有一盒含有MindStorm套件的樂高積木,用它來做了一輛遙控車。Scala就是這樣的"高級玩具"。

Scala是由洛桑聯邦理工學院的Martin Odersky?精心設計的一門多范式、函數式和面向對象的編程語言。我們可以不用太關心前面的定語,我們只要記住,Scala很適合做領域特定語言(DSL),這一定程度上是設計出來的,而非偶然。當然,”函數式“這個屬性必須得提一下,因為函數式編程語言往往和硬件模塊存在一些等價轉換關系。

DSL意味著他可以像橡皮泥或者積木一樣被組合或者塑造成為新的語言,一個經典的案例就是把Scala捏成BASIC語言。(有興趣的讀者可以參見這個Github Repo: https://github.com/fogus/baysick)

看到了么,因為Scala中幾乎所有的元素都是對象,并且都能夠被賦予新的功能,同時配合大量的語法糖,所以這個無聊的小哥用它來實現了一門新的語言,而且只用了300行。(有興趣的讀者可以參考Code: https://git.io/vhMmO)

Chisel要解決什么問題?

請允許我舉一個非常不恰當的栗子,我們以設計一個CPU為例吧。

你本科熬了幾年圖書館,擠破了頭進入國內某微電子學院做了研究生,老師進來和你說我有個很好的想法,能夠有效的改進指令效率或者多核性能或者功耗。

老師說你做個5級流水線CPU吧,還要把cache、總線、外設之類也做了(沒緩存搞什么多核?)。好吧,我承認你很聰明,不出幾個月你把CPU寫的差不多了,然后cache、總線、外設這些大頭還遠著呢。又過了幾個月你天天啃《量化研究方法》,然后終于把cache實現了。然后你寫了個GPIO,又掛了個SRAM,好吧,你終于實現了一個小的CPU了。為了降低難度,你用了學術界最愛的MIPS體系結構,用了最土的wishbone總線。然后你開始了擼軟件了,因為用了MIPS,你的難度已然降低了很多,而且你不用考慮編譯器的問題了,你又吭哧了好幾個月,寫了個巨土的bootloader,終于把程序加載了。盡管后面可能還要在FPGA上跑起來,要發頂作的同學還要去申請經費流個片,這估計又要好久好久。但到目前為止你終于可以開始評估下你的設計的好壞了。

你跑了一堆benchmark,得出了一些結果,然后你才開始把導師的idea應用到你的設計中。然后,然后,你就碩士畢業了,放心吧,你的這個攤子,你的學弟們會接鍋的。

這里盡管很多東西不那么真實,但是不得不說大學教授的很多項目,都是好幾屆學生慢慢做才做下來的,而且做歸做,評估歸評估。做完了哪里不好還得繼續改進,因為有了架構,離實現到最后變成芯片還遠著呢。更何況,評估一個設計好壞這件事本身或許難度更大。

以上的故事暴露了一個問題,對于改進硬件架構這件事,反饋環實在太長了。

所以扯了半天,我其實就想說一句話,硬件設計太耗時,Verilog寫的蛋疼,需求要是變一點,那些個接口就得跟著變。要是速度上不去了,我要是想換個架構,又要花好久。

的確,SystemVerilog這些問題也都有類似的解決方案,但似乎chisel的代碼密度更高,面向對象和高級語言特性支持的更好。和SystemVerilog提供的一步到位相比,Chisel首先生成通用的Verilog,然后交由后端處理的方式,降低了對EDA工具的要求。還有更重要的一點,它是開源和免費的。

RISC-V和Chisel的小故事

所以當Berkeley的Krste教授和他的學生們決定要去做一些研究的時候(比如下一代數據中心的CPU架構、后摩爾定律時代的CPU架構或是AI加速處理器的時候),他們當然希望反饋環足夠短啊!盡早評估、快速迭代對一個研究者來說太重要了啊。

差不多在同一時間,Berkeley的Joseph Whitworth教授也正好開始了Chisel的研究和開發工作,那他們自然就要決定聯合起來做些有趣的事情。當他們決定做他們的第五代RISC CPU指令集的時候,他們需要設計一個真實的CPU來評估他們設計指令集過程中的每一個選擇。所以他們從頭用Chisel寫了CPU,因為chisel面向對象的一些屬性,他們能用很少的時間就把設計做好并且評估,chisel只要幾十秒就可以生成verilog或者C++model,然后直接扔進仿真器里去跑benchmark。

就這樣他們沒用多少年就做了一個全新的開源指令集RISC-V,這個指令集有多好呢?我說你肯定不信,我引用一段最近David Ditzel采訪里的話。Dave在Sun參與過SPARC ISA的設計,后面創立了全美達(Transmeta)曾經讓Intel也膽戰心驚。他最近成立了一家新的公司做RISC-V的高性能CPU。以下是采訪內容:

RISC-V wasn't even on the shopping list of alternatives, but the more Esperanto's engineers looked at it, the more they realized it was more than a toy or just a teaching tool. “We assumed that RISC-V would probably lose 30% to 40% in compiler efficiency [versus Arm or MIPS or SPARC] because it’s so simple,” says Ditzel. “But our compiler guys benchmarked it, and darned if it wasn't within 1%.”

“RISC-V最開始甚至不在我們可考慮范圍之內,但是我們Esperanto的工程師越深入的了解它,就越發現RISC-V不僅僅是個玩具或者教學用的工具。我們還假定說RISC-V在編譯器效率上相比Arm/MIPS/SPARC會損失30%到40%左右,因為它實在是太簡單了。但我們的編譯器工程師對他進行了評測,發現只損失了可恨的不到1%。”Ditzel如是說

基于這幾個事實我得出的推論就是,當我能夠更快的評估我的硬件時,我就能更快的改進它,也就是能比別人更早的靠近不斷變化中的有效邊界。

這里其實引出了一個更有意義話題,如果沒有Chisel這樣的工具,RISC-V作為一個標準,能夠如此快的成熟并且達成諸多成就么?(如:短短幾年內就被Linux/GNU Toolchain/LLVM/Qemu... 等并入主線)

Chisel的未來

當我們看待一件新事物的時候,千萬不要用他現有的狀態去預測它的未來。你一定得想想,Chisel未來會發展成什么樣。

Chisel仍然是一門不斷發展和進化中的項目,我能夠看到的一個重要的節點就是chisel開始分離成為兩個項目,chisel和firrtl。簡單講,如果把chisel理解為把chisel代碼轉化為verilog的話,那么這個步驟被分為了兩步:

  • 從chisel到firrtl(一種硬件描述中間表達)

  • 從firrtl到verilog

  • 在筆者看來這個思路就是LLVM的思路,熟悉編譯器的朋友或許知道,LLVM設計了一種描述清楚的中間表達llir,編譯器前端可以將任何語言轉化為llir,而所有的中間優化步驟會一級級的處理llir,優化過的內容仍然是llir表達的,最終的llir會被編譯器后端(Backend)轉化為到目標機器匯編代碼。我們可以說幾乎大部分編譯器都是這樣工作的,但是當llir足夠開放并且易于被他使用的時候,就會有更多的人來加入這個陣營,發揮他們各自的專業優勢來實現更好的編譯器PASS。這也是為什么LLVM本質上是編譯器基礎設施(compiler infrastructure)而非僅僅是編譯器軟件。

    所以請允許我用下面的圖不專業的理解一下LLVM所做的事的話。

    那么讓我再次發揮一下想象力,想像一下chisel+firrtl想要做的。

    這里我不想解釋太多,但我會問個問題:如果RISC-V會抹平過去高昂的CPU授權費,那么昂貴的EDA工具這個山頭誰來抹平呢?

    不要小看開源的力量!

    請保持開放的心態

    冷靜的看待chisel的話,我認為這是就是未來或者是未來路上的一站,原因是它能提高生產力,我們也必須抱著同樣包容的心態去看待其他類似的方法和途徑。誰也看不清未來是怎樣的,但是你要明白,當未來到來的時候,要想領先別人,你現在就得去做些什么對自己未來有利的事情。

    事實上,在John Hennessy and David Patterson最新的圖靈獎演講上,同時提到了"DSA"和"Agile Chip Development",而chisel,或許就是開啟這個新黃金時代的先鋒。

    所以,當你和我抱怨chisel是scala寫的,我不會scala的時候,看我的大白眼!

    總結

    以上是生活随笔為你收集整理的systemverilog硬件设计及建模_Chisel引领敏捷硬件开发浪潮的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。