關(guān)于新的HDL描述語言GEZEL的介紹

一篇09年網(wǎng)絡(luò)搜集的資料。關(guān)于GEZEL這個(gè)HDL語言,目前在網(wǎng)上搜索,中文網(wǎng)頁的結(jié)果好像只有我的老博客(163和CSDN)的網(wǎng)頁, 我文中引用的edacn的博客文章也已經(jīng)打不開了, 有點(diǎn)可惜, 下文中有些明顯有問題的地方, 也無法矯正了.
可能GEZEL確實(shí)太冷門了, 也沒有必要再去研究學(xué)習(xí)了, 權(quán)當(dāng)擴(kuò)展視野了解一下.
gezel有用的網(wǎng)址:
http://rijndael.ece.vt.edu/gezel2/index.php/Main_Page
下面的文章摘自這個(gè)人的博客,
http://edacn.net/index.php/83433/spacelist-blog-itemtypeid-1395.html
國內(nèi)好像只有他的博客里對(duì)gezel有大量研究.
我對(duì)gezel的看法(一)
在見到的硬件語言中,比較看好gezel和SpecC,都是以FSMD為核心。FSMD最大好處是將硬件并發(fā)執(zhí)行順序化,對(duì)于以前從事軟件開發(fā)的我,是比較偏愛。
gezel比較可愛之處,我覺得有以下幾點(diǎn):
以FSMD為核心,其實(shí),在rtl設(shè)計(jì)時(shí),我們都在無形中使用FSMD,電路無時(shí)無刻在執(zhí)行,組合邏輯負(fù)責(zé)變換,寄存器控制節(jié)奏,而FSMD將其合理化、理論化。gezel將FSM和DATAPATH分開是非常明智的,清晰性、可讀性非常好;
語法簡單、面向硬件實(shí)現(xiàn),簡潔的語法,主要針對(duì)硬件實(shí)現(xiàn)而設(shè)計(jì),每一步都是很確定的,很少引起歧義。這和面向仿真的rtl語言有很大區(qū)別。
開源,為擴(kuò)展打開了廣闊的空間,也方便了開發(fā)者定制。不過,自1.7版本后去掉了fdlvhd的源代碼,是否有準(zhǔn)備商業(yè)化的嫌疑?
總之,我覺得gezel是個(gè)非常好的創(chuàng)舉,其思想很有啟發(fā)性,是為“硬件開發(fā)者”設(shè)計(jì)的“實(shí)現(xiàn)硬件”的一種語言,有一種返璞歸真的聞道。
SpecC在接口協(xié)商方面可能更勝一籌,不過,gezel的發(fā)展空間還很大。
本文原址:http://edacn.net/html/33/83433-33183.html
我對(duì)gezel的看法(二)
就我對(duì)gezel的認(rèn)識(shí),覺得有以下好處:
語法簡潔,可讀性好,特別是數(shù)據(jù)通路和控制通路的分離。verilog和vhdl較復(fù)雜;
面向硬件實(shí)現(xiàn),從fdl程序可以直接得到硬件實(shí)現(xiàn),而現(xiàn)在許多esl工具,其生成的代碼要看懂實(shí)在太難。verilog和vhdl面向硬件仿真,如果代碼很長、很復(fù)雜,要想象出硬件是很不容易的。
語義確定,象gezel中的寄存器就是硬件中寄存器,而verilog和vhdl卻不然;
思想明確,清晰易理解,其sfg,fsmd都是常用的硬件實(shí)現(xiàn)方法,而vhdl和verilog由于語言豐富,書寫風(fēng)格多樣,有經(jīng)驗(yàn)寫的直接對(duì)應(yīng)硬件,而 無經(jīng)驗(yàn)的可能寫成類似c語言的實(shí)現(xiàn),其綜合結(jié)果會(huì)相差千里;gezel強(qiáng)制采用sfg,fsmd等方法,只能在充分理解sfg,fsmd等方法及其對(duì)應(yīng)的 硬件實(shí)現(xiàn)后,才能寫出合格的gezel程序。不知道fsmd可以寫出vhdl或verilog程序,但不知道fsmd,卻不好寫出fdl。
也可以說,gezel對(duì)vhdl和verilog進(jìn)行了高級(jí)抽象,使其硬件實(shí)現(xiàn)方法化。當(dāng)然,gezel還在發(fā)展中,還有許多不足。個(gè)人感覺,如果能在接口、通訊協(xié)議、共享資源方面有所擴(kuò)展,就比較完美了。
前一段,在國外一個(gè)論壇上,看到有人建議寫一本關(guān)于硬件設(shè)計(jì)的設(shè)計(jì)模式(設(shè)計(jì)模式取自C++的設(shè)計(jì)模式),我覺得這是一件非常好的事情,如果能有這樣一本巨著,我們這些菜鳥即使寫不出最好的硬件程序,也可寫出不錯(cuò)的硬件程序。
5. 周期精確地、方便地和c語言接口仿真,比如,寫一個(gè)mpeg4編碼程序,可以一步一步嵌入fdl程序仿真,好了,直接生成hdl。當(dāng)然,vhdl和erilog也可以和c接口,但你首先的熟悉一大堆接口規(guī)范,然后才能寫程序。
6. 開放源代碼,如果你高興,你可以根據(jù)自己的喜好和經(jīng)驗(yàn)定制自己的工具。
其實(shí),對(duì)于真正懂得硬件和硬件實(shí)現(xiàn)方法的高人,用任何語言都可以寫出優(yōu)秀的程序。只是有些工具會(huì)讓我們少犯錯(cuò)誤,有些工具教會(huì)我們怎樣思考硬件、實(shí)現(xiàn)硬件。
總之,我覺得gezel是給“硬件者”實(shí)現(xiàn)“硬件”的語言。
以上僅是自己的一些拙見,還在學(xué)習(xí)中。歡迎討論、批評(píng)指正。
本文原址:http://edacn.net/html/33/83433-33184.html
對(duì)gezel之fdlsim仿真調(diào)度算法的初步猜想
fdlsim其實(shí)就是一個(gè)解釋器。
fdlsim仿真速度比其它事件驅(qū)動(dòng)編譯型仿真器可能要快(沒比較過)。
如果將vhdl看作CISC機(jī),gezel可能就是risc機(jī)。
gezel的確定性是由fmsd和fmsd的四條規(guī)則來保證,在此基礎(chǔ)上簡化了仿真和代碼生成。
fdlsim的仿真調(diào)度方法還沒有搞清楚,不過從硬件執(zhí)行特性猜想可能如下進(jìn)行仿真調(diào)度:
寄存器處理:將寄存器分為寄存器和信號(hào)兩個(gè)值,分別表示將來值和現(xiàn)在值,將來值參與寄存器更新,而現(xiàn)在值參與數(shù)據(jù)數(shù)據(jù)通路計(jì)算。在gezel中,寄存器默認(rèn)值為0,而信號(hào)為未知。
dp處理:對(duì)寄存器處理后,dp的計(jì)算將都是信號(hào),其并行計(jì)算和順序計(jì)算效果一樣,不過要以sfg為變量范圍,這里涉及到sfg是單周期以及fsmd的規(guī)則之一:任何周期不能有組合環(huán)。
fsm處理:順序執(zhí)行,比較簡單,和軟件執(zhí)行相同。僅相當(dāng)一個(gè)開關(guān),在什么時(shí)候打開哪個(gè)通路。
仿真調(diào)度:
a. 寄存器值->寄存器信號(hào)值;
b. 計(jì)算dp中各個(gè)sfg;
c. 查找fsm執(zhí)行分支,得到正執(zhí)行的sfg,標(biāo)志下一步執(zhí)行分支;
d. 根據(jù)c得到的sfg,從dp中查找對(duì)應(yīng)的sfg,更新輸出,這涉及到fsmd的另一條規(guī)則:任何周期都要有確定的輸出;
e. 寄存器信號(hào)值->寄存器值;
f. 周期計(jì)算加一,goto a。
以上僅初步想法,望指正、討論。
本文原址:http://edacn.net/html/33/83433-33213.html