| |
片上系统设计与EDA
作者: 北京航空航天大学 夏宇闻
摘要:利用EDA工具和硬件描述语言(hdl),根据产品的特定要求设计性能价格比高的片上系统,是目前国际上广泛使用的方法。与传统的设计方法不同,在设计开始阶段并不一定需要具体的单片微控制器(MCU)和开发系统(仿真器)以及带有外围电路的线路板来进行调试,所需要的只是由集成电路制造厂家提供的用HDL描述的MCU核和各种外围器件的HDL模块。设计人员在EDA工具提供的虚拟环境下,不但可以编写和调试汇编程序,也可以用HDL设计、仿真和调试具有自己特色的快速算法电路和接口,并通过综合和布线工具自动转换为电路结构,与制造厂家的单元库、宏库及硬核对应起来,通过仿真验证后,即可投片制成专用的片上系统(SOC)集成电路。
关键词:片上系统(SOC) EDA硬件描述语言(HDL) 单片机
一、芯片设计和制造是电子工业发展的基础
近10年来我国的电子工业取得了很大的进步,无论在消费类产品如电视、录像机还是在通信类产品如电话、网络设备方面,产品的档次和产量都有快速的提高。但这些产品的核心部件——芯片,大多需要进口,每年需要花费大量外汇来购买。许多产品技术档次的提高也受制于芯片。由于高档产品使用的新芯片价格昂贵,研制能在国际高档产品市场竞争的电子产品和设备非常困难。我国目前能在国际市场上竞争的电子产品大多数还是中低档的。由于核心芯片大多需要进口,因此利润非常低,主要依靠我国相对较廉价的劳动力才能在市场中生存。
在21世纪的头5年中,如果我们还不能掌握核心芯片的设计和制造技术,电子工业很难在20年内赶上国际先进水平。核心芯片的设计是高级技术,但并非每一种核心芯片都是非常难设计和制造的,大多数中低档电子产品中的片上系统SOC(System on Chip)并不复杂。目前,我国许多电子工程师已掌握了传统的微控制器系统开发手段:编写汇编程序,利用开发系统进行仿真来调试汇编程序和接口信号。在这一基础上,如果掌握一些常用的EDA工具,了解复杂数字系统的设计思路并能主动深入地学习HDL语言,不但能设计出具有自己知识产权的微控制器和线路板,甚至能设计出几万门甚至几百万门的专用数字信号处理芯片和片上系统。
二、掌握HDL是利用EDA工具开发片上系统的敲门砖
由于设计的复杂性,必须有一种语言能在各个层面上精确地为各种电路行为和结构建立模型,以便在计算机上对设计是否正确进行仿真。HDL特别是verilog HDL得到在第一线工作的设计工程师的特别青睐,不仅因为HDL与C语言很相似,学习和掌握它并不困难,更重要的是它在复杂的SOC的设计上所显示的非凡性能和可扩展能力。在数字系统设计的仿真领域,HDL早在10多年前就已得到全世界数字系统设计工程师的广泛承认,是目前世界上应用最普及的硬件描述语言。特别是近年来在数字系统自动综合方面也已显示出它旺盛的生命力。Verilog HDL还支持模拟电路的设计。Open Verilog International(以下简称OVI)组织,最近已公布Verilog-AMS语言参考手册(Language Reference Manual,以下简称LRM)的草案,在这个草案里定义了这种可用于模拟和数字混合信号系统设计的硬件描述语言。Verilog-AMS硬件描述语言是符合IEEE 1364标准的Verilog HDL的一个子集。它覆盖了由OVI组织建议的Verilog HDL的定义和语义,目的是让数模混合信号集成电路的设计者,既能用结构描述又能用高级行为描述来创建和使用模块。所以,用Verilog HDL语言可以使设计者在整个设计过程的不同阶段(从结构方案的分析比较,直到物理器件的实现),均能使用不同级别的抽象。目前,在许多软件公司的努力下,许多模型的开发工具正在出现,这必将大大加快模型的开发过程。他们提供了模拟电路模型的开发工具,如电路分析工具、行为建模工具、设计优化工具和设计自动化工具。有的工具能生成电路部件的行为模型,这种行为模型可用于电路的仿真。有联想能力的读者和电子工程师们,通过诸如手机、商务通等新电子产品的不断涌现,不难想像它们确实是设计方法革命性变革的产物。
三、SOC的设计宜先从数字系统开始逐步过渡到数模混合系统
由于数字系统的基本部件比较简单,无非是一些与门、或门、非门、触发器、多路器等,宏器件无非是一些加法器、乘法器等。设计数字系统的EDA工具也比较容易免费得到,一些简单的cpu核也可以在网上免费得到,即使是很先进的CPU核,如果需要投片即制成真正的asic,也可以通过与集成电路制造厂家协商得到。在投片制造之前,还可以用FPGA来验证所设计的复杂数字系统的电路结构是否正确。要做到这一点首先要搞清楚一个概念:这些数字系统的基本部件、宏器件或CPU核都是用HDL语言描述的,有的使用结构级的描述;有的采用用户自定义原语UDP(即逻辑真值表)描述;有的使用寄存器传输级描述;有的使用高级行为描述。不管用哪一级别的HDL语言,它们都属于HDL语言(不是Verilog HDL,就是VHDL)。由于描述数字系统的HDL语言比较成熟,使用的年代比较长,仿真和综合工具已经成熟,开展这一领域的设计工作已没有什么大的困难。SOC的设计可以先从单纯的数字系统开始,在这个基础上再开展数模混合信号系统的设计,可节省大量投资。电子芯片的设计已经成为一种国际性的行业,许多年轻人有热情参与这一项挑战性行业。我国在提高工程教育质量的基础上,在脑力密集型知识产业方面有很大的优势。我们的电子专业大学生,大多数有很好的逻辑思维能力。关键是这项工作需要很好地组织和规划,提高各种层次模块的质量、标准化和可重用性,以减少重复劳动,达到提高国际竞争能力的目的。
为进一步减轻建模的重担,美国许多EDA公司最近纷纷引进了用于新型通信系统的部件库。据报道,这些部件库可让设计小组的成员修改模型的方程来开发各种不同的模型,所需的开发时间只是原先所需时间的一小部分,所有这些模型都与新的数模混合HDL标准兼容。例如,Mentor Graphics公司除了宣布新的部件库外,最近还透露了与Motorola公司合作搞了一个语言开发计划,旨在为SOC的开发提供一条新的途径,以激励在多种芯片的设计领域中发展混合信号的应用(包括在电磁传感器和射频通信芯片设计中),这能使工程师们从传统的以Spice为基础的模拟设计方法转到更简单的具有系统风格的自上而下的设计方法。采用这种方法就能把用不同的行为描述语言表达的混合信号部件模型放到一个设计中,来验证整个设计。许多高技术公司不但引进各种可改变参数的部件库,还在努力开发模拟数字混合SOC的设计仿真工具。下面列出国外一些公司在数模混合SOC方面最新的技术动态:
1. Cadence公司由于把新出现的Verilog-AMS标准和不同的仿真算法与分析工具以及传统的Spice网表(netlist)表示方法结合起来,这样一个仿真器(即Spectre)就可以在设计流程的不同层次上应用。Cadence公司也提供了Verilog-A的语言调试检错工具和图形用户界面。
2. Apteq设计系统公司在提供他们的Verilog-A产品时也给用户一些模型示例。Apteq公司还提供一个有特色的Verilog-A插入件,它可以把OVI兼容的Verilog-A HDL功能块加入到现存的Spice仿真环境中。该产品通过一个独特的接插件的解决方案提供了统一的高性能的模拟HDL接口,使其能与任何一种Spice类型的仿真器相连接,保证了可移植的HDL的编译,并能正确地评价不同种类的仿真器性能。Verilog-A插入件的工作机制是先把模拟的行为程序通过编译转化为一种中间的表达,这种表达可以被Spice的硬件描述语言插座(Socket)与其他的Spice部件共同的任务(如实例抽象、参数设置、加载和评价)用来运行。该插入件可提供诸如模拟行为编码的查错、优化和解剖。而且如果需要仿真、全芯片的验证和测试,该Verilog-A插入件还有一个可选的二次编译模式,可提供高速、本地编码(native-code)的仿真性能。
3. Transcendent设计技术公司在其产品TransVerSE中提供Verilog-A/AMS的仿真能力。该产品的目的是仿真复杂的电子机械系统,它针对一些不同的工业领域,其中包括汽车工业、飞机工业、航天工业和消费电子工业。TransVerSE支持Verilog-A、新出现的Verilog-AMS语言、Spice及其模型与子电路,还有用C语言写的模型。
综上所述,复杂SOC的设计是一项系统工程,需要组织社会多方面的人才。10多年来,国外通过许多高技术公司与大学研究机构的互相合作和支持逐步达到了目前的水平。由于种种原因我国电子高技术芯片设计领域与国外交流比较少,国内同行也很少联系,水平相对落后。大学有关专业也缺少有经验和有能力的教师,这些都是我们与美国等先进国家的差距扩大的原因。近几年来由于Internet的普及,国外EDA工具的引进,许多大FPGA厂商免费赠送的开发软件,国内产品升级的需求,从国外逐步转移过来的中小型设计项目,以及年轻的大学毕业生和研究生们的热情,使我们有可能在比较短的时间内在复杂数字SOC设计领域赶上去。
四、数字SOC的设计——基本工具和方法
熟悉MCU开发的工程师们都知道,MCU的开发需要开发系统。开发系统通常以PC机为基础,运用开发系统厂商提供的软件和仿真器就可以针对MCU所编写的汇编进行编译和调试,并可以把编译后的机器代码下载到样机系统中运行和调试。数字SOC的设计方法与此很相近,所不同的是我们在做仿真时往往用一个MCU的核来代替真正的MCU。MCU可以是运行在某种FPGA上的固核(Firm Core)或某种ASIC工艺的硬核或是用HDL语言描述的可综合(或不可综合)的软核(或虚拟模块)。调试运行在MCU上的汇编与传统的调试方法没有实质性的差别。主要的差别在于传统的方法必须把程序代码加载到样机系统中,才可以进行硬件和软件配合的调试;而数字SOC的设计环境可以允许完全在虚拟硬件的环境下对硬件和软件的配合进行调试。因为在这种环境下各个具体硬件模块是基于硬件描述语言的,而编译后的机器代码是一些二进制磁盘文件,可以通过HDL的系统任务,加载到HDL模块中的存贮器变量中。调试的过程可以完全在HDL仿真环境下进行。如果硬件需要修改,也只要重新编辑或修改个别模块即可。待调试基本结束后,可以把整个硬件系统包括MCU的核加载到一个容量较大的FPGA上进行硬件、软件联合调试,进行实际电路结构的验证。这样的验证通过以后,硬件的结构就可以确定下来。如果需要的批量比较大,就可以考虑投片,余下的投片验证和成品率的验证可以由后端集成电路厂家来做。对于MCU嵌入式系统的设计人员来说,要学会SOC的设计方法并不难,只是改变一下仿真环境和学习HDL语言。在学习HDL语言时,笔者认为先学习Verilog HDL比较好:一是容易入门;二是接受Verilog HDL代码做后端芯片的集成电路厂家比较多,现成的硬核、固核和软核比较多。在学习HDL语言时,要注意分清该语言两种不同的应用:一种是为了自动生成电路结构,另一种是为了调试正在设计的电路结构。目前,能自动生成电路结构的HDL语言子集很小,语法现象非常有限,程序模块的格式也变化不大,比较好掌握。而为了调试的HDL语言包括的语法现象很广,测试模块的风格也多种多样。有兴趣的读者如有一定的C语言编程基础,也有一些硬件基础知识,可以在一本好书的指导下,通过自学,在两个月内学会,可以从简单逐步过渡到复杂的SOC设计。
五、介绍一个实用的SOC设计环境
ALTERA公司最近推出一款SOC开发工具套件(名为Excalibur Development Kits)。因为性能比较全面,故适用于数字SOC的开发。该开发套件包括SOC开发所必需的各种工具和资源软件、可以重构的硬件电路结构验证平台和使用说明书。可以使用的软件资源包括供选用的多种嵌入式处理器核、ALTERA系列FPGA开发工具(名为Quartus,可以进行HDL设计的仿真、综合和布局、布线),还有工业标准的C/C++编译器。可重构的硬件平台可以用来验证设计是否正确,在表示硬件结构电路的代码生成后,通过PC机加载,可以重构其电路,通过运行重构的电路来达到验证的目的。开发软件包中可嵌入的CPU核有许多种可供选择,它们都是高性能的RISC结构CPU,其中最高的为64位结构,运行最高速度可达200mips,适用的应用领域非常广。其中有一种ALTERA公司自行开发的CPU核(名为Nios),在ALTERA公司APEX系列的FPGA上实现其电路结构的运行是非常容易的,也不需要付专利费。这种CPU核是一种参数化的软核,设计人员可以根据应用的需要对CPU核本身进行优化,还可以增加外围电路的功能。这些工作无非是编写一些新的HDL模块或改写一些现存的HDL模块中的参数,再编译一下即可完成。这种CPU核只占APEX系列FPGA芯片的2%资源。如果需要提高处理速度,可以用多个Nios核来并行处理,这样的并行系统包括外围电路完全可以在一块ALTERA公司的APEX系列的FPGA上实现。所以,笔者认为SOC的设计并非是遥远不可及的事情。我们可以购买一套这样的系统,先从FPGA的开发做起,再根据市场的需求数量,决定是否移植到ASIC上。由于我们的设计由可综合风格的HDL模块来描述,所以移植时也相对比较容易,所需的只是用ASIC综合工具(如Synposys或Ambit等)做一下综合,再用有关的外围模型做一下带布线延迟的门级结构仿真验证,如果没有问题即可交给集成电路厂家做投片试验。
结束语
希望大家在原有工作的基础上,尽快掌握利用HDL语言的设计方法,利用相对比较便宜的高层次FPGA开发工具,把SOC的开发工作搞起来。争取在下一个5年中,基础芯片的设计工作有较大的进步,这样电子工业发展就有了较好的基础。让我们为实现这个共同目标一起努力工作。MES
(完)