主页 > 程序员中山人才网

数字IC芯片验证流程及验证软件推荐?

159 2023-12-15 19:14

一、数字IC芯片验证流程及验证软件推荐?

一、确定项目需求

1. 确定芯片的具体指标:

物理实现

制作工艺(代工厂及工艺尺寸);

裸片面积(DIE大小,DIE由功耗、成本、数字/模拟面积共同影响);

封装(封装越大,散热越好,成本越高)。

性能指标:

速度(时钟频率);

功耗。

功能指标:

功能描述

接口定义

2. 系统级设计:

用系统建模语言(高级语言 如matlab,c等)对各个模块描述,为了对方案的可行性进行验证

二、前端流程

1. RTL 寄存器传输级设计

利用硬件描述语言,如verilog对电路以寄存器之间的传输为基础进行描述;

2. 功能验证(动态验证):

对设计的功能进行仿真验证,需要激励驱动,是动态仿真。仿真验证工具Mentor公司的 Modelsim, Synopsys的VCS,还有Cadence的NC-Verilog均可以对RTL级的代码进行设计验证,该部分称为前仿真,接下来逻辑部分综合之后再一次进行的仿真可称为后仿真。

3. 逻辑综合(Design Compile):

需要指定特定的综合库,添加约束文件;逻辑综合得到门级网表(Netlist)。

4. 形式验证(静态验证):

功能上进行验证,综合后的网表进行验证。常用的就是等价性检查方法,以功能验证后的HDL设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。这样做是为了保证在逻辑综合过程中没有改变原先HDL描述的电路功能。做等价性检查用到Synopsys的Formality工具。

5. STA静态时序分析:

在时序上进行分析,用到Synopsys的PT(Prime Time)工具,一般用在后端设计中,由版图生成网表进行STA更准确一些;

STA满足时序约束,得到最终的Netlist

6. DFT(design for test)可测性设计:

为了在芯片生产之后,测试芯片的良率,看制作有无缺陷,一般是在电路中插入扫描连(scan chain)

DFT是在得到Netlist之后,布局布线(Place and Route)之前进行设计

三、后端流程

1. 布局布线(Place and Route):

包括时钟树插入(布局时钟线),布局布线用到Synopsys的IC Compiler(ICC)工具。

在布线(普通信号线)之前先布局时钟线,即时钟树综合CTS(Clock Tree Synthesis),用到Synopsys的Physical Compiler工具。

2. 寄生参数提取(Extrat RC):

提取延迟信息

3. 静态时序分析(STA):

加入了布局布线延迟,更真实的时序分析

4. 版图物理验证:

DRC(设计规则检查)、LVS(版图一致性检查)

工具:Mentor:Calibre

Synopsys:Hercules

Cadence:Diva/dracula

5. 生成GDSII文件,Tap_off 流片

(注:整个IC设计流程都是一个迭代的过程,每一步如果不能满足要求,都要重复之前的过程,直至满足要求为止,才能进行下一步。)


各流程EDA工具如下:

二、IC 验证岗需要掌握哪些技能?

IC验证作为保证芯片功能正确性和完整性最重要的环节,【功能验证】这个岗位需要掌握的知识和技能是比较多且有难度的。

https://xg.zhihu.com/plugin/809b5b7949a7cd0eb02bb109a52543d5?BIZ=ECOMMERCE

首先是理论知识,例如:数电、数集、电路分析、半导体物理等。也许这类基础性知识平时不会直接应用在工作中,但是这些知识能够很好地帮助你理解电路、看懂元器件资料和原理图。

其次是工作中的常用工具,UVM是现在主流的验证方法学,也是验证工程师必备的核心技能。

按照工作流程,验证工程师要先搭建验证环境和测试用例,然后进行仿真和debug。在这个环节,需要使用到EDA仿真工具。不同公司使用的工具软件不同,但大都是三巨头家的(Synopsys、Cadence、Mentor)。掌握并熟练使用这些EDA工具,能够很大程度上提升仿真和debug效率。

再次是环境,EDA工具提供的基本都是Linux版本,芯片设计公司提供的开发环境也都是Linux。这就需要IC验证工程师熟练掌握Linux环境下的常用命令和操作。

