芯片设计这个行当 ,从大的方面讲,主要分模拟和数字两大块, 而每大块又分前端和后端, 我想大部分同学对这个肯定是非常清楚的, 下面就数字电路聊聊芯片设计的一些事情,就是芯片设计有哪些活做, 这并不是全面完整的系统介绍,只是个人的了解和总结, 希望抛砖引玉,也许不全面, 不正确, 欢迎同学们指正和补充 说到数字芯片,不能不说FPGA, 这种是可编程的数字电路, 用法原理也不说了, 数字电路设计的目标,就是把这些功能,做成我们自己专用的ASIC/SOC, 这样无论面积, 成本或者安全性等等都能有保证。从流程上讲, 数字芯片设计的大致步骤就是系统与功能定义,RTL实现,验证, 综合及可测试性设计(synthesize , DFT ), ATPG仿真, 时序分析,到自动布局布线(APR). 直至交付fab的GDS网表. 这个流程是可以反复迭代的, 当对于不同类型芯片, 如纯数ASIC或混合电路(mix-signal)及系统级芯片(SOC), 每一步的方法和具体实施流程上可能又有所差异.下面就这些基本流程分步谈一些主要问题。

系统设计主要设计到功能定义及架构设计, 总线架构的配置,模块设计,数据流的分配, 时钟的设计等问题。总线包括模块之间,模块与MCU核之间,或者外部主机和芯片之间通信,或者测试需要等等一系列因素。 时钟涉及到数据流的规划, 通信接口或内部MCU的时钟约定,工艺条件,功耗等因素。模块需要明确接口和定义。在系统级设计上, 特别是很多数模混合电路中或对功耗有特别要求的电路中,还要有电压域的设计,不同模块之间,功能模块和接口之间可能都需要根据工艺条件,功耗要求设置不同的电压。无论是时钟,还是电压,都可以通过控制开关来实现功耗的要求,时钟实现比较简单,在大部分电路中都可以实现这种时钟控制,电压控制一般是实现在集成有电源管理芯片的较大规模芯片上。但未来趋势是即使没有电源管理芯片,电压的gating也需要纳入考虑范围。

在SOC系统设计上,一个重要的环节是MCU 内核的选型,现在常用的内核一般是ARM, 较老的ARM7, Arm9等系列,较新的是三大系列cortex A , R, M, 具体的用途不做详细诉述,选定好后核需要根据需要进行设置,一般做硬件的人不需要对它的指令集了解太多,但是需要了解它的总线接口,数据总线,指令总线,以及存储系统的设计,一般需要安排ROM, RAM分别作为指令和数据存储器,由于ROM是不可更改的,一般也需要加入flash作为补丁程序写入地。也可能需要外部存储器或者DMA控制器来增加外部存储空间。地址的分配是按照功能需要来进行的,现在有很多工具如synopsys的DesignKits可以产生外部总线代码及进行地址分配。

第一步完成系统和功能定义后, 就要实施的就是RTL实现, RTL是专门描述硬件电路的工具语言, 有verilog和VHDL, RTL的特点就是硬件上的同时触发性,不同于软件的按顺序执行, 电路有时序逻辑和组合逻辑组成, 时序逻辑在物理构成上就是一些寄存器,这些寄存器受时钟控制, 寄存器代表了电路中数据或控制信号, 这些信号受时钟的驱动流动. 组合逻辑是不受时钟控制的电路块, 组合逻辑顾名思义,通过一些信号的组合直接生成一些逻辑结果。

RTL设计中,一大问题是异步设计问题,异步数据的处理根据不同情况有很多方式, 最简单的,如果对异步的电平信号, 可以直接在新的时钟域中加2级寄存器来隔离,避免亚稳态的发生. 对于总线的处理, 或者脉冲的处理, 则需要同步模块, 同步模快一般是指需要握手信号,就是前一级时钟告诉采样的时钟,信号ok了, 采样的第二个时钟再去采,采好后再告诉前一级时钟,我搞定了,那样前一级时钟就可以换数据或其他处理. 有一种情况就是前一级时钟太快, 造成第二级来不及,则需要加入FIFO作为隔离, 就是让那些数据先放好, 我在慢慢来取. 这个FIFO的设计涉及到读写地址的判断,写满或读空都需要做相应处理, 读写地址之间的判断只能在其中一个时钟域中进行, 这本身又涉及异步信号的处理问题,这一般用格雷玛解决, 或者有些地方直接可以判断地址高位, 这些方法的目的就是不能让地址在比较的时候不稳定.

RTL设计中时钟本身的设计问题也要注意, 我们在一个芯片中, 尽量把时钟产生电路放在一块,主要是从综合, DFT的角度去考虑的, 让这些时钟统一管理和约束。 时钟的分频,切换也要专门处理,否则容易产生毛刺等事情。RTL设计中还有很多需要注意的问题,比如可综合性, 还有要考虑到电路的面积, 以及响应速度等等, 这些问题是RTL coding的基础问题

