什么是芯片正向设计?芯片设计的具体流程解析

网络上有很多人讨论着芯片的反向设计,那么与之相对应的芯片的正向设计是什么呢?它设计的具体流程又包括哪些?本文只要介绍的就是芯片的正向设计及其流程。

在工程技术人员的脑海中,产品的设计过程都是从无到有,即在工程技术员的脑海中构思产品的外形,技术参数,性能等,然后通过绘制图建立产品的三维数字化模型,最终将这个模型转入到制造流程中,这就是芯片的正向设计。

一、总体规划

二、架构/算法

现在数字电路在芯片中占有极大的比重,数字逻辑也变得越来越复杂,所以必须从架构和算法上进行考虑。个人所略知的关于芯片架构的是,架构可以分为三种大的方向:

1,数据流;

2,控制流,

3,总线流。数据流:数据从输入到输出是一条直线,并没有折回的数据,这是纯数据处理的一种架构,这种芯片功能应该是比较单一。

2,控制流,这是基于状态机或者CPU形式的一种架构设计。简单点的芯片就采用状态机就够了,复杂的就必须采用CPU作为控制内核了,比如单片机就是以CPU为控制内核,外加RAM,ROM所形成的一类控制类芯片。

3,总线流,这是基于总线的芯片设计架构,最熟悉的就是SOC类芯片,总线上连接着一个或多个CPU,RAM,ROM,I2C,UART等等之类的各种组件。由这些组件的不同排列组合,形成满足各种不同需求的芯片,例如不同的ARM类芯片。

算法,我所略知的是通信类的,例如,FIR,FFT,小波变换,三角函数变换等等,当然还有视频音频类的算法,对与这方面的内容就没有接触过了。总的来说,这类算法都是以数据处理为主要目的的,所以这些算法都要求有较强的数学功底。做算法开发,主要工具为MATLAB,都是先在MATLAB上做原型开发验证,再转化为RTL级的代码。

结合架构和算法,将芯片的总体结构搭建出来,为后续的工作做好了准备。

三、RTL代码

当算法工程师把芯片架构设计好,各种算法在MATLAB上通过了验证,以及其他必要条件的考量之后,便将工作交接给ASIC工程师去做RTL代码的翻译工作,就是将MATLAB上的算法翻译成RTL。这一步单纯从翻译的角度只需要一个文本编辑器就可以了。然而,还有后续的仿真验证工作,这部分的内容并不轻松。有时候根据公司的不同,根据项目的工作量大小,算法工程师与ASIC工程师在工作内容上是有交叉的,他们也承担将MATLAB转换为RTL的工作。RTL设计的时候也会考虑DFT(DesignForTest可测性设计)的问题,会在RTL代码中加入测试链,这个我就不太熟了。

四、仿真验证

这一步的工作比较关键,可以说是设计部分的第一个分水岭。仿真验证,视不同的公司,不同的项目,复杂度有非常大的不同。简单的,只要写一个较为完善的testbench验证完RTL代码的功能就行了;复杂的,将会在RTL验证环境下进行详细的验证,甚至可能用得到各种验证方法学UVM,VMM,OVM等等,这种复杂验证所用的语言一般采用SystemVerilog。验证软件可以采用cadence公司的NC_VERILOG,或者synopsys公司的VCS。此外,某些芯片还会采用FPGA,进行硬件在线仿真。这样能够获取关于芯片的更为详细的信息。但不管如何,无论是个人还是公司,都应该有对于仿真验证工作的一套完整和完善的流程方案。

五、工艺选择

六、综合、时序&功耗分析

主要工作内容:

1、准备好选定的工艺库文件(综合网表文件、时序文件库);

2、根据设计要求编写TCL约束脚本;

3,操作软件,生成约束报告;

4,分析约束报告,修改或调整不合理的约束或者修改RTL代码(RTL代码不会轻易修改,这要求在RTL设计时就要考虑这些约束要求,以便于能够通过约束分析)。

七、形式验证