除此之外,还需要使用编辑器来处理文本,比如VIM,所以对于编辑器同样要做到熟练使用。

然后是编程语言,验证工程师需要使用各种验证语言去搭建验证环境。常用的验证语言有C、C++、Verilog和System Verilog。

这里要说明一下,验证岗位对Verilog语言的要求是能够看懂、能够理解的程度,并不需要像设计岗位那样精通。

现在芯片的集成度很高,芯片设计也越来越复杂,为了更方便例化模块,System Verilog语言越来越流行。SV同样也是验证工程师的核心技能。

最后是各种协议,除了验证的一些基本技术之外。IP中还会使用到很多协议,所以验证工程师还需要了解各种通用协议。

如果说前面的技能都属于基础的话,协议就属于进阶类型的技能了,也算是加分项。

https://xg.zhihu.com/plugin/809b5b7949a7cd0eb02bb109a52543d5?BIZ=ECOMMERCE

验证在整个芯片设计流程中是非常重要的,而且工作内容兼备硬件和软件,对攻城狮也有一定的要求,这里提到的也只是个入门而已。

在实际工作中,验证工程师要学的还有很多。无论是还没入行的小白,还是已经成为验证工程师,都要持续、不断学习。

以上。希望可以帮到你。

三、ic验证面试经验?

1.找工作首先是自己的简历要做得好,简洁、条理清晰,让人一看就知道你会哪些,不会哪些。

2.复习自己的工作范围内的基础知识做到心中有数,面试时如果是技术类的技术总监会问你一些基础的知识,如果连最基础的都不知道,那就不用向下走了。

3.面试之前要了解一下你所面试的公司的状况,公司是做什么的,未来你的所在的岗位你是否能胜任,公司未来的方向。

4.就是着装,不要太邋遢,也不要太正式,休闲偏商务就点就好自己把握好分寸。

5.面试时要把自己要表达的都清晰的表达出来,不要慌张、不要夸张、实事求实

四、ic是什么程序员?

IC设计工程师。

IC设计工程师是一个从事IC开发,集成电路开发设计的职业。随着中国IC设计产业渐入佳境,越来越多的工程师加入到这个新兴产业中。成为IC设计工程师所需门槛较高,往往需要有良好的数字电路系统及嵌入系统设计经验,了解ARM体系结构,良好的数字信号处理、音视频处理,图像处理及有一定的VLSI基础。

五、lcd屏算不算ic?

不算。

LCD是液晶显示器的意思,LCD驱动控制IC,意思就是控制液晶显示器显示方式的集成电路芯片。

芯片内含恒流产生电路,可透过外挂电阻来设定输出恒流值。

透过芯片的使能端可以控制输出通道的开关时间,切换频率最高达一兆赫(1MHz)。

电流输出反应极快,支持高色阶变化及高画面刷新率的应用。内建开路侦测, 过热断电,及过电流保护功能,使应用系统的可靠性大为提升。

六、ic芯片验证的主要工作流程和验证工具是什么?

我们知道芯片制造出来到用户手中之后是没办法再次更改的,流片失败的代价非常的昂贵,大公司还好有试错成本,小公司可能直接拜拜了。因此需要确保芯片在流片前,把设计所定义的功能都检验正确无误。

所以芯片验证的开始是从spec的定义开始的,有了它之后就可以定制相应的验证计划,随后才是根据DUT搭建testbench,编写定向和随机的测试用例进行仿真,跑regression后收集覆盖率,根据覆盖率的情况再决定是否增补testcase。直到coverage达到验收标准,功能验证才算结束了。

芯片验证也会有很多分类,根据芯片类型的不同可以分为:CPU验证、GPU验证、TPU验证、NPU验证、SoC验证等等;据工具的不同可以分为EDA验证、FPGA原型验证、Emulator验证

EDA验证即功能验证,根据开发的不同阶段分为前仿验证和后仿验证。主要工具有VCS、Verdi、NC-Verilog、ModelSim等等。EDA验证是通过软件仿真来验证电路设计的功能行为,是比较理想情况下的,没有考虑电路内部逻辑与互连的延时。优点是波形直观,能够快速找出功能bug,性价比高,缺点是仿真速度慢,难以对整个芯片系统进行验证。

