IC系统是什么?

对算法工程师来说,IC系统是完成特定功能的硬件。
对架构设计师来说,IC系统包括控制,运算,存储部分。
电路设计工程师来说,IC系统是加法器,乘法器,与非门,运算放大器,开关电容等的搭配。
对版图工程师来说,它是多边形组成的组合。

一个常见的IC系统包括:

  • 数字部分(可能包括微处理器,控制电路,数据通路等)
  • 模拟部分(可能包括PLL,A/D,RF等)
  • 连线
  • I/O PAD
  • 存储器

数字部分
绝大多数数字系统都采用同步设计方法,即采用时钟來统一协调系统各部分的运行。它由组合逻辑和时序单元(寄存器和锁存器)组成,数据在时序单元-组合逻辑-时序单元这种结构间一级级的传递下去。通常可以将数字部分大致分为数据通路部分与控制部分。数据通路部分是指乘法器,加法器,有限响应冲击滤波器(FIR)等规则的运算单元,控制部分是指控制管理数据流通的逻辑。

模拟部分
  • 模数转换ADC
  • 数模转换DAC
  • 可编程增益放大器PGA
  • 锁相环PLL

I/O部分
I/O是IC系统与外部环境的接口。foundry提供的综合库中,通常包括三类PAD单元:输入PAD,输出PAD,双向PAD。在设计中,可以将这些PAD看作是标准单元,直接例化就可以了。

存储器
存储器对整个芯片设计至关重要:
  • 高速IC设计中,存储器的带宽已经成为性能瓶颈
  • 存储器占整个芯片70%以上的面积
  • 存储器消耗了芯片的大部分功耗
我们在实际设计中一般是无需自己设计存储器,只需根据需要(深度,速度,面积,功耗等)使用memory compiler直接生成,将别人提供的存储器单元拼接起来即可。在使用存储器的时候,需要注意接口时序是否满足要求。(例如我在2D/GPU的设计当中,都是按照要求直接用memory compier來生成各种sram)

连线
连线包括芯片的信号连线,电源线和时钟线。
• 在深亚微米设计中,不能将连线简单地看作是理想的连接,金属连线具有电容、电阻和电感效应。这些寄生效应会影响信号的完整性,而信号完整性和时序收敛问题是紧密联系的。通常,串扰会使时序更为恶化,更难以收敛。
连线的电容寄生效应会引起信号线的耦合,从而引起串扰(cross talk),串扰会影响时序,引起setup/hold violation,也可能会影响功能,导致芯片无法正常工作。
连线的电阻寄生效应会导致显著的电压降,从而影响信号电平。在一个IC系统中,是通过电源网络來供电的,一个数字系统要能正常工作,必须要为它的逻辑单元提供稳定的直流电压,并且这个电压的起伏要尽可能小。随着芯片规模的增加,芯片内部的电流越来越大,要满足电压稳定也越来越困难。加宽导线可以降低电阻,从而减小压降,并且会增加允许通过的峰值电流,但也会占用过多的面积。
如果连线过长或者电路速度极高,则导致电线的电感效应变的显著。电感效应很难处理,不过幸好目前大多数的设计中电感效应都很小,可以忽略不计。
• 连线还会导致设计时序难以收敛。
Logic synthesis的时候无法知道具体的连线信息,经常采用wireload model來估计连线延迟。这种模型并不准确,所以会导致P&R之后时序难以收敛,从而进化出physical synthesis的技术。

至于什么是physical synthesis,以及它与logic synthesis的区别,我会在以后的博文中加以讲解。

参考资料

《IC设计基础》

