1、1第8章 设计与验证语言的发展趋势本章小结 2以Verilog HDL和VHDL为代表的硬件描述语言(HDL)的发展至今已有20多年的历史,并成功地应用于设计的各个阶段:建模、仿真、验证和综合等。20世纪80年代出现了上百种硬件描述语言,对设计自动化曾起到了极大的促进和推动作用。在这些硬件描述语言中,Verilog HDL和VHDL最终成为行业界标准化语言。近年来,微电子技术飞速发展,在制造工艺上从350nm提高到22nm,为功能更强、更复杂的芯片制造提供了基础,数字集成电路的规模和复杂度迅速提高。在传统硅工艺上,集成电路正从单一的数字或模拟芯片向数模混合的单芯片结构发展;3芯片结构正从高频率
2、单一内核向低频率异构多内核体系发展;单芯片集成晶体管数量也从几万门增加到了几十亿门。这些新技术和新需求的产生为ULSI芯片设计方法和验证方法提出了新的要求,归结起来主要有两方面。4(1)如何提高ULSI规模的ASIC和FPGA的设计效率。大规模、高复杂度、数模混合是数字集成电路的发展趋势,应用在多媒体、通信系统、计算设备等领域的异构SoC和MPSoCs结构芯片已经成为集成电路新的增长点。如何在现有的硬件设计语言和方法学上,针对新的设计问题,提出有效的解决方法和途径是目前集成电路EDA领域需要解决的最主要问题。Verilog HDL和VHDL等硬件描述语言在解决中小规模数字集成电路的设计上发挥了
3、强有力的作用,然而集成度和规模的扩大使得传统硬件描述语言在设计效率上产生了新的问题。5应用在通信系统和多媒体领域的集成电路需要进行大量的复杂计算模型仿真和定点化设计,如图8-1所示,然后用硬件描述语言设计电路,如果不符合设计要求,就要修改数学模型,直到达到设计要求,再送到下一个阶段进行芯片设计。6图8-1 SoC设计流程7Verilog HDL和VHDL在这种系统级设计方面显得力不从心,而C、C+和Matlab等程序设计语言在系统级设计和仿真中显示出了强大的设计效率。这就导致了目前ULSI芯片设计的尴尬局面,即系统级设计采用高级程序设计语言,芯片设计和仿真采用灵活性较差的硬件描述语言。这种局面
4、使得数字集成电路的设计人员和部门分工变得复杂,严重影响了设计效率。设计人员希望能有一种高效的设计语言将系统设计和电路设计结合在一起,以面对复杂的大规模集成电路的设计。8(2)如何极大地提高电路规模和复杂结构芯片设计、仿真的效率和有效性。仿真和测试是确保数字集成电路芯片流片成功的关键。在目前的工艺水平和成本下集成电路的流片费用高,已经成为芯片成本的重要部分。如何有效通过仿真和测试确保芯片流片的成功率,是硬件描述设计语言面对的一个问题。当面对中小规模集成电路时,Verilog HDL和VHDL可以有效地从电路分析的角度进行硬件设计的测试和仿真。然而目前集成电路规模巨大,功能丰富,模拟和数字结构混合
5、,给测试和仿真带来了巨大困难。9同时,系统设计往往采用C语言等高级程序语言。这些情况一方面使得采用传统硬件描述语言的测试和仿真时间长,复杂程度高;另一方面使得系统验证和电路验证采用不同平台,一致性和可靠性降低。由于硬件电路测试和仿真时间长、复杂度高,同时也是确保芯片质量的重要环节,因此高效率的测试和仿真方法是硬件描述语言面对的另一个问题。10在2001年举行的国际HDL会议上,与会者就使用何种设计语言展开了生动、激烈的辩论。最后就“如果要启动一个芯片设计项目,愿意选择哪种方案”进行了投票表决,结果,仅有2、3票赞成使用SystemC为代表的高级程序设计语言,而有约40票赞成采用以Verilog
6、 HDL为代表的传统硬件描述语言。Verilog HDL支持者认为,开发一种新的设计语言是一种浪费,Verilog HDL有能力面对超大规模数字集成电路在设计方法方面的新困难;11SystemC支持者认为,系统级芯片SoC快速增长的复杂性需要新的设计方法;C语言的赞扬者认为,Verilog HDL是硬件设计的汇编语言,而编程的标准很快就会是高级语言,CynlibC+是最佳的选择,它的速度快、代码精简;Superlog的捍卫者认为,Superlog是Verilog HDL的扩展,可以在整个设计流程中仅提供一种语言和一个仿真器,与现有的方法兼容,是一种进化而不是一场革命。还有人提出设计带有模拟电路
7、的芯片,硬件描述语言必须有模拟扩展部分,如Verilog HDL-A,既要求能够描述门级、开关级,又要求具有描述物理特性的能力。12目前的情况是,以Verilog HDL和VHDL为代表的传统设计语言依旧是数字集成电路的最主要设计语言,以System Verilog 为代表的传统硬件描述语言逐渐在测试仿真中开始使用,以SystemC和C语言为代表的高级程序语言还在应用和推广的初期阶段。对于ULSI规模的集成电路设计和验证,面对的问题依然存在,设计语言还在不断的探索和完善中。下面对目前比较有希望的硬件设计语言作一个简单介绍。131System Verilog随着高级验证语言(如OpenVera语
8、言)的出现,Co-Design Automation Inc发明了Superlog语言。随后,Co-Design Automation Inc被Synopsys收购,Superlog 和 Vera 的基础被捐献给Accellera。之后,Superlog转换升级为System Verilog。Accellera在2002年6月推出了下一代Verilog标准System Verilog,SystermVerilog几乎可以弥补现有Verilog的所有缺陷。14SystemVerilog结合了来自 Verilog HDL、VHDL、C+的概念,还有验证平台语言和断言语言,也就是说,它将硬件描述语言
9、(HDL)与现代的高层级验证语言(HVL)结合了起来,使其对于进行当今高度复杂的设计验证的验证工程师具有相当大的吸引力。这些都使得System Verilog在一个更高的抽象层次上提高了设计建模的能力。它主要定位在芯片的实现和验证流程上,并为系统级的设计流程提供了强大的连接能力。System Verilog集合了Verilog HDL的简洁、C语言的强大、功能验证和系统级结构设计等特征,是一种高速的硬件描述语言,其体系结构如图8-2所示。15图8-2System Verilog体系结构16System Verilog是Verilog HDL的超集,支持最新的Verilog HDL 95和Ver
10、ilog HDL 2001的硬件模型。Sysytem Verilog提供C语言的结构、类型、指针,同时具有C+面向对象的特性和扩展综合子集ESS(提供一种新的硬件描述的综合抽象级),并且具有强大的验证功能和自动测试基准,如随机数据产生、功能覆盖、各种专有检查等。System Verilog 3.0标准于2002年6月发布,主要扩展是系统级设计和IP设计的建模。这些扩展为使用C/C+、SystemC的高层次系统体系结构工程师和RTL级、门级实现的硬件工程师提供了沟通的桥梁,使两组人员可以在同一种语言上进行通信而无需语言转换。17System Verilog 3.1标准于2003年5月发布,主要扩
11、展是先进的验证和C语言整合能力。2005年11月,IEEE通过了由Verilog HDL新标准和System Verilog统一成的标准语言IEEE 1800-2005 System Verilog统一的设计、说明和验证语言。IEEE 1800-2005 System Verilog扩展了IEEE 1364 Verilog,可用于体系结构级模型的建立和验证,标准还包括设计说明方法、嵌入断言语言、具有覆盖和断言API的测试程序(Testbench)语言,以及直接编程接口(DPI)。新标准能提高设计和确认的效率,包括设计、模拟、确认、基于断言的形式验证流等的效率。182SystemCSystemC
12、系统级描述和验证语言基于C+,是为熟悉CC+的人而设计,是一种软硬件协同设计语言。它具有较高的抽象能力,同时能体现出硬件设计中的信号同步、时间延迟、状态转换等物理信息,可以给工程师提供一个系统级设计的公共基础平台。在常用的设计语言中,C、C+和Java等高级编程语言有较高的抽象能力,但由于不能体现硬件设计的物理特性,硬件模块部分需重新用硬件描述语言设计,使得后续设计缺乏连贯性。19SystemC是在C+的基础上扩展了硬件类和仿真核形成的,由于结合了面向对象编程和硬件建模机制原理两方面的优点,这使得SystemC可以在抽象层次的不同级进行系统设计。系统硬件部分可以用SystemC来描述,其基本单
13、元是模块(Model),模块内可包含子模块、端口和过程,模块之间通过端口和信号进行连接和通信。随着通信系统复杂性的不断增加,工程师将更多地面对使用单一的语言来描述复杂的IP和系统,而SystemC语言具有良好的软硬件协同设计能力。20SystemC是一个C+库,也是一种使设计者可以有效地设计出一个软件算法的准确循环模型、硬件结构以及系统级设计的方法。设计者可以用SystemC开发工具或在标准C+开发工具中添加如SystemC库等来制作系统级模型,快速地仿真和优化设计,以及研究不同的算法,并且为硬件和软件设计人员提供一个设计系统的可执行规范。可执行规范本质上是一个C+程序,它显示了和设计系统同样
14、的性能,为软件设计人员和硬件设计人员提供了一个设计的标准。21SystemC库提供了创造系统结构模型的必需结构,包括了那些在C+中没有的功能,如硬件时序、并行和触发功能。C+这种面向对象语言提供了通过增加类来扩展语言的能力,而这种能力是C语言所不具备的,因此,SystemC使用的是大家熟悉的C+语言和开发工具。SystemC基于C+结构,图8-3中的上层构架都是很明确地建立在下层的基础上的。SystemC内核提供一个用于系统体系结构、并行、通信和同步时钟描述的模块;完全支持内核描述以外的数据类型、用户定义数据类型;通常的通信方式,如信号、FIFO,都可以在内核的基础上建立,经常使用的计算模块也
15、可以在内核基础上建立。22图8-3 SystemC体系结构23在实际使用中,SystemC由一组描述类库和一个包含仿真核的库组成。在用户的描述程序中,必须包括相应的类库,可以通过通常的ANSI C+编译器编译该程序。SystemC提供了软件、硬件和系统模块。用户可以在不同的层次上自由选择,建立自己的系统模型,进行仿真、优化、验证、综合等等。SystemC是由Synopsys公司和CoWare公司合作开发的。1999年9月27日,40多家世界著名的EDA公司、IP公司、半导体公司和嵌入式软件公司宣布成立“开放式SystemC联盟”。24著名的Cadence公司也于2001年加入了SystemC联盟。SystemC从1999年9月联盟建立初期的0.9版本开始更新,从1.0版到1.1版,直到2001年10月推出了最新的2.0版。25本章以Verilog HDL和VHDL两种硬件描述语言为代表,分析了集成电路设计过程中设计与验证语言的发展趋势,阐述了目前形势下对ULSI芯片设计方法和验证方法提出的新要求,最后对目前前景较好的硬件设计语言System Verilog和SystemC作了一个简单介绍。本本 章章 小小 结结