这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 芯片设计中的IP技术

共1条 1/1 1 跳转至

芯片设计中的IP技术

工程师
2015-04-29 21:07:38     打赏

1 引言 
芯片设计业正面临着一系列的挑战:系统芯片SoC(System-on-a-Chip)已经成为IC业界的焦点,芯片性能越来越强,规模越来越大,开发周期越来越长,设计质量越来越难于控制,芯片设计成本越来越趋于高昂。 
这种情形很像计算机界所面临的问题:计算机硬件处理能力飞速发展,而软件设计却受到越来越多的挑战,设计规模上不去,设计质量难于控制,设计周期无限延长 ……。正是这种状况,导致了软件设计方法学在开放性、可移植性、面向等方面的深刻变革。如今的软件工程,已经成为一门博大精深的科学,有很多系统的方法值得芯片设计业学习和借鉴。根植于软件业面向设计模式的IP技术被认为是最有前途的方案,以解决当今芯片设计工业界所面临的难题。 
本文从IP开发和集成两个方面入手,重点阐述了IP的基本特征,IP的设计流程及设计中的关键技术,IP集成的一般考虑及集成的关键技术,IP模块的评估与选择等,并探讨了国内IP技术发展的一些思路。 


2 IP开发 


2.1 IP的基本特征 
IP的本质特征是可重用性,其通常必然满足以下基本特征:一是通用性好,二是正确性有100%的保证,三是可移植性好。通用性好是指IP的功能在某一应用领域广泛通用,IP的实现一般满足子功能可配置、甚至可编程的特点,如最常见的IP嵌入式CPU模块就具有非常好的通用性。正确性有百分之百的保证是指IP的实现严格遵守一系列的可重用设计开发规范,IP的验证用例具有完备性,功能覆盖率、测试覆盖率都能够达到100%;并能够完全覆盖IP工作的临界条件,提供相应的大流量测试、随机性测试、甚至能够提供软硬件协同仿真的测试环境等。可移植性好是指IP的实现如行为描述、网表、GDSII文件具有可移植性,其设计输入可以在不同的开发平台上重现;综合用批处理文件具有可移植性,IP的综合结果可以用不同的综合工具,在不同的综合库条件下正确重现;仿真用测试用例可重用,测试环境可以很方便的重现,IP的验证可以用不同的仿真器,在不同的仿真库条件下重现。 


2.2 IP开发流程 
IP开发的流程主要包括两条主线:IP设计和IP验证。IP设计流程一般可划分为确定规格和模块划分、子模块的定义和设计、顶层模块的设计、产品化等四个阶段。IP验证流程包括了建立参照模型、建立测试平台和准备验证用例、回归测试、形式验证。图1是我们推荐使用的IP开发流程。 


2.2.1 IP设计的四大阶段 


(1) 确定规格和划分模块 
IP的规格至少包含以下内容:概述、功能需求、性能需求、物理需求、详细的结构模块框图、对外系统接口的详细定义、可配置功能详细描述、需要支持的制造测试方法、需要支持的验证策略等。确定规格的过程一般又包括行为建模进行功能论证,可行性分析就性能和成本进行折中等活动。 
划分模块是指规划师在给出IP结构模块框图的同时,对于每个子模块给出一个详细的功能描述,同时必须明确子模块之间的接口的时序要求。只有规划好,才能够建设好。确定规格和划分模块是IP开发是否成功最为关键的一步。 


(2) 子模块定义和设计 
设计小组对所有子模块的规格进行讨论和审查,重点检查时序接口和功能接口的一致性。设计者随后整理出子模块的详细设计方案。接下来设计者按照实现方案开始编写RTL代码、编写时间约束文件、综合的批处理文件、子模块验证用测试平台(testbench)和测试套件(test suite)等。当这些工作完成并通过代码规范性检查、测试覆盖率检查、功能覆盖率检查、性能分析包括DFT、STA检查、功耗分析检查等验收以后,这个子模块就可用来与其他模块一起集成了。 


