对gezel有用的网址:
http://rijndael.ece.vt.edu/gezel2/index.php/Main_Page
下面的文章摘自这个人的博客,
http://edacn.net/index.php/83433/spacelist-blog-itemtypeid-1395.html
国内好像只有他的博客里对gezel有大量研究.
=====================================================================
我对gezel的看法(一)
在见到的硬件语言中,比较看好gezel和SpecC,都是以FSMD为核心。FSMD最大好处是将硬件并发执行顺序化,对于以前从事软件开发的我,是比较偏爱。EDA中国门户网站P N SS-^ R!]
w-O*M
gezel比较可爱之处,我觉得有以下几点:EDA中国门户网站Xw
q)I7dq(A
1、以FSMD为核心,其实,在rtl设计时,我们都在无形中使用FSMD,电路无时无刻在执行,组合逻辑负责变换,寄存器控制节奏,而FSMD将其合理化、理论化。gezel将FSM和DATAPATH分开是非常明智的,清晰性、可读性非常好;
/O+aC!r0Hg(s.t$?b7B?r0 2、语法简单、面向硬件实现,简洁的语法,主要针对硬件实现而设计,每一步都是很确定的,很少引起歧义。这和面向仿真的rtl语言有很大区别。
x(B X3o7pc0 3、开源,为扩展打开了广阔的空间,也方便了开发者定制。不过,自1.7版本后去掉了fdlvhd的源代码,是否有准备商业化的嫌疑?
H/P
UsG9F?j,e9k0EDA中国门户网站4TA
Pj3y/k8N
总之,我觉得gezel是个非常好的创举,其思想很有启发性,是为“硬件开发者”设计的“实现硬件”的一种语言,有一种返璞归真的闻道。
9a0o?G?[*]5t6da;n8o0EDA中国门户网站1_8kVzv-^ fH|
SpecC在接口协商方面可能更胜一筹,不过,gezel的发展空间还很大。
本文原址:http://edacn.net/html/33/83433-33183.html
我对gezel的看法(二)
就我对gezel的认识,觉得有以下好处:
/{bj$W;{#v?f
|2H4}13977EDA中国门户网站
r?X^:VX7d*w5{z:F
W
1、语法简洁,可读性好,特别是数据通路和控制通路的分离。verilog和vhdl较复杂;
[1]k1}C|KW*f139772、面向硬件实现,从fdl程序可以直接得到硬件实现,而现在许多esl工具,其生成的代码要看懂实在太难。verilog和vhdl面向硬件仿真,如果代码很长、很复杂,要想象出硬件是很不容易的。EDA中国门户网站
E[1]R1g c*Q
T [Le(xeK
3、语义确定,象gezel中的寄存器就是硬件中寄存器,而verilog和vhdl却不然;
%U3_^+e6Ae1a139774、 思想明确,清晰易理解,其sfg,fsmd都是常用的硬件实现方法,而vhdl和verilog由于语言丰富,书写风格多样,有经验写的直接对应硬件,而 无经验的可能写成类似c语言的实现,其综合结果会相差千里;gezel强制采用sfg,fsmd等方法,只能在充分理解sfg,fsmd等方法及其对应的 硬件实现后,才能写出合格的gezel程序。不知道fsmd可以写出vhdl或verilog程序,但不知道fsmd,却不好写出fdl。
`bh'i?W0I_h+?w)G13977 也可以说,gezel对vhdl和verilog进行了高级抽象,使其硬件实现方法化。当然,gezel还在发展中,还有许多不足。个人感觉,如果能在接口、通讯协议、共享资源方面有所扩展,就比较完美了。EDA中国门户网站4[6zji;~
前一段,在国外一个论坛上,看到有人建议写一本关于硬件设计的设计模式(设计模式取自C++的设计模式),我觉得这是一件非常好的事情,如果能有这样一本巨著,我们这些菜鸟即使写不出最好的硬件程序,也可写出不错的硬件程序。EDA中国门户网站m9SqTo-mgt:l
5、周期精确地、方便地和c语言接口仿真,比如,写一个mpeg4编码程序,可以一步一步嵌入fdl程序仿真,好了,直接生成hdl。当然,vhdl和erilog也可以和c接口,但你首先的熟悉一大堆接口规范,然后才能写程序。
jL5Ppg139776、开放源代码,如果你高兴,你可以根据自己的喜好和经验定制自己的工具。EDA中国门户网站B&L2n n$mT
EDA中国门户网站se R WGIt
其实,对于真正懂得硬件和硬件实现方法的高人,用任何语言都可以写出优秀的程序。只是有些工具会让我们少犯错误,有些工具教会我们怎样思考硬件、实现硬件。
3ozU]{V l}
@P;v;}13977EDA中国门户网站?A)@#YJz7Smn
总之,我觉得gezel是给“硬件者”实现“硬件”的语言。
1[9Q]c&T
FY{w13977EDA中国门户网站 Z
B@[1]I/G%J
以上仅是自己的一些拙见,还在学习中。欢迎讨论、批评指正。
本文原址:http://edacn.net/html/33/83433-33184.html
对gezel之fdlsim仿真调度算法的初步猜想
fdlsim其实就是一个解释器。
[1]p
`/A'X
z0 fdlsim仿真速度比其它事件驱动编译型仿真器可能要快(没比较过)。
dt Avz?n0 EDA中国门户网站8U-f?J.q3xGdJ 如果将vhdl看作CISC机,gezel可能就是risc机。EDA中国门户网站t?[b@!t8n&oX?a'|2C \?i
$AEg-V F _-] R0 gezel的确定性是由fmsd和fmsd的四条规则来保证,在此基础上简化了仿真和代码生成。EDA中国门户网站8_'a[1]S()4E q
fdlsim的仿真调度方法还没有搞清楚,不过从硬件执行特性猜想可能如下进行仿真调度:
N P g(d
gY?c0
C9^C-]?G
[1^ `j7Q0 1、寄存器处理:将寄存器分为寄存器和信号两个值,分别表示将来值和现在值,将来值参与寄存器更新,而现在值参与数据数据通路计算。在gezel中,寄存器默认值为0,而信号为未知。EDA中国门户网站@9y_9Ed)R)\8]
2、dp处理:对寄存器处理后,dp的计算将都是信号,其并行计算和顺序计算效果一样,不过要以sfg为变量范围,这里涉及到sfg是单周期以及fsmd的规则之一:任何周期不能有组合环。EDA中国门户网站B ]%N&t-C }C
3、fsm处理:顺序执行,比较简单,和软件执行相同。仅相当一个开关,在什么时候打开哪个通路。
*Kb&w
V#c[1]G-Q2?^0 4、仿真调度:
2CUY Rc3[0 a、寄存器值->寄存器信号值;
1B?WM?]'c7RG0 b、计算dp中各个sfg;EDA中国门户网站
}u.Z n
m[1]H Lj
c、查找fsm执行分支,得到正执行的sfg,标志下一步执行分支;
M^J~!qh$Z9?T&rM0 d、根据c得到的sfg,从dp中查找对应的sfg,更新输出,这涉及到fsmd的另一条规则:任何周期都要有确定的输出;
/M3l-~(y6),z7E?)0 e、寄存器信号值->寄存器值;EDA中国门户网站#l h-A(ao
f、周期计算加一,goto a。
以上仅初步想法,望指正、讨论。