宇航专用集成电路(ASIC)设计流程的标准化※

2017-09-20 09:41喻贤坤
航天标准化 2017年3期
关键词:宇航功能模块时序

喻贤坤 姜 爽 王 莉 彭 斌

(北京微电子技术研究所,北京,100076)

宇航专用集成电路(ASIC)设计流程的标准化※

喻贤坤 姜 爽 王 莉 彭 斌

(北京微电子技术研究所,北京,100076)

文摘:结合宇航ASIC的产品特点,将宇航ASIC设计流程划分为4个主要步骤(功能模块划分、逻辑设计、逻辑验证和物理实现),为每个步骤制定出总体设计方法与规则,在每个ASIC设计流程的细分环节中提炼出共性设计指标和方法,在宇航ASIC设计流程个环节建立相应的标准。

宇航元器件;专用集成电路(ASIC);设计流程;标准化。

随着超大规模集成电路的飞速发展,集成电路产品更新换代的周期越来越短,与此同时,航天发射任务密度大幅度提高,也在很大程度上考验着集成电路产品的研制质量和周期。宇航专用集成电路(Application Specific Intergrated Circuit,ASIC)属于定制或半定制的大规模集成数字电路,从功能模块划分、逻辑设计、逻辑验证到物理实现是一个逐层推进、循环迭代的过程,在保证功能完全符合要求的前提下,需要在面积、速度和功耗之间进行平衡,从而达到电路的最佳整体性能。

目前,在工业界的商用ASIC设计流程中,每一步都离不开电子设计自动化(Electronic Design Automation,EDA)工具的支持。同时EDA工具的自动化和标准化程度也越来越高,商用ASIC设计具有明确的标准化流程。但是由于对可靠性的要求极高,宇航ASIC不可能完全照搬商用ASIC的设计流程标准,必须制定针对宇航ASIC的特定规范和标准。

通过借鉴目前工业界主流的ASIC设计流程以及过去多年的多款宇航ASIC设计成功经验,我们对每个设计流程制定相应的严格标准,并将每个设计流程的标准做到精细化,从而建立一整套的宇航ASIC设计标准化流程,确保宇航ASIC研制的一次投片成功,并有效降低设计过程中的反复迭代,提高设计效率,保证产品质量和性能。

1 宇航ASIC设计流程

在确立系统需求和完成功能定义后,宇航ASIC的设计流程可以分为4个主要步骤:功能模块划分、逻辑设计、逻辑验证和物理实现,如图1所示。

在明确功能需求并形成宇航ASIC的功能定义规格书后,应做好以下工作。首先,需要对宇航ASIC进行内部功能模块的划分,使每个功能模块实现相应的功能,各个功能模块连接到一起形成整个ASIC电路。第二,根据功能模块的划分,按照功能和接口要求,采用硬件描述语言(HDL)进行模块的逻辑设计,形成寄存器传输级(RTL)代码。第三,针对宇航ASIC规格书的功能和时序要求,采用现场可编程逻辑门阵列(FPGA)原型或者软件仿真的方式,编写测试代码或者测试激励,进行逻辑验证,并确保逻辑设计完全符合设计要求。第四,将RTL代码通过逻辑综合工具映射到相应的工艺库上,进行布局布线等版图设计,完成时序验证和收敛,形成用于投片生产的版图数据。

1.1 功能模块划分

功能模块划分定义了ASIC设计的初始架构,有效的功能划分,既能够提高代码的可读性,更为关键的是能够提升逻辑综合的效果,降低逻辑综合所用的时间,简化逻辑综合所需的约束和脚本[1]。

首先,根据宇航ASIC的外部功能要求和内在模块的功能特点,将整体ASIC划分为不同的功能模块,比如时钟产生模块、复位模块、分频模块、数据接收模块、处理模块以及输出控制模块等。第二,所划分模块的大小也会对后续的物理实现有很大的影响,过小的模块实际上是人为地在模块之间插入边界,不利于逻辑综合的优化,而过大的模块会使逻辑综合时间变得很长。第三,功能模块划分是否合理,直接关系到宇航ASIC的自底向上的层次化设计效率,并影响研制进度和产品性能。