综合出来的网表正确与否如何判定呢?这需要用到形式验证技术,该技术与RTL的仿真不同,它是从数理逻辑出发,来对比两个网表在逻辑上的等效性。如果等效,则综合的网表就是符合要求的。用到的工具为synopsys公司的Formality形式验证工具。其实,形式验证是在每一次芯片的逻辑电路转换为另一种表达形式的时候都需要做的工作。具体来说,在综合生成网表后做一次,主要对比的文件为RTL仿真之后的文件和综合之后的网表,在布局布线之后还需要做一次,主要对比文件为综合之后的网表与布局布线之后的网表。主要工作内容:

1、准备好待比较的两份文件及各种工艺技术库文件;

2、用TCL脚本编写脚本程序,设置其中一份文件为比较标准,其中一份为待比较文件;

3、运行Formality,分析生成的比较报告;

八、自动布局布线

1、准备好工艺文件(时序文件库数字版图库);

2,准备好综合之后的电路网表文件及约束文件;

剩下的工作就是合并整体的版图,并进行DRC、LVS的各种验证,通过之后就可以tapeout。之后再制定测试规范,这与反向设计的剩余步骤是一样的。另外,有时候版图还需要做ECO(EngineeringChangeOrder)工程修改命令,是指在原有的设计的基础上如果要作一些改动,可不必从头再来,可以在原来的布局上通过eco步骤快捷地完成设计。

传统以来,工业产品的开发均是循著序列严谨的研发流程,从功能与规格的预期指标确定开始,构思产品的零组件需求,再由各个元件的设计、制造以及检验零组件组装、检验整机组装、性能测试等程序来完成,此为芯片正向设计的由来。