代码写完后,需要进行的是验证工作, 下面谈谈这方面的事情。

========================================================================================================================

上次写完后,有人支持,也有个朋友说写这些东西意义不大吧,如果就某些细节方面感兴趣的朋友可以探讨和切磋,互相学习,也可以私下交流这只是我的角度去写这些东西,希望大家指正和补充。下面接前天的,继续验证部分。

芯片验证一般有这几个层面, 一个是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, 里面引入了数字和模拟多个引擎,如数字的nc_verilog 模拟的Eldo等等,数字部分导入RTL代码,模拟部分直接导入GDS电路, 当然为了加快速度,模拟部分在使用中一般仍然导入数字模型。

SOC验证中, 植入了烧入ROM的软件, 在仿真验证系统中,使用的一般是存储器的模型加上文本格式的代码文件, 一般实现是直接通过系统读入指令把文件读入到存储器模型中。(有些仿真工具可以直接通过选项导入,类似SDF文件,如工具nscim),仿真器可以直接写出指令执行的log以用于debug,不过现在有更先进的方式用于复杂SOC验证, 如Codelink工具,能够在原仿真器的基础上,建立起MCU和HDL电路已经软件的关系,通过展示波形和固件(firmware)源码的链接进行更方便的debug。 下面需要说的实现部分,就是综合,DFT, STA ,ATPG等,准备合在一起写,感兴趣的朋友也可以接着我的写,我暂时不做这方面的更新,希望朋友们玩个接力.

=========================================================================================================================

帖子的话题受到了大家关注, 也被加精 , 受到鼓舞, 一直想继续写完,但时间有限,更主要惰性使然, 一直没有接着写完, 今日得宽裕,继续谈谈数字 IC设计接下来的一些工作 .不过在继续之前, 我要说的是, 其实我之前写的也不够完善, 只是想到了就随之敲下来了, 不够完整 ,特别是现在的芯片设计, 不同的产品, 要求不同, 所设计的步骤也不完全一致 。比如, 对于很多设计数字电路可能实现建立软件模型,  来评估我们的频率,资源,或者数字信号处理中的信噪比等一些指标, 这些都是在规格定义之后, 电路设计之前需要做的一些工作。
        在芯片完成了设计与验证之后, 我们要做的工作就是把它装化成GDS网表,就是所谓的implementation(电路实现), 这其中的流程包括综合,DFT,  formality, STA, ATPG pattern generation 和仿真(和功能验证一样  也包括前后仿), 再进入后端的PR/LVS/DRC 的流程 ,这个属于物理设计, 当然这个流程是笼统的 ,这里主要讲几个后端物理设计之前的前端实现的几个步骤 。
        综合的原理比较直观,从RTL到GTECH库到厂家工艺库的编译翻译映射与替代, 综合需要输入的就是时钟约束即sdc文件,sdc是设计与产品的使用要求决定的。
        DFT包括好几种类型, Scan chain是最常见的一种,这个可以在综合步骤中一起做,也可以 在综合之后进行,扫描链的多少和芯片本身的规模和芯片可提供的可测试芯片管脚有关, 尽量扫描链的长度越短越好,以缩短测试时间;由于有些片子的管脚有限,需要压缩扫描链;甚至有些芯片由于可复用的管脚太少,进入测试模式都需要在功能模式下由主机的设定, 设定后再退出功能模式。扫描链的插入后可以由工具产生ATPG的 pattern, DFT成功与否要看测试覆盖率,一般在 95%以上说明就差不多ok了, 如果覆盖率偏低 ,需要追究原因,一般看有没有漏掉的DFF,以及为什么会溜掉,一般主要原因不是这个, 是一些不可控的节点造成了覆盖率低, 需要在电路中做一些处理来使之能有相关 ATPG产生,如加入测试模式生效的 ,可选的DFF或者电平 /地 。
        有些电路包括了ROM/RAM,需要给ROM/RAM本身加入内建自测电路(BIST), 一般如果带有MCU的 SOC,其实也可以通过软件来完成RAM测试,不一定加入BIST, 但是植入CPU软件的 ROM肯定必须有BIST电路来完成自测,自测电路的原理很简单, 就是判断写入和读出的数据是否吻合, 否则会 BIST电路会给出错误的标识。
        Boundary scan chain是另一种DFT, 很容易理解的是,我们可以控制芯片各个pad的输入输出值, 这样它的作用可以应用于板级调试。
        Formaliry或者说equence check, 主要检查综合,DFT以及后端PR之后和各自步骤之前的RTL/网表的等效性。
        STA是静态时序分析, 主要用在芯片完成后端流程后,也检查是否满足时序要求, 特别是插入了时钟树之后,这是需要后端工具(ICC/Encounter等) 反标出的sdf文件来进行分析 。细节不表。STA完成后才可以进行功能后仿和ATPG pattern的后仿 。

参考文献:

[1] 原文地址:http://bbs.eetop.cn/thread-340177-1-1.html

转载于:https://www.cnblogs.com/dpc525/p/5146827.html

