嵌入式 > 技术百科 > 详情

IC设计中先进库格式语言与EDA工具的结合

发布时间:2023-04-20 发布时间:
|

先进库格式(alf)是一种提供了库元件、技术规则和互连模型的建模语言,不同抽象等级的alf模型能被eda同时用于ic规划、原型制作、实现、分析、优化和验证等应用中。本文在介绍alf概念的基础上,详细讨论了使用alf时库元件与ic的设计流程,同时还介绍了ic分层实现与原型制作的方法。

在ic设计中,常常会发现半导体性能与得到的设计结果之间存在差距,这些差距最终要靠新一代eda工具来弥合。一般说来,要想消除差距就必须将以前孤立的设计任务集成到一起,或者将以前零散的设计方案进行统一。

例如过去在设计和测试之间就存在隔阂,现在用可测性设计的概念可加以解决,在综合和布局之间的矛盾最近也有了物理综合概念方案,下一个计划目标是针对设计和掩膜生成之间的问题,希望能用可制造性设计的概念解决。

然而在库的创建和具体设计之间依然还存在矛盾,就像数据总在前后端设计之间传来传去类似,带有预定义建模概念的库也是在供应商和用户之间倒来倒去。

库元件由供应商进行定义,建模概念则是eda应用所要求的,设计人员没有选择,有什么库元件就只能用什么,不可能去深入理解更不用说修改了,库的内容可能会超出所选eda工具处理的范围。随着设计复杂性、性能和费用不断增加,预定义库的概念也很成问题,例如在设计项目开始时,用户可能会在用于某种特定技术的库实际出现以前,就希望能了解用该技术实现设计是否有意义。

在设计实现过程中,用户需要创建一些模块作为可重复使用的库元件,结束时如果可用库元件(如具有正确驱动能力的单元)不多,用户将只需做很少的布局优化就能满足性能目标。在设计过程中任何时候,用户都可能要按不同程度的抽象和精度对时序、功率、电气性能、拥塞、路由性能及其它设计特性进行评估。

accellera alf是一个新完成的ieee标准,其设计可使用户对库及设计流程中的应用有更强的控制和影响能力。alf不像传统库格式那样仅仅是一个数据信息库,它是一种智能型自扩展建模语言,可对库元素的功能、电气和物理模型,包括技术规则、单元、构建模块和互连等提供语义支持。

alf支持完整的rtl到功能、asic和soc技术库电气性能与布局视图的gdsii描述,适合从单元到复杂的分层设计模块。alf是一个经生产验证的标准,得到先进半导体供应商和用于0.13μm及更小工艺技术的下一代eda工具的支持。

alf的抽象范围可用于行为、rtl、门级和布局,它不是凭空开发的,而是现有库格式的超集,很容易从现有格式转换过来。alf的结构原理非常简单很容易掌握,它主要关注内容而不是格式细节和各种限制。

从应用的观点看,语言元素可和建模域联系起来,它可以是功能域、电气域或物理域。但alf描述功能主要来自与域无关的语言元素,如模板(用于重复使用库描述)和算术模型(用于数学描述量的计算)。

库元件创建和描述

alf可用来指定一个库元素如单元所需的功能和描述,单元规格包括单元名称和终端(即引脚)与单元所执行功能的形式描述,形式描述可以在vhdl或verilog等语言中生成硬件描述语言(hdl)仿真模型。

可生成多种hdl模型用于不同的目的,这里的不同根据用户对模型风格的爱好而不是由单元功能来决定。例如某个模型可以用一种粗略的方式处理未知逻辑状态,以便快速仿真,而另一个模型则可用非常具体的方式处理未知逻辑状态,这样仿真就要慢一些,但更精确。alf模型可作为公共参考,用于所有这些hdl模型。

单元的物理布局以gdsii格式表示,spice格式的晶体管级网表可从物理层中提取,这样的晶体管网表中包括了寄生电气分量。或者设计人员也可用手工或eda工具创建晶体管网表,将alf描述的功能规范映射到晶体管网表中。这种网表的精度要低于从布局中提取,但对制作原型库还是有用的。

