SoC设计和测试技术:理论与实践(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-23 15:14:44

点击下载

作者:刘文松

出版社:东南大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

SoC设计和测试技术:理论与实践

SoC设计和测试技术:理论与实践试读:

前言

近年来,我国对集成电路产业的政策支持力度空前。2014年6月,国务院印发《国家集成电路产业发展推进纲要》,制定三阶段目标。第一阶段:到2015年,实现集成电路产业销售收入超过3500亿,32/28nm实现规模量产,65/45nm关键设备和12英寸硅片等关键材料进入应用。第二阶段:到2020年,行业销售收入年均增速超过20%。第三阶段:到2030年,集成电路产业链主要环节达到国际先进水平,部分企业进入国际第一梯队。在出台政策的同时,正式成立国家集成电路产业投资基金,基金总规模达到1387.2亿元,已参与投资近600亿的相关产业项目。

在国家政策和资金的双重支持下,我国集成电路技术实力显著增强,设计能力与国际先进水平差距大幅缩小,制造工艺取得长足进步,出现了诸如海思、展讯、炬力等一大批优秀的国内集成电路设计公司。

SoC是在由集成电路向集成系统转变的大方向下产生的。随着半导体制造工艺的进一步提升,芯片集成度越来越高,可将接口电路、信息处理、模数转换、内存存储、逻辑控制等系统功能集成到一个芯片中,打破了原有的整机、电路与元件、器件之间的界限。SoC中的接口电路、信息处理、模数转换、内存存储等模块可以IP核复用的形式实现。通常包含一个或多个处理核,以软件形式实现电路系统整体的逻辑控制。软硬件协同设计是SoC和传统ASIC设计最大的区别之一。

SoC可以有效降低电子信息系统/设备的开发成本,缩短开发周期,提高产品的竞争力。同时,产品适合于大规模批量生产,成本低和可靠性高。正是在市场需求和技术发展的双重驱动下,SoC逐渐成为集成电路设计公司采用的主流开发方式。随着SoC集成规模的日趋庞大,SoC设计流程、SoC架构、电子级系统设计、IP核设计与选择、RTL代码编写、先进的验证方法、低功耗设计、可测性设计技术及后端设计等均对最终产品的性能和可靠性产生巨大影响。因此,相关的理论基础和理念方法也日益为工业界所重视。

笔者在东南大学信息学院射频与光电集成电路研究所朱恩教授指导下,就相关领域的研究内容展开论述,涉及整个设计流程中的硬件描述语言、可编程逻辑器件、逻辑综合、自动布局布线等理论知识,并结合工程实践讲述了SoC设计和测试的主要理念和方法等内容。本书同时汇聚了射频与光电集成电路研究所众多校友的辛勤付出。Synopsys公司孟凡生校友为逻辑综合工具章节的撰写提供大量资料,高通公司黄宁校友完成SoC测试章节的撰写,华为公司张亮校友为自动布局布线章节的撰写提供大量资料,在此一并感谢!最后,希望能以此为机会,与更多的集成电路设计人员就相关的理论方法和工程实践共同展开交流探讨,共同夯实基础并提升电路设计水平。编者2016年7月1SoC设计概述1.1发展概貌

集成电路的开发始于1958年,当时有得州仪器公司和仙童半导体公司两家企业在同时开展。时至今日,半导体已经成为不断前行的电子产业中最为核心的部分。随着科技的不断发展,半导体技术一直遵循着摩尔规律向前推进。1965年,摩尔指出:晶体管和电阻的数量每年会翻一番,原因是工程师们正不断缩小晶体管的体积,这被称为摩尔定律。它意味着半导体的性能与容量将以指数级增长,并且这种增长趋势还将延续下去。1975年,摩尔再次指出:每隔24个月晶体管的数量将翻一番。如今,历史证明了摩尔定律的正确性:在21世纪初期,主流集成电路设计从0.18μm逐步发展到0.13μm,进而实现了90nm、45nm和22nm。2013年9月,英特尔公司首次展示了代号为“Broadwell”的下一代处理器芯片,采用14nm工艺制造。除了在工艺上改进,2011年5月,英特尔公司成功开发出首个3D晶体管,称为tri-Gate。业界许多专家估计,著名的摩尔定律还将使用至少10年,目前的工艺仍有巨大的改进潜力。

市场需求和微电子自身的发展带动了以微细加工(集成电路特征尺寸不断缩小)为主要特征的多种工艺集成技术和面向应用的系统级芯片的发展。随着半导体产业进入纳米加工时代,单一集成电路芯片就可以实现一个复杂的电子系统,诸如手机芯片、数字电视芯片、机顶盒芯片等。片上系统(System on Chip, SoC)设计技术始于20世纪90年代中期。随着半导体工艺技术的发展,IC设计者能够将越来越复杂的功能集成到单个芯片上,SoC正是在集成电路(Integrated Circuit, IC)向集成系统(Integrated System, IS)转变的大方向下产生的。1994年摩托罗拉公司发布的FlexCore系统(用来制作基于68000和PowerPC的定制微处理器)和1995年LSILogic公司为索尼公司设计的SoC,可能是基于IP(Intellectual Property)核完成SoC设计的最早报道。SoC可以利用成熟IP来降低整个设计的复杂度和风险性,显著地提高了ASIC的设计能力并加快了产品的上市时间,因此发展得非常迅速,引起了工业界和学术界的广泛关注。

SoC的高集成度也给设计者和测试者带来了许多新的挑战。纳米工艺下的SoC测试需要处理测试数据量大、测试功耗过高和测试时间过长这三个主要问题,而它们最终都将导致SoC测试成本急剧增加。在这个SoC技术快速发展的时期,如果不给复杂SoC的测试和可测试性设计以足够的重视,测试就有可能成为SoC设计项目中的“瓶颈”,甚至会制约SoC技术的向前发展。国内在SoC领域的研究起步较晚,且大多集中在SoC设计方面,给予SoC测试与可测试性设计的关注及投入相对较少,因此SoC的测试与可测试性设计技术是我国IC产业链中的薄弱环节之一。另外,从国防安全的角度出发,对SoC进行自主研发、生产及测试是十分必要的。1.2主要设计方法——自顶向下方法

采用自顶向下(Top-down)方法的设计次序是:行为设计、结构设计、逻辑设计、电路设计和版图设计,如图1.1所示。图1.1 Top-down方法的设计次序

在行为设计阶段:要确定芯片的功能、性能、面积、工艺和成本。

在结构设计阶段:要根据芯片的特点,将其分解为接口清晰、相互关系明确、尽可能简单的子系统,再利用子系统设计出一个较好的总体结构,这个结构可能包括有算术运算单元、控制单元、数据通道、各种算法状态机等。

在逻辑设计阶段:要考虑各种功能模块的具体实现问题。由于同一功能块可能有多种实现方法,所以在这一阶段,要尽可能采用规则结构来实现功能块,同时要充分利用已经过考验的逻辑单元或模块。这一阶段要进行逻辑仿真,以确定逻辑设计的正确性。

在电路设计阶段:逻辑图将进一步转换成电路图,在这个阶段,可能需要进行电路仿真,以确定电路特性、功耗和时延等。

在版图设计阶段:要根据电路图绘制用于工艺制造的电路版图。完成版图后,需要先对实际版图进行参数提取,再进行电路后仿真。如果仿真性能达不到要求,需要返回到电路设计或进一步到逻辑设计,进行适当修改,最终达到设计目标。1.3设计流程中的重点问题

在图1.1中,典型的设计流程被划分成三个综合阶段:高层综合、逻辑综合和物理综合。

在英文文献中,表示综合的词是Synthesis, Synthesis的原义是合成、综合,意指用合成方法合成出新的事物,在集成电路设计领域,综合是指将一种形式的设计转换成另一种设计形式的过程。

1)高层综合