1.2 逻辑设计

逻辑设计是指采用HDL语言将电路的功能描述成RTL代码的形式。目前,HDL语言主要分为Verilog HDL和VHDL,两种设计语言在语法上很接近,大同小异。逻辑设计在编写RTL代码的过程中,应当遵循可综合的编码风格,否则会导致代码不可综合,或者综合出的门级网表不正确,或者门级网表中存在潜在不可靠性和风险[2]。此外,RTL代码的质量高低和是否规范,直接影响到ASIC芯片质量和设计进度。一个好的RTL代码逻辑设计,能够实现一个面积相对较小、速度相对较快的电路设计。

1.3 逻辑验证

在完成逻辑设计后,需要通过FPGA原型或者软件仿真这两种形式验证逻辑设计是否符合设计要求,即为逻辑验证。逻辑验证是整个宇航ASIC设计流程的最为关键的一个步骤,占用设计时间的比例也最大,约为60%~70%左右。FPGA原型验证是将RTL代码烧录到FPGA中,根据宇航ASIC的功能和时序定义开发测试程序,完成RTL代码的验证。软件仿真是采用仿真工具(如Modelsim、VCS、NC-Verilog等),根据ASIC的功能和时序定义开发测试向量(TestBench,TB)进行模拟仿真,完成RTL代码的验证。两种验证方式各有优势,“FPGA原型验证”能够验证实际的时序延迟,电路的实际运行时间即为验证时间,验证速度快;“软件仿真”的优势在于能够观测到每个内部模块、每个节点的变化,调试方便,易于发现和定位RTL设计中的问题。逻辑验证的核心在于功能验证的完备性和时序验证的充分性[3,4]。

1.4 物理实现

在完成全部设计功能的逻辑验证后,需要将与工艺无关的RTL代码映射到特定的工艺库上,形成可供投片生产的版图数据。该过程为宇航ASIC的物理实现,包括多个环节,如图2所示。

如果是电路内部集成存储器(Memory)单元,需要采用设计工具插入存储器内建自测试(MBIST)逻辑。插入MBIST逻辑,并经过MBISTRTL仿真确认正确后,采用DFT Compiler工具将逻辑设计RTL代码和MBIST逻辑映射到特定的工艺单元库上,并在此过程中插入扫描测试逻辑、门控时钟等结构,形成门级网表。

·将逻辑综合产生的门级网表与最初始的RTL代码,用Formality工具进行形式验证,确保门级网表与RTL的功能一致,然后采用PT(Prime Time)工具进行静态时序分析,保证时序满足设计要求。

·将逻辑综合后的门级网表与PT工具产生的电路约束文件同时输入到数字电路版图设计工具Encounter中,进行版图布局、供电网络设计、时钟树设计、布线及时序分析优化和物理验证,并提取电路的实际寄生参数,即标准参数交换格式(Standard Parasitic Exchange Format,spef)文件。

·将布局布线后的网表和逻辑综合后的网表进行形式验证,保证二者功能的一致性,然后将布局布线后的网表和spef输入到PT工具,采用依据电路设计要求制定的约束进行静态时序分析,完成时序验证,并产生标准延迟参数(Standard Delay Format,sdf)。

·采用软件仿真工具,反标sdf,进行扫描测试后仿真、MBIST后仿真和功能后仿真,确认功能和时序符合要求后,即可形成用于投片生产的版图数据。

