Verilog缺點
自從1995年Verilog HDL 1364-1995標準發(fā)布至今已經(jīng)20多年了,說他經(jīng)久不衰并不恰當,主要是沒有新的語言可以替代,現(xiàn)今數(shù)字電路高速發(fā)展,Verilog的一些缺點暴露的越來越多,下面總結(jié)一下:
借用知乎上“馬車”的觀點:
例化不方便:有人會說,有輔助插件幫你完成 (確實有很多好的插件,emacs verilog-mode , vim 的autoinst) 即便這樣,但是對帶參數(shù)的模塊例化, 一對多例化同樣需要手動處理,非常不方便
大量的重復(fù)聲明:無休止的變量聲明,無休止的位寬聲明,容易出錯, 作為一門上古時期的語言,對編譯器不能要求太高
函數(shù)不能帶參數(shù):verilog中函數(shù)的使用只能是零零星星,哪怕是一個位寬的變化都要重寫函數(shù), 作為一門語言函數(shù)不能廣泛使用,實為雞肋
參數(shù)化實在是笨:雖然支持參數(shù)化,parameter 也只能做一些簡單的加減左移操作, 沒有基本math包。利用宏做參數(shù)化,對于變量比較多的設(shè)計,非常復(fù)雜,并且也不好維護
錯誤檢測很弱:編譯工具對錯誤的處理比較保守, 這種保守可能也源于語言本身,以及編譯器的能力不及。
以下問題需要工程師自己處理
位寬不匹配
input/output端口寫反
飽和截位弄錯
跨時鐘域問題鎖存器檢查組合邏輯環(huán)自己查....
基于前仿的編譯,會遺漏大量的錯誤,必須要Lint, 綜合檢查, 費時費力又費錢。
重構(gòu)、增減信號,Bist/DFT邏輯插入麻煩
需要手動處理, 編寫腳本, 即便是腳本也不通用
(內(nèi)容來源:https://www.zhihu.com/question/440688150 作者:溫戈 公眾號:OpenIC)
基于以上各種各樣的缺點,一些基于Verilog語言的第三方語言(本質(zhì)仍然是HDL)陸續(xù)出現(xiàn),像SpinalHDL,Chisel和本文的主角MyHDL都是這類語言,關(guān)于SpinalHDL,Chisel請查看(https://www.zhihu.com/question/440688150)
MyHDL介紹
你能想象有一天能用Python編寫“硬件”嗎?
(本系列基于MyHDL 0.10.0 版 on Python3)
譯自 http://docs.myhdl.org/en/stable/manual/intro.html
MyHDL項目的目標是通過python語言的優(yōu)雅和簡潔性來增強硬件設(shè)計者的能力。
MyHDL是一種免費、開源的軟件包,用于使用python作為硬件描述和驗證語言。python是一種非常高級的語言,硬件設(shè)計者可以利用它的全部力量來建模和仿真他們的設(shè)計。此外,可以將設(shè)計轉(zhuǎn)換為verilog或vhdl語言。這提供了一個融入傳統(tǒng)設(shè)計流程的切入口。
建模
python的強大和清晰性使MyHDL成為高層次建模的理想解決方案。python以為復(fù)雜建模問題提供優(yōu)雅解決方案而聞名。此外,python對于快速應(yīng)用程序開發(fā)和試驗是非常優(yōu)秀的。
MyHDL背后的關(guān)鍵思想是使用python生成器來建模硬件并發(fā)性。生成器最好被描述為可(從暫停狀態(tài)中)恢復(fù)函數(shù)。MyHDL生成器類似于verilog的always塊和vhdl中的過程。
一個硬件模塊(MyHDL術(shù)語中的塊)建模為返回生成器的函數(shù)。這種方法使支持諸如任意層次結(jié)構(gòu)、命名端口關(guān)聯(lián)、實例數(shù)組和條件實例化等特性變得簡單明了。此外,MyHDL提供了實現(xiàn)傳統(tǒng)硬件描述概念的類。它提供了一個信號類來支持生成器之間的通信、支持面向位操作的類以及枚舉類型類。
仿真與驗證
內(nèi)置仿真器運行在python解釋器的頂部。它支持通過觀看波形來跟蹤vcd文件中的信號變化。
使用MyHDL,python單元測試框架可以用于硬件設(shè)計。雖然單元測試是一種流行的現(xiàn)代軟件驗證技術(shù),但在硬件設(shè)計領(lǐng)域還是比較少見的。
MyHDL還可以作為verilog設(shè)計的硬件驗證語言,通過與傳統(tǒng)的hdl模擬器進行仿真。
轉(zhuǎn)換為Verilog語言與VHDL語言
遵從一定的限制后,可將MyHDL設(shè)計轉(zhuǎn)換為verilog語言或vhdl語言,這是切入傳統(tǒng)設(shè)計流程的一條路徑,包括綜合和實現(xiàn)。可轉(zhuǎn)換子集受到限制,但比標準可綜合子集要寬得多。它包括可用于高層次建模和test benches的功能。
轉(zhuǎn)換器處理一個已完全解析的設(shè)計實例。因此,原有的設(shè)計結(jié)構(gòu)可以任意復(fù)雜。此外,轉(zhuǎn)換限制僅適用于生成器內(nèi)部的代碼。除了外部生成器,python的能力可以充分釋放,而不影響可轉(zhuǎn)換性。
最后,轉(zhuǎn)換器自動地實現(xiàn)了許多用verilog或vhdl編寫困難的任務(wù)。一個顯著點是自動處理有符號算術(shù)問題。
-
Verilog
+關(guān)注
關(guān)注
28文章
1345瀏覽量
109996 -
HDL
+關(guān)注
關(guān)注
8文章
327瀏覽量
47344 -
編譯
+關(guān)注
關(guān)注
0文章
654瀏覽量
32813
原文標題:硬件開源編程利器MyHDL簡介
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論