高层综合也称行为级综合(Behavioral Synthesis),高层综合就是将系统的行为、各个组成部分的功能及其输入和输出,用硬件描述语言HDL(如VHDL和Verilog)加以描述,然后进行行为级综合,同时通过高层次硬件仿真进行验证。

高层综合的任务是将一个设计的行为级描述转换成寄存器传输级的结构描述。它首先翻译和分析用HDL语言描述的设计,并在给定的一组性能、面积或功耗的约束条件下,确定需要哪些硬件资源,如执行单元、存储器、控制器、总线等,以及确定在这一结构中各种操作的次序。还可通过行为级和寄存器传输级硬件仿真进行验证。由于同一个设计可能有多种硬件结构的实现方式,因此,高层综合的目的就是要在满足目标和约束的条件下,找到一个代价最小的硬件结构,并使设计的功能最佳化。

2)逻辑综合

逻辑综合将逻辑级行为描述转换成使用门级单元的结构描述(门级结构描述称为网表描述),同时还要进行门级逻辑仿真和测试综合。

逻辑级行为描述可以是状态转换图、有限状态机,也可以是布尔方程、真值表或硬件描述语言。逻辑综合过程还包括一系列优化步骤,如资源共享、连接优化和时钟分配等。优化的目标是面积、速度、功耗等指标中的一种或几种的折中。

