数字IC设计工程师要具备哪些技能

数字IC设计工程师要具备哪些技能

本文同步发表于:http://exasic.com/article/index.php?md=talk-01

本篇简单罗列了作为数字IC设计工程师的必备知识和学习建议,希望对本科高年级和研究生阶段有志从事数字IC设计的学生有所帮助。

数字集成电路基础

  • CMOS制造工艺
  • 器件(二极管、场效应管)
  • 导线
  • 门电路
    • 组合逻辑(反相器、与门、或门、异或)
    • 时序逻辑(Latch、DFF)
  • 存储器
  • FPGA
  • 可测性设计
  • 封装
  • 测试
  • 数字电路和与模拟电路的本质区别

学习“数字集成电路基础”是一切的开始,可以说是进入数字集成电路门槛的第一步。CMOS制造工艺是我们了解芯片的第一节课,从生产过程(宏观)学习芯片是怎么来的,这一步,可以激发学习的兴趣,产生学习的动力。

接下来,从微观角度来学习半导体器件物理,了解二极管的工作原理。进而学习场效应管的工作原理,这将是我们搭电路的积木。

导线是什么?这是一个有趣的话题,电阻、电容、电感的相互作用,产生延时和干扰,也是数字电路要解决的重要问题。

门电路是半定制数字集成电路的积木(Stardard Cell),所有的逻辑都将通过它们的实现。

存储器及其控制器,本质上属于数模混合电路。但由于计算机等复杂系统中存储器的日新月异,存储器的控制器由逻辑层(数字)和物理层(模拟)一起实现。

FPGA是可编程门阵列,就是提前生产好的ASIC芯片,可以改配置文件,来实现不同的功能。常常用于芯片Tapeout前的功能验证,或者用于基于FPGA的系统产品(非ASIC实现方案,快速推向市场)。

可测试性设计(即Design For Test),通常用来检测和调试生产过程中的良率问题。封装和测试是芯片交给客户的最后一步。似乎这些与狭义的数字电路设计不相关,但这恰恰公司降低成本的秘诀。

最后,还需要了解数字电路与模拟电路的本质区别,这将会帮助我们融汇贯通所学的知识。

设计基础

  • 数字IC设计流程
  • 组合逻辑(布尔代数、卡诺图化简、竞争与冒险)
  • 时序逻辑(FSM)
  • 可综合设计
  • 功能仿真
  • 时序分析

了解了数字集成电路基础后,我们再进入到具体的设计阶段。

首先,我们很有必要了解数字IC的设计流程,包括前端和后端。这会给我们一个概念,我们设计的电路是如何变成芯片(GDS)的。在变为芯片(GDS)的过程中,我们的主要工作处于流程中的哪个位置。输入是什么,产出是什么。

组合逻辑和时序逻辑是数字电路的两大类型,掌握基本的设计方法不可少。

我们设计的电路(写的代码)是如何变成门电路的,这是逻辑综合要覆盖的内容。其中,可综合设计或者叫针对综合再优化设计,是做好做优电路的重要部分。

功能仿真也是设计的一个关键步骤,通过功能仿真发现bug。目前功能仿真形成了一整套的方法学,叫作验证方法学。对于设计人员,也需要掌握基本的验证方法。

时序分析是评判由于电路的延时能否正常工作的重要方法。这也是设计中一个重要步骤,离开的时序谈逻辑,只是空谈。常常为了提升芯片性能,需要从前端架构上进行改进。

设计实例

基础
  • 运算器(加法、减法)
  • 编码器、译码器
  • 串并转换
  • 序列检测
进阶
  • CPU核设计(8086、ARM)
  • 总线(Intel、AMBA)
  • 外围功能IP(SPI、IIC)
  • 存储器接口(ROM、RAM、FLASH)
  • 通信、图像、视频等领域的功能模块设计

掌握了数字集成电路基础和基本设计方法后,实战是提升能力的关键。实战就是写代码。这里列举了一些基础和进阶例子。根据自己的兴趣和主研方向,多写,多尝试。这非常重要。

编程语言与EDA

  • 设计的步骤(工具)和分工
  • verilog可综合子集
  • verilog代码风格

最后,我们再来看看编程语言,设计常用的编程语言不外乎Verilog和VHDL。我们在这里强调一点,编程语言不等同于数字电路设计,编程语言仅仅是快捷设计的工具。学数字集成电路设计远远不止学Verilog。这是很多跨行做数字电路设计的误解。

做数字设计的第一步是什么?是理解需求,写SPEC(设计规范文档)。第二步是什么?是分解功能,画框图。第三步是什么?是定义各模块的接口和交互方式。第四步是什么?是定义模块内部的工作方式,状态机,时序图。最后才是写代码。

其实,“最后写代码”还不准确。因为容易造成写代码是最后一步的错觉。写完代码后,还需要模块级仿真,还需要考虑综合是否会面积太大,时序会不会太紧。

这就结束了吗?其实还没有,电路的功耗考虑了吗?是的,低功能设计能力常常成为区分一般和优势设计人员的标准之一。

Verilog编程语言包括了可综合部分和验证部分。对于初学者要时刻记在心里。好的代码风格和规范可以减少决大部分的bug。需要从一开始就养成好的编码习惯。

EDA是工具,是辅助设计、提升效率的帮手。对于我们学生朋友应该多用、逐渐熟练起来。但也不能依赖工具。不是有句话吗,尽信书不如无书。一样的道理,EDA工具也不是多智能的,需要人来主导。

你可能感兴趣的:(求职就业,求职就业,IC,数字IC设计)