本帖最后由 vista2002 于 2012-8-24 21:50 编辑
上次写完后,有人支持,也有个朋友说写这些东西意义不大吧,如果就某些细节方面感兴趣的朋友可以探讨和切磋,互相学习,也可以私下交流 这只是我的角度去写这些东西,希望大家指正和补充。下面接前天的,继续验证部分。 芯片验证一般有这几个层面, 一个是RTL级或者Netlist( pre or post PR with SDF ), 这个也是一般意义上的芯片验证工作, 一个是FPGA级的,也是RTL, 只不过download到FPGA中, 借助硬件环境,也可以直接做应用实验。 芯片验证的工作量在芯片设计中占据了大部分的时间和精力,无论是那种验证,都需要搭建测试平台(testbench),验证平台从软件结构上模拟芯片的工作环境。即有清晰的连线结构,也有完成这些测试所需要的非结构性的函数或任务包。测试平台中的被测试芯片是RTL级的,测试向量或者说施加的激励可以是verilog/VHDL,HDL语言本身就具有比较完善的行为级描述功能,也可以满足绝大部分测试平台的搭建和测试激励的产生,当然我们面对更复杂设计,或追求更高效率 也可以使用其它被编译器兼容的语言, 如C/C++, SC, SV,E等等 很显然,测试激励是有时间概念的,是按顺序进入和流出芯片的,使用的这些非电路描述语言和功能和软件几乎是没有区别的,所以验证中也越来越多地使用软件的一些技术, 如面向对象的编程技术,SystemVerilog, Specman E等,SV也支持断言语句(assertion),不同厂家提供的OVM, VMM,UVM等也包括了很多类库可供使用。 关于这些技术其实可以有更深入的探讨,也期待感兴趣的能深入展开。
无论传统的验证还是最新的验证方法学,都需要追求验证的收敛性,即验证完全是自动化的检测,除非debug, 我们无需通过波形判断测试通过与否。
对于很多验证,我们几乎不需要上到FPGA上验证,比如数据通信类,完全可以软件实现数据的产生和比对。而有些应用,如影视频,图形抓取等等,如果进入FPGA就可以实现效果功能的检验,FPGA的流程这里不做表述,不过要注意的是,我们用作流片的RTL代码可能和待烧入FPGA的代码有不同之处,比如有些使用的IP在FPGA中可能和流片厂家提供的不一样,还有些端口等等需要特别注意。 还有post layout的后仿,这个后仿是指DFT和APR之后的网表,加入带有时序信息的SDF文件进行仿真。有些人说,我做过验证,代码和网表之间,PR前后网表之间的一致性验证也做了,还需要后仿吗? 答案当然还是需要的,因为一致性也无法检测到很多时序的问题,比如毛刺,甚至DFT的错误, 功能性的问题等等。 现在比较常见数模混合芯片的验证,模拟的部分主要是采用了verilogams建模,当然也有VHDLRN建模等等,这些东西就是引入了可控制和可检测的模拟量,进入数字仿真系统,也是数字验证流程的一环。 更专业的数模混合验证系统ADMS, 里面引入了数字和模拟多个引擎,如数字的nvverilog 模拟的Eldo等等,数字部分导入RTL代码,模拟部分直接导入GDS电路, 当然为了加快速度,模拟部分在使用中一般仍然导入数字模型。 SOC验证中, 植入了烧入ROM的软件, 在仿真验证系统中,使用的一般是存储器的模型加上文本格式的代码文件, 一般实现是直接通过系统读入指令把文件读入到存储器模型中。(有些仿真工具可以直接通过选项导入,类似SDF文件,如工具nscim),仿真器可以直接写出指令执行的log以用于debug,不过现在有更先进的方式用于复杂SOC验证, 如Codelink工具,能够在原仿真器的基础上,建立起MCU和HDL电路已经软件的关系,通过展示波形和固件(firmware)源码的链接进行更方便的debug。
下面需要说的实现部分,就是综合,DFT, STA ,ATPG等,准备合在一起写,感兴趣的朋友也可以接着我的写,我暂时不做这方面的更新,希望朋友们玩个接力 |