逻辑综合一般分两个阶段:①与工艺无关的阶段:这时采用布尔操作或代数操作技术来优化逻辑;②工艺映射阶段:根据电路性质(如组合型或时序型)及采用的结构(多层逻辑、PLD或FPGA)做出具体的映象,将与工艺无关的描述转换成门级网表、PLD或FPGA中的一种执行文件。

在逻辑综合的过程中,需要进行细致的时序和时延分析以及逻辑仿真。逻辑仿真是保证设计正确的关键步骤,过去通常采用软件模拟的方法,近年来则强调硬件手段,如通过PLD或FPGA进行。测试综合是提供测试图形的自动生成,为可测性设计提供高故障覆盖率的测试图形。测试综合可以消除设计中的冗余逻辑,诊断不可测的逻辑结构,还可以自动插入可测性结构。

3)物理综合

物理综合也称版图综合(layout synthesis),物理综合将网表描述转换成版图。这时对每个单元要确定其几何形状、大小及位置,还要确定单元间的连接关系。它的任务是将门级网表自动转换成版图。布图的详细步骤如图1.2所示。图1.2 布图的详细步骤

布图规划是对设计进行物理划分,同时对设计的布局进行规划和分析。在这一步骤里,面向物理的划分,其层次结构可以与逻辑设计时的划分有所不同。布图规划可以估算出较为精确的互连延迟信息、预算芯片的面积,分析布线的稀疏度。

布局是指将模块在满足一定的目标函数的前提下布置在芯片上的适当位置。一般布局时总是要求芯片面积最小、连线总长最短、电性能最优并且容易布线。布局又分为初始布局和迭代改善两个子步骤。进行初始布局的目的是为了提高布局的质量以及减少下一阶段即迭代改善时的处理次数,而迭代改善是一个优化的过程,它是决定布局质量的关键。

布线是根据电路连接关系的描述(即连接表),在满足工艺规则和电学性能的要求下,在指定区域(面积、形状、层次等)内完成所需的全部互连,同时尽可能地对连线长度和通孔数目进行优化。一般有两种布线方法:一种是面向线网的布线方法,它是直接对整个电路进行布线,布线时通常采取顺序方式;另一种称为分级布线,它将布线问题分为全局布线和详细布线,这是一种面向布线区域的布线方法。这种方法通过适当的划分,将整个布线区域分为若干个布线通道区,然后进行适当的布线分配,即将一个线网的所有端点的走线路径分配到相应的通道区中,接着是进行详细布线,对分配到当前通道区中的所有线网段集合,按照一定的规则,确定它们在通道中的具体位置。

在完成布局布线后,要对版图进行设计规则检查、电学规则检查以及版图与电路图的一致性检查。在版图寄生参数提取的基础上,再次进行电路分析(即后模拟)。只有在所有的检查都通过并证明正确无误后,才可将布图结果转换为掩膜文件。然后通过掩膜版发生器或电子束制版系统,将掩膜文件转换生成掩膜版。

上述设计流程又可分成前端设计和后端设计两个阶段,这是在深亚微米电路出现之前,人们就已习惯的分法。

前端设计主要进行系统和功能的设计以及结构和电路的设计。

后端设计主要完成版图设计。

前端和后端之间的沟通主要通过网表和单元库,前端设计完成后将网表交给版图设计人员。一般而言,只要布线能够通过,时序要求基本上都能够得到满足。1.4工具的支持

20世纪70年代初,为了解决电路和版图设计自动化问题,出现了计算机辅助设计(CAD)技术;80年代,为了解决结构和逻辑设计的自动化问题,出现了计算机辅助工程(CAE)技术;90年代初,为了解决行为设计的自动化问题,出现了电子设计自动化(EDA)技术。在CAD/CAE技术中,主要解决给定电路图到版图和测试生成的自动转化问题。在EDA技术中,主要解决给定概念到电路图的自动转化问题。新出现的技术一般涵盖和改进了已有的技术,例如EDA技术涵盖了CAD/CAE技术等。

CAD技术主要用来帮助设计人员进行电路性能的分析和完成电路版图的编辑,如何在计算机上完成复杂的运算并解决图形的编辑及设计规则的检查是主要需要解决的问题。CAD技术主要是以晶体管级的性能仿真以及以多层版图的手工编辑为主,并形成了众多的单点工具。CAD技术的出现将部分设计工作从手工劳动当中解放出来,同时建立了模拟的概念和基本理论。

