深圳市航顺芯片技术研发有限公司
直播中

刘丽

7年用户 1273经验值
私信 关注
[问答]

数字IC设计工程师的必备知识

数字电路和与模拟电路的本质区别是什么?
数字IC设计流程有哪些?

回帖(1)

许伟星

2021-10-26 15:34:13
  本篇简单罗列了作为数字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工具也不是多智能的,需要人来主导。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分