晶体管网表和各钟hdl模型都能和alf描述的功能规范进行比较,更重要的是,晶体管网表还能用来描述单元的性能,以便通过运行spice仿真来测量时序、功率、噪声和其它电气特性。

spice仿真由描述工具进行控制,该工具从alf表示的规范中推断出相关信息,只要这个信息与单元本身的功能相关,例如需要描述的时序曲线可在alf中表示,也可从alf中推出。描述工具的输出是库单元模型,带有特性数据,同时也在alf中表示,另外也可用库编辑器将所有库单元模型组合成一个二进制文件,作为eda应用工具的数据准备。

ic实现与性能分析

alf库可用在以单元作为构建模块的ic实现流程中(图1)。在该流程里,rtl设计描述通过rtl综合工具转换成网表,网表含有单元示例,这里称为门而不是晶体管,它使用alf库寻找将rtl描述映射到含有单元示例网表所需的库元件。alf单元模型不会描述单元中的晶体管。

等价检查工具将rtl设计描述与网表进行比较,以确定rtl到网表的转换是否正确,它可用与rtl综合工具相同的alf库。同样,hdl模拟工具(图1中没有显示)也能用来确定rtl设计描述和网表行为在响应给定激励时是否与预期的一样,该模拟工具可使用alf模型或从alf模型提取出来的hdl模型。

图1的流程已经进行了简化,像数据通路结构创建、与可测性设计(dft)有关的结构创建以及特殊扫描插入等特殊网表转换没有显示在图中,alf单元模型含有与这些应用有关的信息。

单元布放和内部互连布线过程简称为布局,电源或时钟网络结构之类特殊布局没有在图1中明确表示。alf单元模型含有抽象物理信息,像单元大小和形状、单元引脚和路由障碍位置、大小和形状等等,这些都与布局有关。

同样,与单元内布线图有关的抽象信息也能在alf中表示,包括特定层布线区域、边界和连接特性,这些信息与制造能力有关,像天线规则和金属密度检查之类。除了单元模型,布线规则也在alf中表示,这部分包括布线段宽度和长度的限制、布线段之间的距离以及通孔之间的距离等。

已实现的ic不仅要按功能和布局进行校正,还必须满足电气性能条件制约,主要是时序方面,其它电气性能如功耗、信号完整性和可靠性也变得越来越重要,信号完整性指信号波形的干净程度、对串扰噪声的抵抗性和电压降。

可靠性是指在电迁移应力、热电效应和热不稳定性存在情况下的长期运行稳定性。alf单元模型支持用于时序、功率、信号完整性和可靠性的数据描述,如可靠性数据可描述为对电压、电流或工作频率的限制条件。

alf的一个特殊之处是这些数据在激励中的表达方式,它通过矢量表达式进行表述,数据可用这种特性与特定环境的运行条件联系起来,以完成更为精确的性能分析。

ic实现过程每一步都要进行性能分析,rtl综合、单元布放和互连布线应用已经包含了静态时序分析(sta)和其它性能分析功能。同样,在每步完成之后,还可进行独立的性能分析,以便更精确地测量得到的性能。

电气性能不仅取决于单元间的相互作用,还与连线所引起的寄生现象有关。网表生成以后,寄生参数可以用线负载模型(wlm)进行统计预估。布局后通过预先估算布放单元引脚间特定的布线长度能精确预计到寄生参数,布线完成后,实际寄生参数利用标准寄生参数交换格式(spef)在文件中进行提取和表达。

alf互连模型能够描述统计的wlm,它是一个根据估计的布线或互连分析模型进行寄生参数评估的规则。互连分析模型可以指定寄生现象所需间隔,以及根据寄生参数示例和驱动器单元电气模型来计算时序、噪声、电压和电流。特定驱动器单元电气模型所用数据在alf中表现为单元特性数据的一部分。

ic分层实现与原型生成