CAE技术主要用来进行集成电路设计、开发与生产过程的标准化,同时实现各个层面上集成电路设计活动的自动化。这种技术需要解决的主要难题是如何建立集成电路的标准设计库以及如何解决不同层面设计的接口等问题。这个时期,出现了标准设计库,出现了硬件描述语言Verilog和VHDL,出现了全线设计工具。CAE技术孕育了众多的新思想,例如可测性设计,出现了集成电路设计工具的全线产品,形成了集成电路设计、开发和生产的流程。

EDA技术主要用来实现从概念到电路的设计自动化,实现电子系统设计与芯片设计的融合,需要解决的主要难题是电路综合理论的创立和完善、电路验证理论的出现和发展。这个时期的主要特征是广泛使用硬件描述语言和逻辑综合进行电路设计,电路验证理论和方法逐渐成熟,行为综合理论开始形成,产生了众多的新思想和新方法,例如时序验证等,实现了集成电路设计工作的重点转移,形成了新一代集成电路设计方法学。2硬件描述语言VerilogVerilogHDL是一种硬件描述语言,可用于从算法级、门级、寄存器级到开关级的多层次的数字电路系统建模,也可用于时序建模。用Verilog编写的模型可用Verilog仿真器进行验证。Verilog从C语言中继承了多种操作符和结构,并提供了扩展的建模能力。Verilog语言的国际标准为IEEEStd1364—1995(1995年)。2.1Verilog语言的一般结构2.1.1 模块

模块是Verilog的基本描述单位,用于描述某个设计的功能或结构,同时也可描述与其他模块通信的外部端口。一个模块可以调用另一个模块。

下面是一个半加器电路的设计实例:

该模块的名字是HalfAdder,模块的输入端口为A和B,输出端口为Sum和Carry。

在模块中,可用下述方式描述一个设计:(1)数据流描述方式;(2)行为描述方式;(3)结构描述方式;(4)混合描述方式。

下面通过实例介绍这些方式。2.1.2 数据流描述方式

用数据流方式描述一个设计的最基本机制就是使用连续赋值语句,例如:

模块HalfAdder有2个输入端口和2个输出端口,以assign为前缀的语句是连续赋值语句;连续赋值语句是并发执行的,各语句的执行顺序与其在描述中出现的顺序无关。2.1.3 行为描述方式

电路的行为使用下述过程语句描述:(1)initial语句:此语句只执行一次。(2)always语句:此语句总是循环执行。

在这两种语句中被赋值的对象只能是寄存器类型的。

语句initial和always在0时刻开始并发执行。

例如:

其中,reg是寄存器数据类型的一种。always语句中字符@后面的是事件控制语句。相关联的顺序过程是begin和end包含的语句。只要A、B或Cin中至少有一个值发生变化,顺序过程就执行。

下面是initial语句的示例:

语句initial包含一个由begin至end的顺序过程,这一顺序过程在0ns时开始执行,在语句“P=#51; ”执行后,initial语句被永远地挂起。2.1.4 结构描述方式

结构化描述方式可使用下面的结构:(1)开关级原语(晶体管级);(2)内置门原语或用户定义的原语(门级);(3)模块实例(创建层次结构)。

通过使用连线来相互连接。

下面是使用内置门原语描述的全加器电路实例:

在这一实例中,包含了内置门xor、and和or的实例语句。门实例由连线类型变量S1、T1、T2和T3互连。2.1.5 混合描述方式

模块描述中可以包含实例化的门、模块实例化语句、连续赋值语句以及always语句和initial语句的混合。它们之间可以相互包含。

下面是采用混合方式设计的1位全加器的实例:

只要输入A或B发生变化,门实例语句即被执行;只要A、B或Cin发生变化,就执行always语句;只要S1或Cin发生变化,就执行连续赋值语句。2.2Verilog语言要素

VerilogHDL的基本要素包括标识符、注释、数值、编译程序指令、系统任务和系统函数,另外还有两个重要的数据类型:连线和寄存器。2.2.1 标识符、注释和语言书写的格式

标识符是任意一组字母、数字、$和下划线的组合,标识符的第一个字符必须是字母或下划线,标识符区分大小写。以下是标识符的几个例子:

转义符常用于打印或显示的控制,它以“\(反斜线)”开头。

Verilog定义了关键词,如always、begin等,关键词总是小写,关键字有特定的含义,用户不能更改它。

与C++语言相同,Verilog有两种注释的形式:

