综上所述,复杂SOC的设计是一项系统工程,需要组织社会多方面的人才。10多年来,国外通过许多高技术公司与大学研究机构的互相合作和支持逐步达到了目前的水平。由于种种原因我国电子高技术芯片设计领域与国外交流比较少,国内同行也很少联系,水平相对落后。大学有关专业也缺少有经验和有能力的教师,这些都是我们与美国等先进国家的差距扩大的原因。近几年来由于Internet的普及,国外EDA工具的引进,许多大FPGA厂商免费赠送的开发软件,国内产品升级的需求,从国外逐步转移过来的中小型设计项目,以及年轻的大学毕业生和研究生们的热情,使我们有可能在比较短的时间内在复杂数字SOC设计领域赶上去。
四、 数字SOC的设计——基本工具和方法
熟悉MCU开发的工程师们都知道,MCU的开发需要开发系统。开发系统通常以PC机为基础,运用开发系统厂商提供的软件和仿真器就可以针对MCU所编写的汇编进行编译和调试,并可以把编译后的机器代码下载到样机系统中运行和调试。数字SOC的设计方法与此很相近,所不同的是我们在做仿真时往往用1个MCU的核来代替真正的MCU。MCU可以是运行在某种FPGA上的固核(Firm Core)或某种ASIC工艺的硬核或是用HDL语言描述的可综合(或不可综合)的软核(或虚拟模块)。调试运行在MCU上的汇编与传统的调试方法没有实质性的差别。主要的差别在于传统的方法必须把程序代码加载到样机系统中,才可以进行硬件和软件配合的调试;而数字SOC的设计环境可以允许完全在虚拟硬件的环境下对硬件和软件的配合进行调试。因为在这种环境下各个具体硬件模块是基于硬件描述语言的,而编译后的机器代码是一些二进制磁盘文件,可以通过HDL的系统任务,加载到HDL模块中的存贮器变量中。调试的过程可以完全在HDL仿真环境下进行。如果硬件需要修改,也只要重新编辑或修改个别模块即可。待调试基本结束后,可以把整个硬件系统包括MCU的核加载到1个容量较大的FPGA上进行硬件、软件联合调试,进行实际电路结构的验证。这样的验证通过以后,硬件的结构就可以确定下来。如果需要的批量比较大,就可以考虑投片,余下的投片验证和成品率的验证可以由后端集成电路厂家来做。对于MCU嵌入式系统的设计人员来说,要学会SOC的设计方法并不难,只是改变一下仿真环境和学习HDL语言。在学习HDL语言时,笔者认为先学习Verilog HDL比较好:一是容易入门;二是接受Verilog HDL代码做后端芯片的集成电路厂家比较多,现成的硬核、固核和软核比较多。在学习HDL语言时,要注意分清该语言两种不同的应用:一种是为自动生成电路结构,另一种是为了调试正在设计的电路结构。目前,能自动生成电路结构的HDL语言子集很小,语法现象非常有限,程序模块的格式也变化不大,比较好掌握。而为了调试的HDL语言包括的语法现象很广,测试模块的风格也多种多样。有兴趣的读者如有一定的C语言编程基础,也有一些硬件基础知识,可以在1本好书的指导下,通过自学,在2个月内学会,可以从简单逐步过渡到复杂的SOC设计。
五、 介绍1个实用的SOC设计环境
ALTERA公司最近推出1款SOC开发工具套件(名为Excalibur Development Kits)。因为性能比较全面,故适用于数字SOC的开发。该开发套件包括SOC开发所必需的各种工具和资源软件、可以重构的硬件电路结构验证平台和使用说明书。可以使用的软件资源包括供选用的多种嵌入式处理器核、 ALTERA系列FPGA开发工具(名为Quartus,可以进行HDL设计的仿真、综合和布局、布线),还有工业标准的C/C++编译器。可重构的硬件平台可以用来验证设计是否正确,在表示硬件结构电路的代码生成后,通过PC机加载,可以重构其电路,通过运行重构的电路来达到验证的目的。开发软件包中可嵌入的CPU核有许多种可供选择,它们都是高性能的RISC结构CPU,其中最高的为64位结构,运行最高速度可达200 MIPS,适用的应用领域非常广。其中有1种ALTERA公司自行开发的CPU核(名为Nios),在ALTERA公司APEX系列的FPGA上实现其电路结构的运行是非常容易的,也不需要付专利费。这种CPU核是1种参数化的软核,设计人员可以根据应用的需要对CPU核本身进行优化,还可以增加外围电路的功能。这些工作无非是编写一些新的HDL模块或改写一些现存的HDL模块中的参数,再编译一下即可完成。这种CPU核只占APEX系列 FPGA芯片的 2%的资源。如果需要提高处理速度,可以用多个Nios核来并行处理,这样的并行系统包括外围电路完全可以在1块ALTERA公司的APEX系列的FPGA上实现。所以,笔者认为SOC的设计并非是遥远不可及的事情。我们可以购买1套这样的系统,先从FPGA的开发做起,再根据市场的需求数量,决定是否移植到ASIC上。由于我们的设计由可综合风格的HDL模块来描述,所以移植时也相对比较容易,所需的只是用ASIC综合工具(如Synposys或Ambit等)做一下综合,再用有关的外围模型做一下带布线延迟的门级结构仿真验证,如果没有问题即可交给集成电路厂家做投片试验。
结束语
希望大家在原有工作的基础上,尽快掌握利用HDL语言的设计方法,利用相对比较便宜的高层次FPGA开发工具,把SOC的开发工作搞起来。争取在下一个5年中,基础芯片的设计工作有较大的进步,这样电子工业发展就有了较好的基础。让我们为实现这个共同目标一起努力工作。