宇航ASIC的每一步的设计性能都会直接关系到后续设计步骤的结果,环环相扣,逐层推进,进而实现设计目标。然而,宇航ASIC作为超大规模集成电路,其性能与可靠性的提升,需要每一个步骤的高效可靠设计以及与后续步骤的密切配合。因此,设计流程的标准化对于宇航ASIC性能与可靠性的提升是必要方法。此外,宇航ASIC设计流程的自身特点决定了在设计过程中难免会出现多次设计修改和反复迭代,并且越到设计后期,设计更改对进度的影响越大,付出的代价也更大。而设计流程的规范化和标准化,可以有效减少设计迭代或反复的次数,从而缩短研制周期。

基于以上对宇航ASIC设计流程和特点的分析,制定了规范化的“宇航ASIC设计流程标准”,包括4项标准:《宇航ASIC功能模块划分规范》、《宇航ASIC RTL逻辑设计规范》、《宇航ASIC逻辑验证规范》和《宇航ASIC物理实现设计规范》。

2 宇航ASIC设计流程的标准化

2.1 功能模块划分的标准化

在大多数的应用系统中,宇航ASIC是作为协处理器,完成速度要求低的非核心运算和数据处理;或者作为温度采集、图像采集、陀螺、马达等功能组件与主处理器之间的接口电路,完成数据采集、数据转换、时序驱动和逻辑控制等功能。

我们根据过去多款宇航ASIC的应用场合和特点,结合模块化验证和逻辑综合等设计要求,制定了《宇航ASIC功能模块划分规范》,该规范包括3项功能模块划分标准:①基于逻辑功能的模块划分标准;②基于设计目标的模块划分标准;③基于模块可复用原则的模块划分标准。上述标准分别从不同的出发点规范了功能模块的划分方式,内容包括该标准的目的、原理分析、划分方式以及实施方法。

《基于逻辑功能的模块划分标准》规定:根据接口功能的不同,模块可以划分为处理器接口、数据采集、通用异步收发器(Universal Asynchronous Receiver/Transmitter,UART)、串行外设接口(Serial Peripheral Interface,SPI)、输出驱动以及数据交互等模块;根据内部模块功能的不同,可以划分为时钟产生、复位、分频、数据处理、总线等模块。

《基于设计目标的模块划分标准》规定:根据时钟域和电压域要求的不同,模块可以划分为高频逻辑、低频逻辑、高电压域、低电压域等模块。

《基于模块可复用原则的模块划分标准》规定:哪些模块适合划分为可复用模块以及可复用模块的接口的定义规则等内容。

如,某星用ASIC需要完成的功能是采集卫星姿态的数据,并将数据存储后供处理器读取,同时接收处理器发送来的指令和数据,对卫星进行姿态控制。其功能模块划分如图3所示。

该星用ASIC的功能模块划分,由于没有特殊的时钟域、电压域等要求,采用的是《基于逻辑功能的模块划分标准》。根据与外部接口功能的不同,划分为处理器接口、数据采集、控制信号生成和数据发送;根据内部功能模块的不同,划分为时钟产生、复位产生、分频等模块。采用这种标准进行的功能模块划分,会使RTL代码具有较强的可读性,便于维护,并且使得逻辑结构清晰,有利于模块化的设计和验证。同时,对于自底向上的层次化设计来说,模块划分清晰,接口明确,对于层次化设计的时序匹配和性能提升有积极的促进作用。

2.2 逻辑设计的标准化

我们结合宇航ASIC应用场合的特点,针对宇航ASIC逻辑设计的RTL代码编写,借鉴商用数字电路产品代码设计规则检查工具Leda的规则集,归纳出现问题的ASIC电路在代码设计过程中的不足之处,制定了《宇航ASIC RTL逻辑设计规范》。该规范主要包括3项RTL代码设计标准:①可综合风格的RTL代码设计标准;②高可靠性的RTL代码设计标准;③增强代码可读性的RTL代码设计标准。上述标准是为了实现不同的RTL代码设计目标,各有侧重。