(3) 顶层模块设计 
顶层模块的设计就是把子模块集成起来,产生顶层模块,并对它做综合处理和功能验证。综合过程包括编写综合的批处理文件,在不同的参考库上综合,针对在制造上的可测试性插入扫描链、ATPG,并进行最终的性能分析和功耗分析等。验证过程包括根据由行为模型发展来的测试向量对顶层模块进行仿真测试,针对IP模块的可配置选项进行多种配置条件下的回归测试,利用仿真工具检验测试向量的覆盖率等。 


(4) IP的产品化 
IP产品化的过程包括以下几个部分:提供IP设计和验证用testbench,用商用转换器进行打包提交,但转换后需要重新验证,比如做回归测试以确保转换有效,并强调在几个主流仿真器上做仿真,在几种主要工艺库上做综合,做门级仿真,做形式验证以保证网表和RTL级的一致性,产生或更新用户文档等。如果是硬IP的开发,还需要在顶层模块(软IP)的基础上进行布局布线,版图提取,时序分析和形式验证,集成到试用该IP的原型芯片内进行试制投片,并在演示板上得到验证。 


2.2.2 IP验证的主要过程 


(1) 建立参照模型 
这里的参照模型主要用于对系统功能进行验证以及和RTL模型的对照验证,是验证方法学提出的范畴。该模型可用SystemC/Specman E/Vera/Verilog/VHDL等语言来构造; 


(2) 测试平台的建立 
测试平台的建立是指与子模块设计并行,由验证组的一些成员开始搭建验证环境和开发测试用例,并针对IP的行为级模型对测试环境和测试用例进行调试,从而同步准备好用来仿真测试RTL级IP的验证环境和测试用例。 





(3) 回归测试 
回归测试解决的问题是设计在修改一个错误的同时,却引入了另外一个错误。回归测试保证在修改一个错误或加入一个新功能时,已经验证过的基本功能仍然正确。验证工程师应该注意在验证过程中找到一个错误,或加入一个新的功能时,要把它们对应的测试用例及时加入到我们的回归测试集中。 


(4) 形式验证 
形式验证是一种系统级的验证手段,不需要测试向量,而是根据“静态”地通过判断两个设计是否等价来确认它们的功能是否一致,因此,形式验证必须事先有一个参照设计。在IP验证过程中,前面建立的参照模型就是我们的参照设计。形式验证常用来判断一个设计更改后和更改前实现的功能是否一致。同时,形式验证也被用来确认综合后、插入扫描链后、版图提取后网表实现的功能前后是否一致。 


2.3 IP开发过程中的关键技术 
图2是IP开发的技术模型,它集中体现了IP开发的几个技术特征:一是IP规格的定义,二是IP模块的编码、综合、验证、文档开发等,三是IP开发过程中EDA工具的支撑,四是IP开发过程中的质量控制,五是IP打包提交技术,六是IP评测技术。我们认为,IP的规格定义,IP的验证、IP的打包提交是IP开发过程中的三大关键技术。 




2.3.1 IP的规格定义 
IP模块的规格定义必须能够解决以下问题:一是明确IP需要提供什么样的功能,性能需要达到什么样的技术指标。二是定义好IP模块与外部系统的接口。三是定义好该IP模块在可移植性方面所做的努力。四是定义好IP模块的面积和功耗等物理特性。这里我们只重点探讨IP与外部系统接口标准化的问题。 
为了使开发的IP能够高效的集成到新的设计中去,标准化是必由之路。这包括IP模块接口的标准化,IP封装的标准化等内容。 方便快捷的连接各虚拟器件的方法是片上总线。然而太多的总线专利在使用,没有一个完美的片上总线能适应所有的情况。这是因为片上系统的环境和性能需求差异非常大。国际上VSIA组织的一个片上总线工作组先定义了各种片上总线的属性,然后定义了能够连接各种片上总线的Virtual Component Interface。IP模块接口只要遵从VCI规范标准,就能用一个接口设计而适应多个不同的片上总线。 


