ASIC设计-终极指南
ASIC设计-终极指南
ASIC Design – The Ultimate Guide
ASIC设计-终极指南
ASICs代表特定于应用的集成电路,指的是针对特定应用而设计的半导体解决方案,与其他解决方案(如现场可编程门阵列(fpga))不同,现场可编程门阵列(fpga)可多次编程以执行不同的功能。ASIC有时也被称为SoC(片上系统)。
ASIC的设计之旅是一条漫长而曲折的道路,它将你从一个概念带到一个工作的硅。虽然最终产品通常非常小(以平方毫米为单位),但整个过程非常有趣,充满了挑战和权衡,设计师需要绞尽脑汁才能做出最好的工程设计。这篇文章将试图阐明从ASIC设计规范到设计流水作业的ASIC设计流程中的不同步骤,并强调每个步骤所涉及的重要决策和活动。虽然每个步骤的复杂性可能取决于EDA供应商的选择、设计应用程序以及技术节点,但顺序基本上保持不变。图1显示了ASIC设计流程的流程图。

Figure 1: ASIC Design Flow
ASIC Specification
ASIC设计流程的第一步是在开始设计之前定义产品的规格。这一阶段通常包括与潜在客户进行市场调查,以确定需求,并与技术专家交谈以判断未来趋势。后者尤其重要,因为ASIC设计周期可能在6个月到2年之间。因此,重要的是要预见和预测未来1-2年内的趋势,如果一个人需要向广泛的消费者销售他们的产品。
这项市场调查转化为高水平的产品规格,如您打算用ASIC做什么的顶级功能,您想要实现的特定计算算法,使产品吸引客户的时钟频率,封装类型-球栅阵列(BGA)或CSP(芯片规模封装)等。,电源、有助于与外部世界连接的通信协议、您希望产品工作的温度范围。
制定一个全面和正确的规范通常为ASIC设计奠定了坚实的基础。技术规范需要随着时间的推移对技术要求进行细化,但以明确的方式涵盖这些信息是很重要的。
ASIC Architecture
在删减规范之后,现在是将整个ASIC或SOC的功能划分为多个功能块的时候了。架构师喜欢集思广益地讨论架构的许多可能选项,并在考虑性能影响、技术可行性以及成本和时间方面的资源分配时讨论它们的优缺点。一个好的架构专注于收集ASIC芯片的最佳性能,同时最小化硬件资源,这直接有助于将芯片的总体成本保持在分配的预算内。在此阶段,架构师定义不同功能块之间的关系,并为每个功能块分配时间预算。所有这些技术细节都包含在架构文档中。

Figure 2: Micro-architecture of Intel’s Haswell Processor.
一旦您对所需的所有功能块有了较高的了解,那么就应该谨慎地确定关键模块,并可能就是否需要重新使用以前项目中的这些IP、对现有IP进行必要的更改或从其他方获得它们。
硬件和软件块之间的划分也是ASIC设计阶段的一个关键部分。设计是用C++或C语言的高级编程语言来捕获的。
Logic Design and Verification
他的步骤是指ASIC设计流程的前端部分,包括用Verilog、VHDL或systemverilog等硬件描述语言对每个功能块的数据流进行编码。功能块之间的交互也被编码。逻辑设计通常包括:
组合逻辑Combinational Logic:
组合逻辑通常指布尔组合门,如OR、AND、NAND、NOR等。虽然这些门很简单,但它们可以组合起来执行复杂的数字运算。
序列元素Sequential Elements:
序列元素通过临时存储其输出,在执行不同功能的不同组合逻辑云之间的接口中起着关键作用。这些时序元件,如触发器和锁存器也被称为存储器元件,由时钟的同步或控制信号控制。触发器和锁存器都是双稳态元件,因为它们有两种稳定状态:0或1。
有限状态机(FSMs)Finite State Machines (FSMs):
它们是顺序逻辑的高级抽象,可以在硬件和软件中实现。有限状态机模拟数字机器对一组输入的响应,以产生确定的一组输出,是逻辑设计者的重要组成部分。
算术逻辑块Arithmetic Logic Blocks:
算术运算是计算逻辑的核心,通常是高性能CPU核心性能的瓶颈。算术运算包括加法、减法、乘法和除法。这些电路有很多种可能的实现方式,它们在性能、面积和功率之间进行权衡。逻辑设计者可以选择一个最适合他们的应用程序来优化一个或多个参数。
数据路径设计Data-path Design:
除了上述元素的编码组合外,硬件描述语言(hdl)可以像编程语言一样以抽象的方式对数据路径设计进行建模,这种方法可以被EDA工具正确地解释。这些可以是多路复用、解码、case语句等。
模拟设计Analog Design:
除了数字逻辑之外,ASIC还可以有许多模拟组件来帮助与现实世界接口,并且可以包括温度传感器、模数转换器(ADC)和数模转换器(DAC),最重要的是时钟产生单元锁相环(pll)。
Example of a behavioral HDL code for 2:1 Multiplexer:

与逻辑设计并行,验证团队需要制定验证计划或数字和模拟逻辑组件,并创建测试平台,以便能够测试所有可能的角落情况的设计,以确保正确的功能,需要与规范一致。编写RTL通常占整个设计周期的10-20%,而验证占80-90%的时间。
Physical Design
这是指后端设计周期。如果后端设计和前端设计只有一个区别,那就是延迟。前端设计虽然认识到了逻辑延迟和速度,但在RTL编码和验证的大部分工作中却忽略了这一点。而另一方面,物理设计从一开始就看到了真正的延迟。
物理设计流程进一步细分为:
Synthesis
合成读取RTL代码(.v或.sv文件)以及标准单元的物理库,其中可能包含-延迟信息(.lib文件)、单元内的物理尺寸和元组层信息(.lef文件)和其他约束文件,以将行为或数据流代码转换为实实在在的物理标准单元门。请注意,2:1多路复用器有许多可能的实现,而综合负责对性能、功率和面积进行合理的权衡,以得出考虑到这些限制的最佳实现。作为2:1多路复用器的示例,一种可能的实现如下:

Figure 3: Gate level implementation of 2:1 Multiplexer
平面规划
布局规划步骤正式化并细化了在架构(architecture)规划步骤中首次出现的平面图。在这一步中,整个模具区域被划分为物理分区,并在成型时考虑到区域要求、顶层数据和控制总线的流动、未来增长的可能性。管脚和端口被指定一个粗略的位置,可以根据位置和路由结果进一步细化。

Figure 4: Floorplanning the blocks relative to each other.
对于物理设计工程师来说,并行处理一个以上的平面图是很常见的,并试图评估哪一个最适合总体设计的QoR(结果质量)。这通常是物理设计周期中最关键的一步,需要多次迭代。考虑到它对路由routing congestion, cell density, timing QoR and DRCs拥塞、单元密度、时间QoR和DRC的长期影响,在这里花费的任何额外时间都是值得的。
一个强大的功率交付-解决静态和动态红外衰弱也是一个关键的功能规划步骤。
安置
在放置期间,所有标准单元都放置在站点行的合法位置。这一步的目标是最小化导线长度,同时确保最佳布局,这将有助于更快的定时收敛。

Figure 5: Standard Cells arranged on site rows.
在此步骤中没有铺设真正的路线。Placement通过一个称为全局路由的步骤来估计路由,在这个步骤中,它估计总的线路长度和全局路由拥塞。许多现代布局引擎能够考虑SAIF或VCD文件的切换活动,并尝试优化布局以获得更低的动态功率。

Figure 6: Placed design.
Clock Tree Synthesis
到目前为止,时钟网络是理想的。在时钟树合成过程中,时钟被传播并且时钟树被使用时钟缓冲器合成。这一步的主要目标是在最小化时钟偏差的同时实现最佳的时钟延迟。设计最佳时钟树的算法有很多种——H树、Steiner树等。除此之外,还可以选择时钟树网格、多源时钟树综合或传统的单点时钟树综合,这些方法在动态功率、路由资源和OCV调整等方面进行了权衡。

Figure 7: Typical H tree clock distribution.
时钟是本设计中开关频率最高的信号,时钟缓冲树占专用集成电路动态功耗的75%以上。架构可以支持时钟门控关闭芯片的空闲部分,以节省动态功耗。
随着所有实例的放置和时钟的路由,现在是时候路由信号网络了。现代工艺支持10-12金属层堆叠,M0-M1为标准单元布线预留。用于详细路由的算法通常是一个美化的迷宫路由器,并添加了约束,以确保更快的运行时间。元组资源被划分为元组路线的合法位置。详细布线的目的是确保最少的绕道,因为这些可能会影响时间,并确保最小的DRC(设计规则检查)违规,如开路、短路等。此步骤执行多个搜索和修复循环(10-20),以保持总体DRC计数较低。

Figure 8: Routed Design.
Physical and Timing Verification
逻辑验证确保功能正确,物理验证确保布局正确。物理验证检查增加了,包括-DRC(设计规则检查)、LVS(布局与原理图)、电迁移、静电放电违规(ESD)、天线违规、模式匹配(PM)违规、短路、开路,漂浮网等(includes- DRC (Design Rule Checks), LVS (Layout versus Schematic), Electromigration, Electro-static discharge violations (ESD), Antenna violations, Pattern Match (PM) violations, Shorts, Opens, Floating nets etc.)。重要的是要跟踪这些违反的地方和路线,以避免任何意外前几天关闭。
时序验证通过确保设计中所有时序路径都满足设置和保持,验证芯片以指定频率运行

