侧边栏切换

关于新的描述语言GEZEL的介绍

最后编辑于: 2009-10-11 12:07  |  分类: FPGA  |  标签:   |  浏览数: 963  |  评论数: 0


一篇09年网络搜集的资料。关于GEZEL这个HDL语言,目前在网上搜索,中文网页的结果好像只有我的老博客(163和CSDN)的网页, 我文中引用的edacn的博客文章也已经打不开了, 有点可惜, 下文中有些明显有问题的地方, 也无法矫正了.

可能GEZEL确实太冷门了, 也没有必要再去研究学习了, 权当扩展视野了解一下.

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最大好处是将硬件并发执行顺序化,对于以前从事软件开发的我,是比较偏爱。

gezel比较可爱之处,我觉得有以下几点:

  1. 以FSMD为核心,其实,在rtl设计时,我们都在无形中使用FSMD,电路无时无刻在执行,组合逻辑负责变换,寄存器控制节奏,而FSMD将其合理化、理论化。gezel将FSM和DATAPATH分开是非常明智的,清晰性、可读性非常好;
  1. 语法简单、面向硬件实现,简洁的语法,主要针对硬件实现而设计,每一步都是很确定的,很少引起歧义。这和面向仿真的rtl语言有很大区别。
  1. 开源,为扩展打开了广阔的空间,也方便了开发者定制。不过,自1.7版本后去掉了fdlvhd的源代码,是否有准备商业化的嫌疑?

总之,我觉得gezel是个非常好的创举,其思想很有启发性,是为“硬件开发者”设计的“实现硬件”的一种语言,有一种返璞归真的闻道。

SpecC在接口协商方面可能更胜一筹,不过,gezel的发展空间还很大。

本文原址:http://edacn.net/html/33/83433-33183.html


我对gezel的看法(二)

就我对gezel的认识,觉得有以下好处:

  1. 语法简洁,可读性好,特别是数据通路和控制通路的分离。verilog和vhdl较复杂;
  1. 面向硬件实现,从fdl程序可以直接得到硬件实现,而现在许多esl工具,其生成的代码要看懂实在太难。verilog和vhdl面向硬件仿真,如果代码很长、很复杂,要想象出硬件是很不容易的。
  1. 语义确定,象gezel中的寄存器就是硬件中寄存器,而verilog和vhdl却不然;
  1. 思想明确,清晰易理解,其sfg,fsmd都是常用的硬件实现方法,而vhdl和verilog由于语言丰富,书写风格多样,有经验写的直接对应硬件,而 无经验的可能写成类似c语言的实现,其综合结果会相差千里;gezel强制采用sfg,fsmd等方法,只能在充分理解sfg,fsmd等方法及其对应的 硬件实现后,才能写出合格的gezel程序。不知道fsmd可以写出vhdl或verilog程序,但不知道fsmd,却不好写出fdl。

也可以说,gezel对vhdl和verilog进行了高级抽象,使其硬件实现方法化。当然,gezel还在发展中,还有许多不足。个人感觉,如果能在接口、通讯协议、共享资源方面有所扩展,就比较完美了。

前一段,在国外一个论坛上,看到有人建议写一本关于硬件设计的设计模式(设计模式取自C++的设计模式),我觉得这是一件非常好的事情,如果能有这样一本巨著,我们这些菜鸟即使写不出最好的硬件程序,也可写出不错的硬件程序。

  1. 周期精确地、方便地和c语言接口仿真,比如,写一个mpeg4编码程序,可以一步一步嵌入fdl程序仿真,好了,直接生成hdl。当然,vhdl和erilog也可以和c接口,但你首先的熟悉一大堆接口规范,然后才能写程序。
  1. 开放源代码,如果你高兴,你可以根据自己的喜好和经验定制自己的工具。

其实,对于真正懂得硬件和硬件实现方法的高人,用任何语言都可以写出优秀的程序。只是有些工具会让我们少犯错误,有些工具教会我们怎样思考硬件、实现硬件。

总之,我觉得gezel是给“硬件者”实现“硬件”的语言。

以上仅是自己的一些拙见,还在学习中。欢迎讨论、批评指正。

本文原址:http://edacn.net/html/33/83433-33184.html


对gezel之fdlsim仿真调度算法的初步猜想

fdlsim其实就是一个解释器。

fdlsim仿真速度比其它事件驱动编译型仿真器可能要快(没比较过)。

如果将vhdl看作CISC机,gezel可能就是risc机。

gezel的确定性是由fmsd和fmsd的四条规则来保证,在此基础上简化了仿真和代码生成。

fdlsim的仿真调度方法还没有搞清楚,不过从硬件执行特性猜想可能如下进行仿真调度:

  1. 寄存器处理:将寄存器分为寄存器和信号两个值,分别表示将来值和现在值,将来值参与寄存器更新,而现在值参与数据数据通路计算。在gezel中,寄存器默认值为0,而信号为未知。
  1. dp处理:对寄存器处理后,dp的计算将都是信号,其并行计算和顺序计算效果一样,不过要以sfg为变量范围,这里涉及到sfg是单周期以及fsmd的规则之一:任何周期不能有组合环。
  1. fsm处理:顺序执行,比较简单,和软件执行相同。仅相当一个开关,在什么时候打开哪个通路。
  1. 仿真调度:

a. 寄存器值->寄存器信号值;

b. 计算dp中各个sfg;

c. 查找fsm执行分支,得到正执行的sfg,标志下一步执行分支;

d. 根据c得到的sfg,从dp中查找对应的sfg,更新输出,这涉及到fsmd的另一条规则:任何周期都要有确定的输出;

e. 寄存器信号值->寄存器值;

f. 周期计算加一,goto a。

以上仅初步想法,望指正、讨论。

本文原址:http://edacn.net/html/33/83433-33213.html


上一篇: 基于leon开源软核的soc平台构建与测试

下一篇: 工程师的nios ii学习笔记