首页 > 编程知识 正文

芯片验证和测试有什么区别,旷视现在是做什么类型的芯片呀

时间:2023-05-05 10:34:06 阅读:129309 作者:1840

正文: http://www.eetop.cn/blog/html/28/1561828-433734.html

在设计计算器时,除了加减乘除的基本功能外,在科学计算层面还需要注意三角函数、取模、阶乘、乘方运算、开根号等复杂运算。

在设计处理器时,考虑分割为运算器(算术逻辑运算单元、ALU、Arithmetic Logic Unit )和高速缓冲存储器)和实现它们之间的连接的数据(Data )、控制、状态的总线(Bus )

设计系统集成芯片(SoC,System-on-Chip )时,子系统包括处理器、NoC,网络- on-chip、内存、I/O控制器)、USB,以及PCIe

随着系统集成度的提高,系统本身的复杂性也在增加,结合实际工程项目可以看出,提高系统复杂性对功能验证的要求是第一个。 由于功能验证在芯片的整个过程中占有重要的位置,对于一名验证工程师而言,他需要充分理解系统验证的全过程,这个过程就是功能验证的生命周期功能验证在项目继续进行中(当前芯片的迭代周期越来越短是裁剪以前的项目进行快速的芯片设计过程另外,如果功能验证在项目中,还必须考虑如何完善验证流程和环境。

那么,本文带大家离开芯片的完整开发过程,看看芯片验证在整个项目中的地位和作用。

一般来说,新的芯片项目首先从营销人员与目标客户的沟通开始。 在此期间,市场代表将收集客户对芯片的要求(主要包括功能、尺寸、功耗和性能),这些指标将记录在设计结构和产品文档中。 然后,系统设计者将客户感兴趣的系统级功能要求进一步划分为各个独立的子系统模块,如果这些子系统本身太大,则硬件设计可以由划分大小较小的设计团队进行

其中,如果硬件设计者一般按照芯片的每个功能模块划分为不同的功能组,则随着系统复杂度的增加,系统设计者的数量也随之增加。 在硬件设计过程中,硬件设计工程师将具体的功能描述文本进行逻辑翻译,生成硬件描述语言(HDL、 硬件描述语言(Hardware Description Language )、当前广泛使用的HDL语言VHDL和Verilog都成为了各自的大电子语言(EDA )。 由于SystemVerilog语言本身具有Verilog的语言属性和添加的硬件设计语言的附加属性,因此系统Verilog的一些子集也被组合为可用于集成的硬件设计语言。

在细分大小合适的模块首次完成RTL级(寄存器级、注册传输级)硬件描述语言文件后,功能验证人员此时将执行一些任务来检查硬件设计。

HDL硬件描述文件是否按照功能描述文档正确实现?

是否存在硬件设计人员忽略的其他情况(corner case )?

硬件设计是否足够稳定以处理一些错误?

在实际项目中,请访问硬件设计人员和功能验证人员的合作是紧密的

系统设计团队将功能要求翻译成功能说明后,硬件设计团队和功能验证团队需要围绕功能说明书分别开展硬件设计和功能验证工作。

硬件设计团队首次翻译硬件描述文件后,功能验证团队需要将硬件描述文件构建验证环境推广到各功能点的验证中。

分为验证环境测试中实际结果和预期结果不一致的情况

如果硬件设计与功能描述文档存在明显的不匹配,功能验证人员将报告存在设计缺陷,硬件设计人员将修复硬件描述文件。 这样,从验证返回设计,返回验证,就完成了缺陷的检测和修正周期。

如果实际结果和预期结果有模糊边界(例如,时间序列问题、状态机跳转问题),验证者和设计者对同一功能描述文档的理解有分歧,他们将进行初步讨论,以确定哪一个理解有偏差。 在讨论仍然无法判定理解差异的情况下,双方最终找到系统设计者进行“裁决”,明确原来的系统设计思想,统一对双方功能描述的理解。

因此,硬件设计的完成度和缺陷率在设计者和验证者的迭代周期中不断改善,最终达到目标。 稍后的文章“验证任务和目标”中将详细介绍功能验证目标的定义。

功能验证完成后,后端负责人将RTL文件放在一起生成门级网表文件(gate netlist ),同时为目标速度进行布局布线,最终使门级电路能够在设定的时钟频率下工作在后端的各种过程中,与前端验证器密切联系的是标准延迟格式(SDF )文件,实际上包括门级网络表中每个门单元之间的延迟情况

因此,对于功能验证过程,我们所说的模拟是基于项目的现实

施流程将其划分为前端仿真和后端仿真:

前端仿真指的是进行RTL仿真,在这种仿真当中是没有真实延时情况的。对于一个寄存器(register),它的输出端(Q port)相对它的时钟输入端(Clk port)的延时为零延时(delta delay)。

后端仿真指的是进行Gate仿真。在实际项目中,由于后端综合进而产生SDF文件本身需要不断迭代周期,我们进一步又将门级仿真划分为零延时仿真和SDF仿真。

零延时仿真是只有门级网表参与仿真,没有SDF文件来具体反向标注(back annotation)门级延时情况,所以门之间的延时仍然为零延时,这个时候门级零延时仿真与RTL仿真的区别仅在于前者是后者的逻辑映射,从寄存器级别到门级的逻辑转译,这一步是由后端的综合工具(synthesis tooling)完成的。

当后端随后产生出SDF文件时,我们会将门级网表反向标注上SDF文件中包含的每一条门单元之间路径的延时,最终进行有真正延时电路的仿真。

 

从验证完整性而言,前端仿真和后端仿真均需要在项目中实施,而它们侧重的目标也有不同。前端仿真是为了检测出功能逻辑的缺陷,而后端仿真是为了检测出实际门级电路中由于延时问题可能导致采样失败进而产生的功能缺陷。也因此验证人员不能将前端仿真的功能缺陷检测任务下移到后端仿真阶段,因为就效率问题而言,前端仿真要显著高于后端仿真;同时,后端仿真之所以不能忽略是因为它可以协助后端人员来测试出实际生成电路中是否有时序不满足的问题。

 

当完成后端仿真以后,我们会将后端生成的标准格式文件最终交付给芯片生产商进行流片(tape out)。从上面的描述来看,这是一个完整的芯片从定义、分块、设计、验证和后端的硅前(pre-silicon)流程,同时芯片在流片以后所面临的硅后流程(post-silicon)也是一个完整的周期,这其中包括了组件测试,驱动,系统固件和应用软件编写等等。由于功能验证处在硅前流程当中,我们在这里主要阐述该流程,同时,我们也将一些相对独立的部分略去(这并不代表它们不重要),例如可测试性设计(DFT,Design for Test)。

 

至此,芯片的硅前流程就结束了。考虑到验证人员同设计人员在实际工作中的密切结合,我们举出一个生活中的例子来情景演绎出设计验证流程是如何进行的。

 

我女儿无私的马里奥三岁了,小姑娘喜欢吃糖,她妈妈每次碰到她索要糖果也是没有什么好办法。这个时候,她的工程师爸爸给出了一个流程图来应对无私的马里奥要吃糖的情况。

这张图画了出来给蒙妈看了一下,蒙妈看过以后笑着讲,你先试试看你这一套有没有用吧。

等到小家伙过了一会儿又来要糖的时候,我问她,你是不是之前刚吃过啊?无私的马里奥点了点头,说是。我接着问,可是还需要等4个小时才可以吃下一颗啊。无私的马里奥这时候不懂4个小时是多久,只是她一听到“小时”两个字就大约知道应该会挺久的,要知道她可等不了那么久。于是乎,不属于下面这个决策流程中的一幕发生了,小家伙一开始央求我,后来觉着不灵就索性哭了。好吧,工程师爸爸的流程设计存在缺陷,于是,就把无私的马里奥揽到怀里,给她讲了一个故事。无私的马里奥听完故事,满意地又去别的地方玩儿了,仿佛忘了刚才还在因为一颗糖哭得一把眼泪。看到这招管用,于是我就把这个流程图该成后来的样子,经过亲身经历,又交给蒙妈看了看,这次蒙妈点了点头,笑着说,知道孩子不好带了吧……

是啊,即使作为一名有经验的设计人员(Rocker),在面对新问题的时候(无私的马里奥要吃糖),也不能对自己的设计太过自信,只有经过验证人员(无私的马里奥)充分验证的设计才是经得起时间考验的。说到这里,看着我才修改的这张流程图,我还是自信不起来,因为晓得讲故事的套路说不定哪天就不管用了。如果到了那个时候,新的设计缺陷一旦暴露出来,那设计人员还是得再进一步完善设计,确保它的功能良好啊。

 

所以讲,我和无私的马里奥也是紧密协作的,就同设计人员和验证人员一样,当设计发生了问题,我不能生气,不能太过自信,我需要坐下来同无私的马里奥交谈,找出缺陷在什么地方,再将缺陷补上,下一次再交给无私的马里奥,直到无私的马里奥最终可以不用哭也能开心地吃到糖,同时我也不会因为她频繁吃糖而担心她的牙齿会坏掉。所以从这个角度来看,设计人员和验证人员能够在一起,是上辈子就修来的福分啊,不就像我跟无私的马里奥一样吗?

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。