FPGA原型验证即编译设计代码,并且综合为真实的硬件电路对应FPGA板子上去,通过真实的硬件电路进行仿真(FPGA原型)。FPGA原型验证,将RTL代码移植到FPGA来验证IC系统的功能和性能。基本流程:将ASIC代码转换成FPGA代码,编译与对设计拆分,综合,布局布线,生成比特流文件bitfile。优点是降低了软硬件协同验证的成本,加速了硬件验证和软件开发;缺点是编译较慢,设计拆分时易出错,比较难定位bug。

通常认为Emulator验证为介于simulator和FPGA prototyping间的产物,同时拥有二者的优点,如方便debug波形、可使用force/release命令、检查覆盖率、打印display信息、同时运行速度快很多,最大的缺点就是太贵了,需要时间和人力去搭建环境和维护。Cadence的Palladium、Mentor Graphics的Veloce,以及Synopsys的ZeBu等平台。

根据层次不同可以分为模块验证、子系统验证、系统验证

模块验证:侧重点在模块本身功能的验证,验证计划的重点是feature和验证架构,然后列出testcase,模块能够覆盖的绝不到下一级验证去覆盖。主要内容有:检查参数设置、寄存器读写、协议检查、中断和复位、状态机跳转、工作模式覆盖、RAM的读写功能边界等等。

子系统验证:侧重点在系统的互联性,更加关注系统的工作模式和复杂场景应用。主要内容有:中断的产生、DMA功能、IP的模式功能、Memory读写等等。

系统验证:侧重点在软硬件协同仿真,关键系统路径的覆盖,芯片工作模式和测试模式以及数据通路和性能等。主要内容有:基本IP功能、CLK/RESET、IO MUX 、多个IP同时工作、程序的启动、工作模式和应用场景测试。

根据可见度可分为黑盒验证、灰盒验证和白盒验证等等。

黑盒验证:验证的输入只有输入信号,输出信号和相应的功能。不需要关心内部信号和架构,验证代码对DUT内部的更改不太敏感。常用于大规模的系统级验证。

白盒验证:验证的输入有输入信号,输出信号,内部信号,所有的信号时序和相应的功能。需要了解实际的实现方式,能够阅读RTL设计代码。常用于模块级别验证。

灰盒验证:黑盒验证和白盒验证的结合体,这使得验证环境的开发更加灵活。常用于子系统级别验证。

芯片验证流程:

1.芯片规格

  • 根据市场产品需求,规定芯片需要达到的功能和性能
  • 产品和架构师根据客户提出的规格spec,商定出具体设计解决方案和实现的架构,
  • 划分出各个模块的文档。

2.测试点分解

  • 根据spec文档,分解出具体的测试点
  • 可以分为场景类、功能类、性能类等等
  • 分解的颗粒度尽量细致,直到完备无漏
  • 一个测试点被一个case覆盖的原则分解

3.验证方案

整个芯片的验证方案一般由验证负责人规划,将设计分成多个子系统,再将子系统分成多个模块:

  • 具体验证策略
  • EDA工具和IT资源
  • 项目进度安排
  • 未覆盖的功能,风险评估

4.验证计划

定制验证策略,评估验证计划,细化testbench搭建、debug、case开发等时间,大概分为:

  • spec阅读和测试点分解时间
  • 开发环境和调试冒烟测试时间
  • 开发case,完成全部case时间
  • 回归测试和验证报告的时间

5.搭建验证平台

  • 一般由激励生成器、驱动器、采样器、参考模型和计分板组成
  • 从简单的功能开始,测试可以通过验证环境之后,再扩展其他功能
  • 经常遇到编译报错、语法错误、预期错误,需要逐一解决
  • 分析报错是由验证环境引起的,还是设计代码错误造成的

6.测试用例开发

  • 冒烟测试:基本的寄存器读写测试,确保数据流已通
  • 直接用例:根据spec中program流程配置的典型测试
  • 随机用例:用于变量随机,覆盖更多边界,注重约束条件的配置
  • 增补用例:以提高覆盖测试点为目标,增补相应的测试用例