《可综合风格的RTL代码设计标准》包括150条RTL代码设计规则,涉及到不可综合语句的禁用列表,赋值语句、if语句、case语句等编写,敏感列表的编写等规则标准。如,在禁用列表中包括initial、wait、#delay等不可综合的语句,时序逻辑采用非阻塞赋值,组合逻辑采用阻塞赋值。

《高可靠性的RTL代码代码设计标准》包含4条设计规则:①复位结构应当采用异步复位、同步释放的结构;②影响电路工作模式或状态的全局性的关键配置寄存器,采用三位二进制码来表示一位配置寄存器的值,并进行纠检错刷新操作;③状态机的所有编码状态应当是明确的,不能让状态机进入无法转移的状态;④存储器应当配合纠检错码(Error Eetection and Correction Code,EDAC)使用。

《增强代码可读性的RTL代码设计标准》包含2条规则:①模块、端口、信号和变量的命名,应当清晰地反映功能描述;②每个模块的开头都应当具有详细直观的声明注释,包括模块名、功能描述、设计者、设计日期、版本和更新内容等。

编制《宇航ASIC RTL逻辑设计规范》应当遵循的原则是:①可综合,由于逻辑设计是逻辑综合等物理实现的基础,直接关系到逻辑综合出的门级网表的综合性能,因此在编写HDL代码过程中,应当充分考虑代码的物理实现;优秀的代码设计风格,包括适当的层次化设计,将会使逻辑综合工具花费更少的时间来实现设计目标;②高可靠,宇航ASIC的应用场合为地球外空间,会受到大量高能粒子的干扰,在逻辑设计中应当通过增加冗余等方式保证其可靠性;③可读性,RTL代码还应当考虑到其可读性,便于代码的验证和维护。

2.3 逻辑验证的标准化

逻辑验证的目的是确保逻辑设计能够完成设计规范的任务。验证工程师通过阅读设计规格书并拟定验证计划,编写测试程序或创建测试激励检查RTL代码是否准确地实现了所有设计功能要求。

借鉴工业界的数字集成电路验证流程,结合FPGA原型验证和软件仿真验证两种验证方式,将常用的测试程序或验证模型固化下来,形成固化的验证知识产权(Intellectual Property,IP)或方法,融入到相应的验证标准中,制定了《宇航ASIC逻辑验证规范》,包括五项标准:①宇航ASIC逻辑验证计划制定标准;②宇航ASIC的FPGA原型验证及考核标准;③宇航ASIC的FPGA原型验证报告编写规范;④宇航ASIC的软件仿真验证及考核标准;⑤宇航ASIC的软件仿真验证报告编写规范。

以上5项标准是按照ASIC的验证流程分别来制定的,包括3个技术文档的编写和2种验证方式及其考核标准,可以作为宇航ASIC验证过程中的指导规范,让验证工程师有章可循,同时有利于设计文档的规范化管理。技术文档标准规定了技术文档应当包含哪些内容,采用什么样的编写格式。

《宇航ASIC逻辑验证计划制定标准》规定:验证计划的技术文档中应当包括引用文件、验证策略、验证环境、设计要点检查计划、验证程序或测试向量的说明、外围验证模块的说明、功能验证和时序验证通过的标准等内容,而每项内容都规定了应当做到什么程度才符合要求。如,设计要点检查计划规定:验证计划中的功能验证点必须涵盖设计规格书中的所有功能模块和所有功能点,并做到一一对应。

《宇航ASIC的FPGA原型验证及考核标准》规定:FPGA型号及原型板的选取、测试PCB板的原理图设计、单片机固化应用程序基本设置的移植及复用的说明、FPGA原型结果的判断标准和验证质量的考核等内容。如,FPGA原型验证质量,要求通过功能点与设计规格书定义的功能点逐条比对来考核是否进行了完备的FPGA原型验证。