(转)说说芯片设计这点事相关推荐

  1. 想做数字芯片设计前端?那你得了解这些事

    数字前端设计也称逻辑设计,前端以设计架构为起点,以功能正确且满足目标时序的网表为终点,用逻辑电路实现预期的功能.主要包括:规则书制定.系统架构设计.部件详细设计.HDL编码.仿真验证.SDC编写.逻辑 ...

  2. 会议重点介绍芯片设计中的人工智能

    会议重点介绍芯片设计中的人工智能 Conference highlights AI in chip design, IoT 旧金山-谷歌正在试验机器学习(ML)来执行IC设计中的地点和路线,并取得了很 ...

  3. 人工智能将如何改变芯片设计

    来源:ScienceAI 编译:绿萝 摩尔定律的终结正在逼近.工程师和设计师只能将晶体管小型化并尽可能多地封装到芯片中.因此,他们正在转向其他芯片设计方法,将 AI 等技术融入到设计过程中. 例如,三 ...

  4. 传奇芯片设计大神Jim Keller又离职了,英特尔失了总设计师,网友喊话雷军:挖他!...

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 时隔才2年,一代芯片设计大师,Jim Keller,又恢复"自由身". 这次是从英特尔走人. 根据外媒彭博社消息,英特尔 ...

  5. [转]模拟芯片设计的四重境界

      从复旦攻读微电子专业模拟芯片设计方向研究生开始到现在五年工作经验,已经整整八年了,其间聆听过很多国内外专家的指点.最近,应朋友之邀,写一点心得体会和大家共享. 我记得本科刚毕业时,由于本人打算研究 ...

  6. 芯片设计“花招”已耍完?无指令集架构颠覆旧套路

    日前,英伟达在GTC大会上发布了最新一代GPU H100,采用台积电4nm工艺,集成了800亿个晶体管.3月初,苹果发布了M1 Ultra芯片,更是集成了高达1140亿个晶体管.显然,头部厂商都在推进 ...

  7. 痞子衡嵌入式:飞思卡尔Kinetis开发板OpenSDA调试器那些事(上)- 背景与架构

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis MCU开发板板载OpenSDA调试器(上篇). 众所周知,嵌入式软件开发几乎离不开调试器,因为写一个稍有代码规模 ...

  8. IC芯片设计项目管理002:标准化流程的应用

    IC芯片设计项目管理002:标准化流程的应用 1.IC设计领域的SOP SOP(standard of process)指的是一种标准化的流程,它能够有效提高工作效率,保证产品质量.SOP可以分为横向 ...

  9. 傻白入门芯片设计,一颗芯片的诞生(九)

    CPU生产和制造似乎很神秘,技术含量很高.许多对电脑知识略知一二的朋友大多会知道CPU里面最重要的东西就是晶体管了,提高CPU的速度,最重要的一点说白了提高主频并塞入更多的晶体管.由于CPU实在太小, ...

最新文章

  1. 编写程序,统计一个长度为2的字符串在另一个字符串中出现的次数
  2. 分享五个你应该了解的宣言
  3. Android ListView常用用法
  4. 空间金字塔池化_CVPR 2018 | 旷视科技人体姿态估计冠军论文——级联金字塔网络CPN...
  5. android .9 格式图片 背景设置 高度问题 空白问题
  6. Oracle启动和停止的方式详解
  7. 【小白学习C++ 教程】十三、C++命名空间namespace
  8. Java Collections Framework - Java集合框架List,Map,Set等全面介绍之概要篇
  9. 可缩放的思维导图_成就销售王者的23大流程,配思维导图,可直接学习收藏
  10. mysql too many connection解决方法
  11. 编译安装mysql 不动了_编译安装MySQL5.6失败的相关问题解决方案
  12. linux服务器优化
  13. linux grep命令使用详解
  14. Linux内核系统调用原理与实现
  15. acrobat缺少字体 adobe_PDF 字体
  16. PHP网站常见一些安全漏洞及防御方法
  17. uni-app框架介绍
  18. 字节全栈工程师亲自整理的40个前端练手项目
  19. diskgenius克隆硬盘无法启动_克隆硬盘
  20. Win11电脑速度慢、延迟高怎么办?

热门文章

  1. Ubuntu22.04.1 LTS系统上实现KVM虚拟机显卡直通(AMD/NVIDIA+板载显卡)
  2. IEEE论文投稿流程
  3. 计算机时钟是如何运行的?
  4. 逐梦旅程学习笔记 DirectX开发入门02:旋转的彩色立方体
  5. vgh电压高了有什么_220伏都能电死人,10000伏高压的电子围栏为什么是安全的?...
  6. Play-Utils:一个专门为 Play Framework 开发的实用工具包模块
  7. 定积分应用——求旋转体体积
  8. Android开发OMA(Open Mobile Api)
  9. 少儿编程重要吗?数字时代的中小学生是否需要拥有编程这项技能?
  10. 金蝶kis记账王新建套账的操作方法