[Esterel大师课] Gérard Berry:使用Esterel v7进行同步多时钟电路设计(2013)
Gérard Berry是esterel语言的主要创始人。在2013年法兰西公学院,Gérard Berry开课讲授了使用Esterel v7进行同步多时钟电路设计的主题。下面是课程的摘要,详细内容,可参考课程视频Esterel v7:电路规范与综合
Esterel v7 的设计始于 1999 年,由美国波特兰市英特尔战略 CAD 实验室牵头,合作者包括迈克尔.基希涅夫斯基。他是我在电路领域的另一位导师,另一位导师则是 J. 维勒曼。基希涅夫斯基先生曾成功测试过 Esterel v5,发现其同步并行性和时序指令非常契合需求,同时也验证了综合与验证算法的效率。但通过整合数据路径规范来提升该语言的描述能力显得至关重要,这些规范包括数字表示、多字结构、数据与过程表等。2000 年,Esterel 科技公司成立,旨在推动 Esterel v7 的产业化,并将其推向电路 CAD 和关键实时软件领域市场。2009 年之前,我一直担任该公司的科学总监。2003 年 SCADE 被收购后,这一双重目标被放弃:Esterel v7 专注于电路领域,SCADE 则面向软件领域,而 Esterel v7 的相关研究成果为 SCADE 6 的定义奠定了重要基础。
我的团队随后开展了长达数年的语言、编译器及其开发环境 Esterel Studio 的研发工作,期间与英特尔、德州仪器(TI)、意法半导体(ST)和恩智浦(前飞利浦半导体)合作,进行了多项研究性或预工业化应用实验。之后,Esterel Studio 正式在德州仪器和意法半导体投入生产使用,应用场景包括各类存储控制(含数据密集型应用中难度较高的直接内存访问(DMA))、总线、片上网络与通信管理、视频系统控制等。
2007 年,为推动该语言的标准化,相关成果被提交至 IEEE,由一组科研人员和行业从业者牵头推进。其严谨的形式化特性使得电路开发速度更快,所需工程师(尤其是验证工程师)数量更少,同时仍能保持出色的效率。架构师和微架构师借助我们的图形化模拟器和形式化验证工具,能够快速测试和修改设计思路,且对最终综合结果的质量充满信心。2014 年,我将分享行业提出的科学问题如何比科研中遇到的问题更具挑战性,并介绍 Esterel v7 的形式化验证方法。
受 2008 年金融危机影响,这一项目于 2009 年 3 月终止,当时许多创新产品都遭遇了类似命运。已接近完成的 IEEE 语言标准化工作被迫暂停。Esterel Studio 被 Synfora 收购,而 Synfora 随后又被行业巨头新思科技(Synopsys)收购。新思科技决定搁置 Esterel Studio,即便其开发者也无法再使用该工具 —— 尽管此前所有工具均免费向教学和科研领域开放。
Esterel v7:语言设计
Esterel v7 的时序指令源自 Esterel v5,但简化了信号的同步传输或条件传输;模块化结构得到优化,变得更具通用性。Esterel v5 的信号也经过扩展以满足电路需求:信号的值和存在位均为可选,且值可分为临时型、存储型或延迟型。但该版本最主要的新特性是对数据和数组的支持。Esterel v7 引入了比常规语言更为精确的数值类型,例如无符号类型(unsigned type),表示满足 0 ≤ i <M 的 M 个自然数集合;以及有符号类型(signed type),表示满足 -M ≤ i < M 的 2M 个有符号整数集合。引入这些类型主要基于以下原因:首先,在电路设计中,仅通过二进制位数进行推理并不充分 —— 例如,4 被定义为 unsigned<5>、5 为 unsigned<6>,而 4×5=20 则为 unsigned<21>。若 4 和 5 以 3 位二进制表示,其乘积 20 需用 5 位二进制表示,而非简单叠加两者位数得到的 6 位,无符号类型 < 21 > 则清晰体现了这一点。其次,二进制并非硬件设计中唯一有用的编码方式,格雷码(每次递增仅一位变化)和独热码(数字表示中仅一位为 1)也广泛应用。有符号和无符号类型具有抽象性,与具体表示方式无关,且支持可变位数。最后,无符号类型可用于数组索引,通过类型分析或形式化验证,能在编译阶段轻松检测索引溢出问题。
在 Esterel v7 中,数组支持任意类型和大小,且可参数化,适用于信号和值。静态复制指令允许构建过程数组,用于操作数据和信号数组。此外,Esterel v7 支持两种时钟操作:周期屏蔽(时钟门控)—— 与传统 Verilog/VHDL 语言不同,它具有严格的数学语义;以及多时钟的模块化使用。这些内容将在 2014 年进行更详细的阐述。
讲座最后展示了一个视频微型滤波器案例,既说明了该语言的各项特性,也演示了如何利用它轻松实现电路 “流水线化”,从而缩短周期时间。