《宇航ASIC的软件仿真验证及考核标准》规定:固化的验证IP模型、故障注入、时序反标和验证、验证质量的考核。“验证IP模型”包括6种:UART、SPI、I2C、CAN接口模型以及APS模型、CPU模型。以上仿真模型经常作为宇航ASIC的外围器件,将这些反复使用并且正确的仿真模型固化下来形成验证IP,能够很轻易地移植到采用此类外围器件的宇航ASIC的软件仿真验证中。“故障注入”包括故障注入的点应当选取关键寄存器、状态机或者存储器,而不能是组合逻辑中的某个节点,因为组合逻辑上的某个节点的故障并不一定会导致后级触发器发生错误,可能是一次无效的故障注入。“时序反标和验证”规定反标的sdf文件应当与电路工作模式一致,时序验证应当包括最好和最差的两个工艺角,包括所有的工作模式,如功能模式、MBIST、扫描模式等。“验证质量的考核”,通过代码覆盖率、功能覆盖率等量化指标来考核软件仿真验证的完备性,代码和功能覆盖率均需要达到100%,才能开展后续设计工作。通过编制以上标准和规范,在FPGA原型验证和软件仿真验证方面,建立了指导性的验证方法和策略。

2.4 物理实现的标准化

由于宇航ASIC的空间应用的抗辐照要求,因此在宇航ASIC的物理实现过程中,需要将RTL代码映射到特定的抗辐照单元工艺库上。每个工艺库都具有自身的特征参数,需要在准确把握单元库特征的情况下,采用设计工具进行合理完善的约束设置,才能够实现理想的物理设计。此外,在宇航ASIC的物理实现过程中,流程繁多,需要关注的细节也很繁杂,每位设计师对于设计工具的理解和认识也有所不同,这就会给宇航ASIC的物理实现带来不确定的设计风险。

根据常用宇航ASIC的特点、现有抗辐照单元工艺库的特征以及设计工具的必要设置,制定了《宇航ASIC物理实现设计规范》[1,5-8],包括6项标准:①MBIST设计规范;②逻辑综合设计规范;③可测性设计规范;④静态时序分析规范;⑤后端布局布线规范;⑥后仿真规范。这些标准都是基于目前主流的设计工具,归纳提炼以往多款ASIC的设计约束脚本,将具有共性的设置形成宇航ASIC的物理实现标准。

《MBIST设计规范》,基于Mentor Graphics公司的MBIST设计工具MBISTArchitect,内容包括:MBIST早期规划、测试算法选取、仿真等。在MBIST早期规划中,对设计中存在不同类型、数量和工作频率的Memory的情况下,如何进行MBIST的测试结构的规划,是采用并行测试还是串行测试结构,如何平衡测试逻辑的规模、复杂度、测试质量与测试时间的关系,根据以往设计经验,都形成了最优化的方案,可以作为后续电路的指导方案和标准。如,电路中存在两种不同工作频率的Memory,应当为这两类Memory分别插入MBIST测试逻辑结构,如果高频Memory采用低频的测试逻辑会造成时序测试达不到要求,而低频Memory采用高频的测试逻辑会造成时序的过约,都不是最佳的测试方案。

《逻辑综合设计规范》,基于Synopsys公司的逻辑综合工具Design Compiler(DC),根据多款ASIC的设计、实测和应用以及工艺库特征参数,在逻辑综合的约束设置和参数选取方面制定了具有宇航ASIC设计特点的标准。内容包括:库的设置、时序约束、逻辑综合的结果报告等。库的设置必须包含目标工艺库、综合库、符号库、链接库的设置,时序约束必须包含所有时钟的定义、时钟偏差裕量设置为20%、端口延时严格执行板级实际需求等内容。

其余几项设计规范,都是采用同样的思路,在不同的设计流程阶段,完成相应标准的制定。

3 宇航ASIC标准实施及评价