以单元作为构建模块的ic实现流程受到单元和网络等目标数目的制约,可由设计人员和应用流程进行处理。对于超过目标限制但还可以处理的ic,可以使用下面方法,这些方法也可组合使用。 自底向上设计:首先由单元创建较大的构建模块,然后使用这些模块来实现ic。 自顶向下设计:首先将设计分成子设计,实现子设计作为模块,然后将这些模块组装起来。 原型制作:首先为整个设计做一个简化所谓的虚拟实现,然后将虚拟实现分割为不同的模块,使用虚拟实现的结果作为每个模块实际实现的限制条件,最后再把各模块组装起来。

所有这些方法的共同点是创建模块,以减少应用面对的对象数量,模块创建流程见图2。

模块可用基本ic实现流程来创建(见图2),可以再使用的模块一般称为ip。对“硬”模块来说,实现流程主要的输出是带布局布线的门级网表,保存下来后最终转换为物理布线图,而“软”模块只有设计主要输出即rtl设计表述被保存下来。

设计流程输出只用于模块描述,即创建用于模块的抽象模型,模块描述包括了在特性描述和接下来的抽象中反复进行的性能分析。抽象含有减少物理实现数据以及性能分析数据和特定模型的关系方面的内容,模型规范和模型本身两者都能用alf进行表述。

流程的变量包括ic部分实现,如只做rtl综合和布放而没有布线,这特别适用于不保留实现数据的软模块。不保留模块实现数据的概念是通过之后在其它模块上下文中完成,而不是在前端单独实现,这样可获得更好的整体性能效果。

根据模块是用作硬模块还是软模块,alf模型能表述不同等级的抽象。用作硬模块的alf模型具有和单元alf模型相同的特性,此外,网表和表述实现流程输出的寄生参数可部分保留在alf模型中,特别是在模块边界处。这样就能在一个ic实现的上下文中对相邻模块之间的电气相互作用进行精确分析。另一方面,用于软模块的alf模型可以表述一个统计范围,或者描述数据的上下边界,而不是“硬”的特性数据,这是因为实际模块实现具有一定程度可变性,此外统计得出的wlm也能装在模块模型中。

alf支持用参数表示模块特定建模特性,即可用各种物理形状和大小以及可变位宽与特性实现的模块,alf里的组、模板、静态和动态模板等概念都能这样用。

不管是硬模块还是软模块,创建ic现在可以用模块抽象模型作为库元件而不是单元。用类似方法,由于单元alf模型不能反映晶体管级实现的细节,所以模块的alf模型无法揭示门级实现的细节。然而模块alf模型依然能提供足够的信息用于执行或开发ic实现应用,还能分析性能以及在逻辑与物理设计方面的兼容性。ic设计是在特定限制条件下进行的,环境限制包括封装特性、pcb、工艺范围如电压及温度(pvt)条件等,其它条件属于通用可应用物理设计规则,如可用布线层、保留用于电源的布线数和在芯片边缘与中心可用于i/o引脚的位置等。

原型制作可用来评估设计能否在这些条件下实现,alf中的电气特性数据如时序、功率、噪声、物理与电气规则、寄生参数评估模型等均能表达为环境条件的数学方程式。图3显示了ic原型制作和层次实现的流程,其中包含了alf模型不同的抽象级。

设计规划和原型制作使用模块预定义模型作为库元件,称为“库模块模型”。设计被分割成子设计,在模块创建过程中,将模块实现和特性描述组合用于每个子设计,用于每个模块的可应用库元件就是单元。

模块创建以后输出的是子设计特性模型,称为“设计模块模型”。设计模块模型可反复进行设计规划,结果可能需要对设计进行细化和再划分。按子设计限制条件对每个模块进行评估后,再按通用设计限制对虚拟组装模块作评估,如果评估满意,模块实现的结果即每个模块带布局和布线的网表将被实际组装形成ic。

ic设计可以使用单元、硬模块加软模块、固定规范模块以及参数化模块等各种组合作为库元件,有些库元件可独立于设计使用,而另外一些则要在设计中创建,只能用于特定的设计。软模块抽象模型可和用于硬模块的更详细的模型相连,模块实现过程中,抽象模型也可用更详细的模型来替代,整个流程都要使用技术规则和互连模型。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
光纤通道的实时数字图像存储