位置:51电子网 » 技术资料 » 显示光电

一种提高芯片设计和功能验证并行度的创新方案

发布时间:2008/5/27 0:00:00 访问次数:401

        

    

    

    目前芯片一次投片成功率只有35%左右,主要原因就是验证不够充分。soc设计的验证需要投入大量的资源(已占整个设计资源的40%~70%),而随着设计规模的增大,验证技术已经落后于设计和制造能力,使模拟和验证成为整个设计流程的瓶颈,给提高设计生产率造成了障碍,因此如何更快更好地完成验证工作是目前业界所关注的问题。验证包括功能验证、等价性检查(equivalent checking)、静态时序分析和时序验证、物理验证等几方面。

    

    对功能验证这个环节,大多数芯片设计公司目前采取的办法都是通过运用合适的或更先进的验证平台、灵活运用各种验证方法、提高验证的可用性和复用性、增加人员的投入和每日工作时间,从而缩短验证时间来达到开发周期缩短的目的。

    

    至于设计和功能验证的协同工作方案,基本可以归纳为:

    

    1. 根据原始算法、系统要求等产生各种设计所需文档,如总体文档、功能设计详细文档、接口定义文档等;

    

    2. 设计人员和验证人员分头根据这些文档进行子模块的代码设计、子模块的验证环境搭建、系统级验证环境的搭建工作;

    

    3. 子模块验证人员需要等待下列工作都完成后才能进行验证工作,包括:a. 子模块设计完成并通过基本功能仿真和数组基本固定数据的测试,假如来自算法标准部门的基本固定测试数据不能及时提供,还需等待标准部门的工作完成;b. 参考模型的提供;c. 子模块验证环境搭建完毕。子模块验证人员在此基础上才能进行后续的工作,如验证环境的调试、测试用例的编写及测试等。

    

    大多数时候,验证处于等候的状态,因为被验证对象比较复杂,内部设计经常会出现架构和算法方面的调整,会有延误和返工。即使不做模块级验证而直接做系统级验证也会有这些等待过程,更何况对于大型的设计,按正规、严谨的流程应该是在模块级验证通过的基础上进行系统级验证,这样有助于减少系统级验证的工作量及难度,从而有效缩短功能验证的时间,因为模块级验证通过后,系统级验证需要验证的主要就是接口和子模块间的交互控制了。

    

    可以看到,按上述的方案设计和功能验证属于串行工作,一方面会有很多等待环节,从而造成功能验证的最终完成时间的滞后,另一方面如果要保证最终的交付期限,又要给功能验证预留相对充足的时间,就需要压缩设计的时间,给设计人员带来巨大的压力,引发人力投入和设计质量的矛盾,而设计质量的好坏同样会对后续环节造成影响,最终导致芯片设计周期的拉长。

    

    基于上述实现方案存在的弊端,我们提出了下面这种提高芯片设计和功能验证过程的并行度方案。对于一个电路系统的设计,我们可以把它划分为多个子模块,子模块间有信号的交互(如控制信号和数据等)。对于其中一些功能比较复杂的子模块,当子模块接口定义清晰后,模块设计人员先做一个暂时性模块,该模块的外部接口信号和正式模块的一致,但内部逻辑与正式模块相比很简单,只需按不同功能模块的特定要求完成输入到输出的传递工作,省掉了复杂的内部处理过程,提供给验证人员以便搭建环境、调试环境,做一些和内部具体处理算法无关的工作,如接口、模块间交互、整个数据流打通等。

    

    

    

    图:采用暂时性模块使芯片设计和功能验证并行展开的实例。

    

    这样的暂时性模块由于功能很简单,当子模块接口定义清晰后其编码、仿真和参考模型都能快速提供给功能验证环节,消除了功能验证的等待过程,接着模块设计人员、参考模型提供者做正式模块的编码仿真等工作,而同时验证人员针对单个暂时性模块及由暂时性模块集成后的系统的验证环境搭建、调试及验证工作也可以展开,而且此时的验证只专注于接口、模块间交互、整个数据流打通,便于出错时的定位,降低了验证难度,缩短了验证时间。

    

    由于正式模块内部的正确性可以由功能仿真、测试向量对比,与参考模型的一致性过程得到基本的保证,对暂时性模块的验证过程也能证明验证环境的正确性以及被验证对象在接口和内部模块交互、

        

    

    

    目前芯片一次投片成功率只有35%左右,主要原因就是验证不够充分。soc设计的验证需要投入大量的资源(已占整个设计资源的40%~70%),而随着设计规模的增大,验证技术已经落后于设计和制造能力,使模拟和验证成为整个设计流程的瓶颈,给提高设计生产率造成了障碍,因此如何更快更好地完成验证工作是目前业界所关注的问题。验证包括功能验证、等价性检查(equivalent checking)、静态时序分析和时序验证、物理验证等几方面。

    

    对功能验证这个环节,大多数芯片设计公司目前采取的办法都是通过运用合适的或更先进的验证平台、灵活运用各种验证方法、提高验证的可用性和复用性、增加人员的投入和每日工作时间,从而缩短验证时间来达到开发周期缩短的目的。

    

    至于设计和功能验证的协同工作方案,基本可以归纳为:

    

    1. 根据原始算法、系统要求等产生各种设计所需文档,如总体文档、功能设计详细文档、接口定义文档等;

    

    2. 设计人员和验证人员分头根据这些文档进行子模块的代码设计、子模块的验证环境搭建、系统级验证环境的搭建工作;

    

    3. 子模块验证人员需要等待下列工作都完成后才能进行验证工作,包括:a. 子模块设计完成并通过基本功能仿真和数组基本固定数据的测试,假如来自算法标准部门的基本固定测试数据不能及时提供,还需等待标准部门的工作完成;b. 参考模型的提供;c. 子模块验证环境搭建完毕。子模块验证人员在此基础上才能进行后续的工作,如验证环境的调试、测试用例的编写及测试等。

    

    大多数时候,验证处于等候的状态,因为被验证对象比较复杂,内部设计经常会出现架构和算法方面的调整,会有延误和返工。即使不做模块级验证而直接做系统级验证也会有这些等待过程,更何况对于大型的设计,按正规、严谨的流程应该是在模块级验证通过的基础上进行系统级验证,这样有助于减少系统级验证的工作量及难度,从而有效缩短功能验证的时间,因为模块级验证通过后,系统级验证需要验证的主要就是接口和子模块间的交互控制了。

    

    可以看到,按上述的方案设计和功能验证属于串行工作,一方面会有很多等待环节,从而造成功能验证的最终完成时间的滞后,另一方面如果要保证最终的交付期限,又要给功能验证预留相对充足的时间,就需要压缩设计的时间,给设计人员带来巨大的压力,引发人力投入和设计质量的矛盾,而设计质量的好坏同样会对后续环节造成影响,最终导致芯片设计周期的拉长。

    

    基于上述实现方案存在的弊端,我们提出了下面这种提高芯片设计和功能验证过程的并行度方案。对于一个电路系统的设计,我们可以把它划分为多个子模块,子模块间有信号的交互(如控制信号和数据等)。对于其中一些功能比较复杂的子模块,当子模块接口定义清晰后,模块设计人员先做一个暂时性模块,该模块的外部接口信号和正式模块的一致,但内部逻辑与正式模块相比很简单,只需按不同功能模块的特定要求完成输入到输出的传递工作,省掉了复杂的内部处理过程,提供给验证人员以便搭建环境、调试环境,做一些和内部具体处理算法无关的工作,如接口、模块间交互、整个数据流打通等。

    

    

    

    图:采用暂时性模块使芯片设计和功能验证并行展开的实例。

    

    这样的暂时性模块由于功能很简单,当子模块接口定义清晰后其编码、仿真和参考模型都能快速提供给功能验证环节,消除了功能验证的等待过程,接着模块设计人员、参考模型提供者做正式模块的编码仿真等工作,而同时验证人员针对单个暂时性模块及由暂时性模块集成后的系统的验证环境搭建、调试及验证工作也可以展开,而且此时的验证只专注于接口、模块间交互、整个数据流打通,便于出错时的定位,降低了验证难度,缩短了验证时间。

    

    由于正式模块内部的正确性可以由功能仿真、测试向量对比,与参考模型的一致性过程得到基本的保证,对暂时性模块的验证过程也能证明验证环境的正确性以及被验证对象在接口和内部模块交互、

相关IC型号

热门点击

 

推荐技术资料

按钮与灯的互动实例
    现在赶快去看看这个目录卞有什么。FGA15N120AN... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!