规范化后的《宇航ASIC设计流程标准》,覆盖了宇航ASIC设计的4个设计步骤,包含17个子规范,既具有总体的设计指导方法和原则,又具备量化的设计考核标准和设计约束参数的设置规范。这些子规范都是按照设计流程来分类、整理和制定的,在每个设计流程环节具有很强的实际指导意义,将之前略显粗放的设计流程管理做到更加精细化。《宇航ASIC设计流程标准》主要是针对宇航ASIC与商用ASIC产品的差异,对特定设计流程进行了规范化,并且对关键的参数进行了精细化的定量规定。

近期,某款ASIC的研制,就是严格按照该《宇航ASIC设计流程标准》进行的。该宇航ASIC是一款典型的数据采集、处理和时序驱动电路,除具备自身一些特殊的应用需求外,电路的规模、设计难度类似于之前的某款电路,实现了一次性投片成功,在功耗等性能上满足用户需求,并且将设计周期缩短了25%左右。

从该宇航ASIC的研制情况来看,《宇航ASIC设计流程标准》能够有效规范宇航ASIC的设计流程,提升产品可靠性和性能,缩短研制周期,可执行性较高,效果明显,实现了产品设计流程的精细化管理,具有很强的指导和推广意义,发挥了标准化的作用。

通过借鉴工业界的商用ASIC设计流程标准,结合宇航ASIC的应用场合和特点,在抗辐照单元库的基础上,总结以往多款宇航ASIC的成功设计经验,以主流的数字电路设计工具为标准,形成了本文所述的宇航ASIC设计的全流程规范,适用于在确立产品规格书之后到形成符合设计要求的版图数据的整个宇航ASIC设计流程。通过标准的制定、实施,能够指导设计人员综合考量ASIC电路的各个性能指标,有利于产品整体性能的提升,能够很大程度上减少设计过程中的人为失误,避免设计反复,提高设计效率。通过标准的实施及效果评价,有利于增强宇航ASIC设计工程师的标准化意识,密切标准化工作与科研工程的结合,提升航天电子产品的研发水平。

[1]Synopsys.Design Compiler User Guide[M]. Version J-2014.09,2014-09.

[2]邸志雄.HDL代码质量评估方法关键技术研究与电路性能优化[D].西安电子科技大学,2013.

[3]夏宇闻.Verillog数字集成电路设计教程[M].第2版.北京:北京航空航天大学出版社,2008.

[4][美]克里斯·斯皮尔//张春,麦宋平,赵益新.System Verilog验证[M].第2版.北京:科学出版社,2009.

[5]Mentor Graphics,MBIST Architect Reference Manual[M].Software Version 2013.04,2013-12

[6]Synopsys.DFT Compiler,DFTMAX,and DFTMAX Ultra User Guide[M].Version J-2014.09-SP2,2014-12.

[7]Synopsys.Prime Time User Guide[M].Version J-2014.12,2014-12.

[8]Synopsys.Tetra MAX ATPG User Guide[M]. Version J-2014.09-SP2,2014-12.

喻贤坤(1984年—),男,工程师,目前从事ASIC和SoC系统架构设计研究。

姜爽(1981年—),女,高级工程师,目前从事数字集成电路设计研究。

王莉(1982年—),女,工程师,目前从事数字集成电路设计研究。

※本文源于原总装备部预研项目《导航卫星信息处理专用ASIC技术》(GFZX03010201××)和“十一五”核高基:宇航标准体系建设项目(产品规范类)(HGJ1004××)。

猜你喜欢
宇航功能模块时序
顾及多种弛豫模型的GNSS坐标时序分析软件GTSA
《宇航计测技术》征稿简则
清明
基于GEE平台与Sentinel-NDVI时序数据江汉平原种植模式提取
《宇航计测技术》征稿细则
你不能把整个春天都搬到冬天来
商业模式是新媒体的核心
基于ASP.NET标准的采购管理系统研究
高校二手交易网络平台功能及技术框架分析与设计
2016年中国宇航发射将首超20次