IC系统组成概论的更多相关文章

  1. 图解Android - Android GUI 系统 (1) - 概论

    Android的GUI系统是Android最重要也最复杂的系统之一.它包括以下部分: 窗口和图形系统 - Window and View Manager System. 显示合成系统 - Surfac ...

  2. 图解Android - System Service 概论 和 Android GUI 系统

    通过 图解Android - Binder 和 Service 一文中,我们已经分析了Binder 和 Service的工作原理.接下来,我们来简要分析Android 系统里面都有哪些重要的Servi ...

  3. Android GUI系统

    图解Android - Android GUI 系统 (1) - 概论 图解Android - Android GUI 系统 (2) - 窗口管理系统 图解Android - Android GUI ...

  4. 图解Android - Android GUI 系统 (2) - 窗口管理 (View, Canvas, Window Manager)

    Android 的窗口管理系统 (View, Canvas, WindowManager) 在图解Android - Zygote 和 System Server 启动分析一 文里,我们已经知道And ...

  5. NodeJS爬虫系统初探

    NodeJS爬虫系统 NodeJS爬虫系统 0. 概论 爬虫是一种自动获取网页内容的程序.是搜索引擎的重要组成部分,因此搜索引擎优化很大程度上是针对爬虫而做出的优化. robots.txt是一个文本文 ...

  6. Linux系统编程【转】

    转自:https://blog.csdn.net/majiakun1/article/details/8558308 一.Linux系统编程概论 1.1 系统编程基石 syscall: libc:标准 ...

  7. 入行数字IC验证后会做些什么?

    半年前,公众号写了第一篇推文<入行数字IC验证的一些建议>,介绍了IC小白可以如何一步一步地摸索入门数字IC验证,同时也在知乎发了这篇入门贴,并且衍生出很多额外基础的内容,收获了不少的浏览 ...

  8. 【凯子哥带你学Framework】Activity界面显示全解析

    前几天凯子哥写的Framework层的解析文章<Activity启动过程全解析>,反响还不错,这说明“写让大家都能看懂的Framework解析文章”的思想是基本正确的. 我个人觉得,深入分 ...

  9. 2012高校GIS论坛

    江苏省会议中心 南京·钟山宾馆(2012年4月21-22日) 以"突破与提升"为主题的"2012高校GIS论坛"将于4月在南京举行,由南京大学和工程中心共同承办 ...

随机推荐

  1. Android--Apache HttpClient

    前言 上一篇文章介绍了使用HttpURLConnection来完成对于HTTP协议的支持.现在介绍一个新的方式来访问Web站点,那就是HttpClient. HttpClient是Apache开源组织 ...

  2. C++语言出现的bug

    输出语句不管是C语言的printf();还是cout << "" << endl; 在循环语句中会出现一个bug: 下面是不正常的两种情况: 下面是正常的: ...

  3. 奇怪的cab_xxxx_x文件

    最近一段时间发现C盘老是提示空间紧张(显示为红色),之前清理了一次系统盘的\Windows\Temp文件夹,发现了很多文件名类似cab_xxxx_x的cab文件,大概占用了五六个G的空间,当时没太在意 ...

  4. bsearch

    在java中为了避免 low+high溢出,可以用无符号右移:正数高位补0,负数高位补1 int mid = (low + high) >>> 1; 如果是在c++中,那么需要先转换 ...

  5. solrcloud 配置实践

    1.环境 3台虚拟机:192.168.26.129.192.168.26.131.192.168.26.132,使用命令sudo iptables -F 关闭防火墙 Solr: solr-6.1.0 ...

  6. 机器学习六--K-means聚类算法

    机器学习六--K-means聚类算法 想想常见的分类算法有决策树.Logistic回归.SVM.贝叶斯等.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别 ...

  7. html标题_段落_换行_水平线_特殊字符

    标题 <h1>一级标题</h1> <h2 align="对齐方式">二级标题</h2> 对齐方式有left,center,right ...

  8. 给Apache增加SSI支持(shtml的奥秘)

    什么是SSI? SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思.从技术角度上说,SSI就是在HTML文件中,可以通过注释行调用的命令或指针.SSI具有强大 ...

  9. 常用awk命令(转)

    awk 用法:awk ' pattern {action} ' 变量名 含义 ARGC 命令行变元个数 ARGV 命令行变元数组 FILENAME 当前输入文件名 FNR 当前文件中的记录号 FS 输 ...

  10. db2 常用命令(二)

    1. 打开命令行窗口 #db2cmd 2. 打开控制中心 # db2cmd db2cc 3. 打开命令编辑器 db2cmd db2ce   ======脚本文件操作命令=======  -- 执行脚本 ...