Figure 9: FRICO ASIC, 350 nm technology
ASIC设计是一个复杂的工程问题,从概念到硅都要经历很多步骤。虽然有些步骤更像是艺术而不是工程(如平面布置图),但其他一些步骤需要合理的工程权衡(如物理设计和时间安排)。随着对更好性能和缩短上市时间的需求增加,ASIC设计流程在未来十年将继续变得更加复杂。然而,核心动机和设计理念将保持不变。

。
ASIC设计-终极指南的更多相关文章
- 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》
本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...
- [产品相关] A/B测试终极指南(翻译)
转载地址: http://blog.sina.com.cn/s/blog_9149268d0100zrx7.html 还记得以前导师说看了英文的文章就把它翻译一下吧,这样会对文章更好地理解,也会有更深 ...
- 软件测试进阶(一)A/B测试终极指南
A/B测试终极指南 A/B测试不是一个时髦名词.现在很多有经验的营销和设计工作者用它来获得访客行为信息,来提高转换率.然而,A/B测试与SEO不同的是,人们都不太知道如何进行网站分析和可用性分析.他们 ...
- 【转】使用JMeter进行负载测试——终极指南
使用JMeter进行负载测试——终极指南 这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 ...
- JMETER断言:终极指南
你想要: 检查服务器响应是否包含特定字符串, 或验证服务器返回了HTTP 200 OK, 或者检查json字段的值(使用类似JsonPath$.store..price). 断言是要走的路. 问题是: ...
- const extern static 终极指南
const extern static 终极指南 不管是从事哪种语言的开发工作,const extern static 这三个关键字的用法和原理都是我们必须明白的.本文将对此做出非常详细的讲解. co ...
- EDA技术与ASIC设计和FPGA开发有什么关系?FPGA在ASIC设计中有什么用途?
利用EDA技术进行电子系统设计的最后目标是完成专用集成电路ASIC的设计和实现:FPGA和CPLD是实现这一途径的主流器件.FPGA和CPLD通常也被称为可编程专用IC,或可编程ASIC.FPGA和C ...
- atitit.api设计 方法 指南 手册 v2 q929.docx
atitit.api设计 方法 指南 手册 v2 q929.docx atitit.api设计原则与方法 1. 归一化(锤子钉子理论)1 1.1. 链式方法2 1.2. 规则5:建立返回值类型2 1. ...
- 15个Linux Wget下载实例终极指南
15个Linux Wget下载实例终极指南 Linux wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到 ...
随机推荐
- Python字体颜色设置
Python字体颜色设置 平时学习工作中,我们经常会接触到一些大佬写的Python工具,运行起来总会显示出五颜六色的字体,比如红色代表Error , 黄色代表Warning , 绿色代表Success ...
- XML / HTML / XHTML 的区别
目录 HTML XML XHTML HTML HTML(HyperText Markup Language):超文本标记语言,是一种用于创建网页的标准标记语言,是用来格式化并显示数据的 用HTML语法 ...
- Java中的反射机制Reflection
目录 什么是反射? 获取.class字节码文件对象 获取该.class字节码文件对象的详细信息 通过反射机制执行函数 反射链 反射机制是java的一个非常重要的机制,一些著名的应用框架都使用了此机制, ...
- 《THE LEAN STARTUP》 《精益创业》
书名:<THE LEAN STARTUP> <精益创业> 作者: [美] 埃里克·莱斯 IMVU:(3D人物场景聊天)https://secure.imvu.com 作者是这个 ...
- java+selenium使用JS、键盘滑动滚动条
本篇文章介绍如何使用JS和键盘对象对页面进行滑动滚动条-------------主要针对java做自动化测试的同学 一:使用键盘对象操作滚动条 //导包 import org.openqa.selen ...
- Windows进程间通讯(IPC)----共享内存
Windows中同一个EXE文件多次加载过程 Windows中EXE文件加载是基于内存映射文件的. 当EXE文件第一次被加载. 首先系统会先创建一个进程内核对象,并创建一个新的进程地址空间. 系统调用 ...
- linux下将一个大的文件拆分成若干小文件
命令:split,例子: 以行数拆分 -l参数: split –l 50 原始文件 拆分后文件名前缀 说明:以50行对文件进行拆分,最后一个文件的行数没有50行以实际行数进行分配,比如有一个名为 wl ...
- 2021年主流CRM系统盘点
面对市面上五花八门的CRM系统,相信您在选择的时候肯定是一头雾水.哪个CRM系统功能最强大?哪个CRM系统性价比最高?哪个CRM系统最适合企业使用?本篇文章小编将选出几家有代表性的CRM系统,并进行对 ...
- 最全的go语言的时间格式
该文可以快速在Go语言中获得时间的计算. 在Go中获取时间 如何获取当前时间 now := time.Now() fmt.Printf("current time is :%s", ...
- [bug] Python Virtualenv 安装失败:ERROR: Cannot uninstall 'filelock'.
参考 https://my.oschina.net/gain/blog/4333100