THE END
1.秋招经验13关于算法,你需要掌握的数据结构图文手册对于小规模数据集,算法的复杂度可能不会显著影响性能,但随着数据规模的增加,算法的性能差异就变得至关重要。算法的复杂度直接影响到程序的响应时间和执行效率。因此,掌握时间复杂度对于编写高效程序是每个开发者必备的技能。 例如,假设数据集包含 100 万个元素: https://m.nowcoder.com/discuss/698638751840428032
2.算法设计的基本步骤与关键环节解析算法设计的基本步骤包括以下几个方面: 问题的定义:明确问题的输入、输出和限制条件,确定算法的目标。 问题分析:分析问题的性质,评估算法的复杂度和可行性。 算法设计:根据问题的性质,设计出一种算法来解决问题。 算法实现:将设计的算法用某种编程语言实现出来。 算法测试:使用测试数据对算法进行测试,验证算法的正确性https://blog.csdn.net/weixin_35752233/article/details/129564652
3.算法设计的四个步骤算法设计是计算机科学中非常重要的一个领域,它是解决问题的重要手段之一。在算法设计的过程中,通常需要https://www.ximalaya.com/ask/q11774512
4.简述算法设计过程一、算法设计的基本概念 算法是指解决问题的步骤和方法,是计算机科学中的重要概念。在计算机科学中,算法设计是指通过分析问题,设计出一种可行的解决方案,并将其转化为计算机程序的过程。在这个过程中,我们需要考虑问题的复杂度、数据结构、运行时间等因素。 二、算法设计的步骤 1.分析问题:首先需要对问题进行仔细分析https://wenku.baidu.com/view/f3a03d861ae8b8f67c1cfad6195f312b3169ebc5.html
5.计算机程序设计基础清华大学4.1 算法概念与特征 4.2 算法描述 4.3 算法设计与实现 4.4 递归算法 4.5 容 错 4.6 算法复杂度 6第5章 程序组织与软件工程 5.1 库与接口 5.2 随机数库 5.3 作用域与生存期 5.4 宏 5.5 条件编译 5.6 典型软件开发流程 7第6章 复合数据型式 https://next.xuetangx.com/course/thu08091001408/16906708
6.算法的乐趣算法设计也离不开分支和跳转结构,根据对条件的判断,选择合适的处理步骤,是算法实现过程中常用的逻辑。分支和跳转结构算法设计的关键是设计分支条件和算法的跳转流程,一般一个分支条件对应一个处理流程。算法在执行的过程中,根据构造的分支条件进行判断,根据判断的结果转入相应的处理流程继续执行。 根据跳转分支的个数,https://www.ituring.com.cn/book/tupubarticle/5656
7.教学课件RAPTOR流程图+算法设计教程.ppt第9章 基本算法设计 学习目标 掌握枚举、递推和递归算法的基本思想 熟练运用枚举、递推和递归算法设计程序,解决实际问题 目录 9.1 枚举算法 9.2 递推算法 9.3 递归算法 9.1 枚举算法 9.1.1 枚举概述 9.1.2 枚举 算法应用举例 9.1.1 枚举概述 枚举法是计算机求解问题最常用的方法之一,也是最简单、最直接的统计https://max.book118.com/html/2021/0121/6012141045003053.shtm
8.来了!复旦大学药学院团队携AlphaFold3全新课程手把手教您药物设计不同分子指纹算法的特点总结 分子指纹的应用 数据库应用场景 PyMol介绍 三、实例讲解与练习 案例a 案例b 第二天(2024.8.2) 分子对接基本流程和技巧 一、分子对接基本流程 分子对接历史 分子对接原理 分子对接方法分类 代表性分子对接软件及部分软件介绍 https://www.antpedia.com/news/wx_article/973355.html
9.科学网—[转载]基于容器云技术的典型遥感智能解译算法集成模型开发根据预先设计的深度学习算法,基于深度学习框架,进行智能解译算法的代码编写和镜像构建。其基本流程如图8所示,具体如下。 图8 模型开发流程 (1)从私有仓库或开源仓库使用Docker pull操作获取所需的基础环境镜像。基于基础环境镜像,添加OpenCV、GDAL、SciPy等Python包。对基础镜像统一设置SSH登录端口,以便后期调试https://blog.sciencenet.cn/blog-3472670-1339282.html
10.程序设计1.了解面向过程的程序设计技术和方法,掌握C语言的基本语法、基本语句、基本控制结构以及自顶向下结构化程序设计的基本方法,具备初步的高级语言程序设计能力,能够意识到算法、良好的程序、设计风格以及实践在本课程学习中的重要性。 2. 具备一定的软件开发能力,能够熟练使用编程语言,针对具体问题进行分析和编码,用编程语言https://www.scholat.com/course/gdutpc
11.课程其主要任务是使学生掌握计算机编程语言的基本知识,初步掌握程序设计的基本思想和方法,理解程序设计的基本概念,使学生具有应用一种编程语言进行简单程序设计的能力,重点培养学生的问题分析能力、数学建模能力、基本算法设计能力以及程序编写与调试实践能力,为学生程序设计基本能力的培养和众多后续课程的学习打下扎实的基础。https://higher.smartedu.cn/course/62354ca59906eace048cfb15
12.招聘航天科技集团一院期待你的加入澎湃号·媒体澎湃新闻2. 基本掌握飞行器热防护系统研制思路,了解国内外防隔热材料研究进展,掌握典型热防护方案设计流程与方法、研究基础、试验考核手段等; 3. 熟练使用三维建模及分析CAD/CAE软件,具备熟练的出图及仿真分析等技术能力。 (七)弹道、制导与姿控设计 岗位职责: https://www.thepaper.cn/newsDetail_forward_15833677
13.2024年软考程序员考试大纲程序员逻辑代数的基本运算 1.4数学应用 常用数值计算(矩阵、近似求解、插值) 排列组合、应用统计 编码基础 1.5常用数据结构 数组 线性表及链表 队列、栈 树 图 1.6常用算法 算法与数据结构的关系 算法设计和算法描述 常用的排序算法 查找算法 常用的数值计算方法 https://www.educity.cn/rk/5251497.html
14.安徽省2010年考试录用公务员考试大纲第四章C语言程序设计 一、程序设计与程序设计语言的基本概念 二、C语言的历史和特点,常见C语言程序开发环境的使用 三、C语言的基本语法与简单程序设计,包括基本数据类型、运算符与表达式;数据的输入与输出;基本程序流程控制语句;函数、编译预处理与存储属性 https://hrss.ah.gov.cn/zxzx/gsgg/8248961.html
15.初中物理课堂教学中开展小组合作的实践与研究论文4.2教学流程设计 教学流程包括以下三个部分:(1)课前预习。主要内容为自主学习与合作探究。(2)合作学习。主要内容为自主学习、合作探究、合作展示、教师点拨、巩固检测和小组评价。(3)课后延伸。主要内容为自主学习与合作探究。 4.3成果展示 通过一个阶段的学习,各学习小组会取得属于自己的学习成绩,此时就需要对成绩进https://www.yjbys.com/biyelunwen/fanwen/wuli/671340.html
16.2024年西安邮电大学832计算机基础综合考研大纲公布!1.了解数据结构、逻辑结构、存储结构和抽象数据类型的基本概念。 2.了解数据结构的发展和地位。 3.了解各种算法描述方法和算法设计的基本要求。 4.掌握对算法的评价标准和算法效率的度量方法。 (二)线性表 1.理解线性表的概念、定义、逻辑结构和存储结构。 https://www.gaodun.com/kaoyan/1557757.html
17.某算法设计程序流程图如图所示。试将该图转换为N试将该图转换为N-S图、PAD图、PDL伪码,并使用McCabe方法对该算法的复杂度进行估算。 参考答案: (1)NS图: (2)PAD图: 点击查看答案进入题库练习 查答案就用赞题库小程序 还有拍照搜题 语音搜题 快来试试吧 无需下载 立即使用 你可能喜欢 问答题 某算法设计程序流程图如图所示。试分析该算法为什么不能https://m.ppkao.com/mip/tiku/shiti/10802257.html
18.非接触式睡眠状态识别算法硬件化实现AET算法设计如图1所示。 信号处理流程主要基于4个步骤:提取PVDF采集的BCG信号、主要成分分析和数据分段、体动指数合成、睡眠模式判断。整个算法以60 s为一个周期,R_PVDF为原始ADC采集到的PVDF信号,RESP为经过30 Hz数字低通滤波(37阶,IIR巴特沃斯)之后的PVDF信号,主要成分分析模块对两种信号处理,同时减少数据维度、提取最http://www.chinaaet.com/article/3000069872
19.交互设计流程图怎么画?人人都是产品经理设计流程图长得并不特别,跟全世界流程图都差不多,也同样是作为一种表达工具存在。 1 什么不是设计流程图? 以下是百度百科关于流程图的定义: 以特定的图形符号加上说明,表示算法的图,称为流程图或框图。流程图是流经一个系统的信息流、观点流或部件流的图形代表。在企业中,流程图主要用来说明某一过程。这种过程https://www.woshipm.com/ucd/137757.html
20.FPGA设计基本原则,设计思想,结构zhliao(4)、同步设计原则:设计时序稳定的基本原则 2、Verilog作为一种HDL语言,对系统行为的建模方式是分层次的。比较重要的层次有系统级(system)、算法级(Algorithm)、寄存器传输级(RTL)、逻辑级(Logic)、门级(Gate)、电路开关级(Switch)。 3、实际工作中,除了描述仿真测试激励(Testbench)时使用for循环语句外,极少在RTLhttps://www.cnblogs.com/zhliao/archive/2012/04/10/2440625.html
21.一颗芯片的前世今生(3)——设计(流程概述)具体内容可以看这篇文章。 最后的输出大概这设个样子的。 4. 总结 本篇内容是芯片设计的提纲。这个阶段的输入是设计需求,输出是芯片版图。设计主要涉及到3方面的内容,算法设计,芯片前端设计,芯片后端设计。一整个流程很长,至此芯片的设计过程就结束了,下一个过程就是制造!https://zhuanlan.zhihu.com/p/510955407