2.3.2 IP的验证 
IP的验证必须是完备的、具有可重用性的。IP验证的完备性首先要求在设计IP仿真测试方案时必须体现出以下几个方面:1. 从IP的规格出发,对每一个模块测试功能点(testfeature)进行分析,定义每个子模块的仿真测试目标,并确定哪一个测试向量可以验证该测试功能点。2. 整理一个明确的测试列表,包括对目标的估计的和测试覆盖情况。3. 对测试用例的详细设计,并定义验证通过的标准。其次,IP的验证必须覆盖以下测试类型:一致性测试、回归测试、边界条件测试、长时间随机测试、实际应用环境测试等。IP验证的测试覆盖率、功能覆盖率都需达到100%。 
IP验证的可重用性首先要求搭建的IP仿真环境是由一系列可重用的测试组件构成的,如定义总线功能模型,通用的数据处理任务集等。对每一个组件,都应该有关键特征的描述。其次,IP验证要求列出采用的仿真器、仿真库及其版本。 


2.3.3 IP的打包提交 
IP打包技术是指在IP开发基本结束后,将零散分布的设计信息集成的过程。其主要目的是使得设计者提供完整、清晰、明了的设计信息。软IP开发者提交给用户的信息至少应包括:(1)可综合的HDL代码和它的子模快;(2)综合脚本文件及时间约束文件;(3)插入扫描链和做ATPG的脚本文件;(4)综合和仿真用参照库模型;(5)验证中使用的总线功能模型和其他的系统组件型;(6)测试激励文件及相应测试向量;(7)用户文档包括用户手册/功能描述 、数据手册等;(8)应用要点,包括该IP使用的具体的例子,可配置特性等。对需要软件支持的IP,还应该提供相应的嵌入式软件信息。 


3 IP集成 
IP集成面临着一系列的挑战。在现实的市场上,很少的IP模块是可以立刻重复使用的,因为许多IP在设计之初都是针对特定的应用,而很少考虑到要与外来电路搭配使用。IP模块本身的缺陷给IP集成带来的一系列问题有:IP模块的接口不能够和系统芯片(SoC)定义的片上总线很好地匹配,IP模块提供的验证模型如BFM等很难集成到SoC的验证环境,IP模块提供的技术文档不完善,IP模块提供的技术支持不充分、不及时等。这些问题的关键在于IP的定义没有一个通用的接口标准,这是因为芯片实现的功能千差万别,性能方面的要求也由于应用领域的差异而不同,即使同样功能的IP模块在速度、面积、功耗、对外接口等方面也表现各异。国际上,一些大公司的解决办法是逐步定义公司内部甚至是几个公司间通用的片上总线标准,这方面最著名的是国际上的VSIA组织。一些专业IP公司的解决办法是建立单一的开发平台,专注于某一个的应用领域提供不断完善的IP模块和设计服务。我们认为,成功的IP集成必须解决好以下问题。 


3.1 IP集成的一般考虑 
首先,在系统结构设计做好模块划分时,必须考虑好系统芯片采用什么样的片上总线结构,确定哪些模块是可以来自于IP库,哪些模块需要购买IP,IP模块的对接需要增加哪些连接性设计。哪些模块需要从头开始设计。 
其次,模块间的接口协议要尽可能简单,模块间的接口定义尽可能与国际上通用的接口协议完全一致。一个常用的设计技巧就是在数据传送的接口建立申请和应答机制。这虽然会造成芯片在时序、面积、功耗等方面的损耗,但对于加快系统芯片的上市速度大大有利。 
第三,要注意积累IP和IP集成的经验。一旦成功地集成了一个IP到一个系统设计,设计组会对该IP的接口特性非常熟悉。这时候就应该进一步完善该IP,使之对下一个设计的可重用性更好,并逐步建立一系列的衍生IP模块;同时,把集成该IP的经验教训及时记录下来形成技术文档,这将对下一个IP集成者大大有利。 
第四,如果是对应IP的集成,还必须在时钟分布,关键路径的走线,电源、地线的走线,IP模块支持的测试结构等方面考虑与系统芯片保持一致。 