形式一:/*注释字符串*/,可以扩展至多行。

形式二://注释字符串,在本行结束。

Verilog语言可采用自由格式书写,其语句可以跨行编写,也可在一行内编写。2.2.2 系统任务和函数

以$开始的标识符表示系统任务或函数。任务提供了一种封装行为的机制,这种机制可在设计的不同部分被调用。任务和函数相似,但任务可以返回多个值,也可以不返回值,而函数只能返回一个值。此外,函数不允许延迟,而任务可以带有延迟。2.2.3 编译指令

Verilog也有编译指令,这一点与C语言相同,Verilog的编译指令有多种,这里介绍常用的几个。

1)′define

′define指令用于文本替换,它的一般形式为:

例如:

2)′ifdef、′else和′endif

主要用于条件编译,它的一般形式为:

例如:

如果已定义了名字为WIN的文本宏,就选择第一种参数声明,否则选择第二种。

3)′include

该指令用于嵌入某文件的内容。文件既可以用相对路径名定义,也可以用全路径名定义,例如:

在编译时,这一行将由“文件名”指定的文件内容来替代。

4)′timescale

该编译指令用于定义时延的单位和时延精度,其格式为:

时间单位有1、10和100几种。

时间精度由单位s、ms、μs、ns、ps和fs组成。

指令′timescale在模块说明的外部出现,并且影响紧跟其后的模块的所有时延值,直至遇到另一个′timescale指令为止,例如:

一个设计中的多个模块带有自身的′timescale指令,模拟器总是定位在所有模块的最小时延精度上。2.2.4 值集合

Verilog有四种基本值:

0(逻辑0或“假”);

1(逻辑1或“真”);

x(未知);

z(高阻)。

在门的输入或一个表达式中“z”的值通常解释成“x”。此外,值x和值z是不分大小写的。

Verilog中的常量是由以上四种基本值组成的。

Verilog中有三类常量:整数型、实数型和字符串型。

下面是一些实例:

下划线可以随意用在整数或实数中,用来提高易读性,但下划线不能作首字符。

1)整数型

整型数有两种书写方式:(1)简单的十进制数格式;(2)基数格式。

简单的十进制数格式如:

基数格式的形式为:

其中,位长是可选的。

基有:

例如:

x/z在十六进制值中代表4位x/z,在八进制中代表3位x/z,在二进制中代表1位x/z。

基数格式的数为无符号数。

2)实数型

例如:5.678、235.1e2。

3)字符串型

字符串用双引号给出,例如:′′INTERNALERROR′′,字符串是8位ASCII值的序列,所以存储“INTERNALERROR”需要8*14位。

反斜线(\)用于对确定的特殊字符转义,例如:\n换行符、\t制表符……2.2.5 数据类型

Verilog有连线类型、寄存器类型两大类数据类型。

连线类型表示元件间的物理连线,它的值由驱动元件的值决定,例如门的输出。如果没有驱动元件连接到连线,连线的缺省值为z。

寄存器类型表示一个抽象的数据存储单元,它只能在always语句和initial语句中被赋值,寄存器中的值在两次赋值之间保持不变。寄存器类型变量缺省值为x。

1)连线类型

连线数据类型表示结构实体之间的物理连接,连线数据类型有多种,常用的有wire和tri,用于连接单元的连线wire是最常见的,三态线tri与wire的语法和语义一致;tri可用于描述多个驱动源驱动同一根线的连线类型。

连线类型wire/tri的说明语法为:

m和l是定义连线范围的常量表达式,范围定义是可选的,范围缺省的连线类型为1位。下面是连线类型说明实例:

如果没有定义逻辑强度,当有多个驱动器时,wire/tri变量会产生不确定值。

连线中的值被解释为无符号数。

2)向量和标量连线

在定义向量连线时可选用关键词scalared或vectored。如果一个连线定义时使用了关键词vectored,那么就不允许位选择和部分选择该连线,只能对连线整体赋值,例如:

如果没有定义关键词,缺省值为标量。

3)寄存器类型

寄存器是数据存储单元的抽象,寄存器有多种类型,这里介绍常用的reg和memory。(1)类型reg的说明

m和l定义了范围,且均为常值,范围是可选的,范围缺省值为1位。

例如:

寄存器可以取任意长度。

寄存器中的值通常被解释为无符号数,例如:

存储器是一个寄存器数组,存储器说明语句形式如下:

例如:

数组的维数不能大于2。

存储器属于寄存器数组类型。

单个寄存器说明既可用于寄存器类型,也可用于存储器类型。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载