7.回归测试

  • 基本功能回归:基本功能与基本场景覆盖
  • 高级功能回归:高级功能和边界测试覆盖
  • 覆盖率收集回归:高级功能测试完成之后,开始收集覆盖率

8.覆盖率分析

  • 行覆盖率
  • 条件覆盖率
  • 跳转覆盖率
  • 分支覆盖率
  • 断言覆盖率
  • 状态机覆盖率
  • 功能覆盖率

9.验证报告

  • 应用场景验证
  • 模块复用说明
  • 覆盖率分析
  • 风险评估
  • 待改进方案

10.后仿

慢慢跑着就行了,基本signoff了。

以上就是芯片验证工程师一年内可能接触的内容。

如果觉得有用,期待您的转发分享和点赞~

七、ic验证有前景吗?

ic验证有前景,当然有前途,人才缺口很大。一个正规IC公司,做验证的人数可能要比做设计的要多一倍。会比较容易取得成功。很多人之所以选择进入IC设计行业,就是因为看中了它的前景,有“钱途”也有前途。

在学校时就对IC有着浓烈的兴趣,毕业后也如愿做了IC验证工作,挺不错的

八、ic前端验证有哪些?

IC前端验证是指在芯片设计的前期阶段,通过模拟、仿真、验证等手段对芯片设计进行检验,以确保芯片设计的正确性和可行性。常见的IC前端验证方法包括:

1. 逻辑仿真:通过对设计的逻辑电路进行仿真,检查电路的正确性和性能是否符合要求。

2. 时序仿真:对芯片时序进行仿真,检查芯片的时序关系是否正确。

3. 功耗仿真:对芯片的功耗进行仿真,检查芯片的功耗是否符合要求。

4. 物理仿真:对芯片的物理特性进行仿真,如布局、布线等,检查芯片是否满足制造工艺的要求。

5. 静态验证:通过对芯片设计进行静态分析,检查电路的正确性和安全性。

6. 动态验证:通过对芯片设计进行动态分析,检查芯片的性能和可靠性。

优点:

1. 位置传递参数简单,易于使用。

2. 位置传递参数更容易阅读和理解。

3. 名称传递参数可以避免参数顺序错误的问题。

缺点:

1. 名称传递参数更加繁琐,需要在参数前面加上参数名。

2. 名称传递参数可能会导致代码更加复杂。

3. 名称传递参数可能会导致一些错误,如拼写错误或参数名错误。

九、为什么都不愿意做ic验证?

不愿意估计缘于不理解。验证贯穿于芯片设计整个流程,是确保芯片功能性和正确性的关键环节

从芯片最初的架构设计到最后的流片,验证工作贯穿了整个设计流程,整个芯片设计70%左右的工作量已经被验证所占据。

庞大的芯片设计规模和指数增长的芯片结构复杂度,无所不在的连接,平台的安全性,在先进工艺的环境下,一颗能完美运行的芯片更需要多层次的反复验证。

从前往后,通常的芯片验证包括了IP核/模块级验证(Block-LevelVerification)、系统级验证(System-Level Verification)、静态时序分析和时序验证(Static timing analysis & Timing Verification)、版图验证(Physical verification)等多个步骤。

据统计,28nm的IC设计平均费用为5,130万美元,使用FinFET技术的7nm工艺,则需要2亿9,780万美元,两者差距为6倍。

高昂的设计费用让芯片企业都希望能一次就投片成功,但实际上, 2018 年 ASIC 芯片的一次投片成功率只有 26%。

先进的工艺节点引发了新的问题,如果芯片的验证不能跟上,就会造成反复投片问题,让芯片设计者可能“血本无归”。验证的准确性已经决定着芯片的“生死”。

十、dba算不算程序员?

dba从属于程序员,dba也是需要编程的,比如说plsql编程,写存储过程,函数,触发器等等,不仅仅只是会用16条简单到不行的sql语句,建建表。dba是非常重要的岗位,管理着企业的几乎所有数据,风险大,门槛高,招聘时经常要求要有工作经验,工资相对比较高,也无可厚非。