3.2 IP集成的关键技术 
IP集成的关键在于建立正确、高效、灵活的片上总线结构,构造以功能组装为基础的芯片开发模型。片上总线技术是IP集成的关键技术。片上总线技术包括两个方面,一是选用国际上公开通用的总线结构,二是根据特定领域开发的需要自主开发片上总线。国际上比较成熟的总线结构有PCI总线、ARM公司的AMBA总线、IBM公司提出的Processor Local Bus,On-Chip Peripheral Bus,Device Control Register Bus等。片上总线的开发我们还不熟悉,需要进一步跟踪和探讨。值得注意的是在确定片上总线结构时,并不排斥在IP模块内部做一些接口转换的设计,问题是这种设计的内容要尽可能简单。 


3.3 IP模块的评估与选择 
IP的评估是指通过一个完整的Checklist来系统地检查IP设计。评测分为系统设计、编码、综合和验证等不同部分进行,并根据评测规则的重要程度为不同的规则检查分配不同的权值。这样在评测之后,就可以直观地看出整个设计的可重用性和分别在每一部分上的得失。它有助于设计者和管理者了解一个设计的可重用程度,以帮助体系结构的设计工程师针对性能、规模、成本和功耗等不同方面来评估IP模块。目前业界比较具有影响力的评测标准是由Synopsys和Mentor联合开发推行的、基于RMM的OpenMORE评测标准。 
选择IP模块时首要考虑的因素是IP与目标系统的配合程度。一般说来,在进行集成之前,最好选择那些无需修改的IP模块。但是如今的大多数情况是设计人员在获得了IP模块后必须进行修改,修改的范围包括各个设计层次上的IP模型。这种修改会耗费大量的时间和资源,不仅会耽误产品的研发进度,还会给整个设计流程引入风险,并让IP厂商的支持变得困难重重。虽然某种程度的修改是不可避免的,但是如果设计人员能够牺牲一点芯片面积或功能来换取尽可能少地修改IP模块,那么情况就会有所改善。即使某些模块的功能可能超过了系统的需求,但是为了尽量少地进行IP的修改,我们也应该在某些不太重要的功能上做出妥协,以便直接使用一些我们需要的功能模块。 
选择IP模块时必须考虑的另外一个重要因素是:评估IP模块的品质、集成的方便程度和可重用性,并考虑IP提供者所能提供的技术支持程度等。如:使用手册的内容是否详尽完备、是否提供完整的设计和验证环境,是否有成功集成的先例,接口定义标准的遵从程度、未来发展升级的可能性、获取IP授权的效率以及合作厂商的可信赖程度等。  4 结语 
基于时序驱动的设计、基于模块进行功能组装的设计、基于平台开发的设计是当今IC设计比较流行的三种设计方法,基于模块进行功能组装的IC设计方法正成为主流。IC工程师下一步应该关注的焦点是IP技术。即如何进行软硬件的功能划分、如何进行模块互连、应该选择哪些功能模块、功能模块如何使用、如何进行系统验证等等。但是在国内的IC设计业引入IP技术,是需要相当长的一段时间才能真正提高IC设计的产能和设计效率。这是因为我们不仅在IP设计方面还缺少积累,在IP的集成方面也缺乏经验。 
我们认为,在芯片设计中引入IP技术应该从提高芯片设计质量开始。可重用的设计一定是良好的设计。 我们首先应加强对当前设计的代码规范性检查、测试覆盖率检查、功能覆盖率检查、性能分析包括DFT、STA检查、功耗分析检查等QA工作。其次对使用频率高而技术上又比较成熟的电路模块进行质量改善提高其可重用性。再者,对一些实力较强的芯片设计公司,可以考虑购买可信赖程度较高的厂商提供的成熟IP,并在不断的集成使用中积累IP集成的经验。此外,对于专业的IP设计公司,应该尽早建立自己的稳定的开发平台,对某一类IP模块进行深入研究,并不断开发它的衍生类IP、不断优化该类IP的集成环境。



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]