1. 前端做什么工作

数字前端设计也称逻辑设计,前端以设计架构为起点,以功能正确且满足目标时序的网表为终点,用逻辑电路实现预期的功能。主要包括:规则书制定、系统架构设计、部件详细设计、HDL编码、仿真验证、SDC编写、逻辑综合、STA检查、形式化验证等,系统架构设计最难掌握,需要有丰富的设计经验,对应用场景也需要有深入的理解。

前端设计师需要掌握的最基本技能就是实现编码,但编码不是数字前端设计的全部,它只是前端设计过程中的部分工作。下面编写一个MUX逻辑,MUX的行为可以描述为:只要信号a或b或sel发生变化,如果sel为0则选择a输出;否则选择b输出。

学习前端设计首先要掌握数字电路基础知识并建立硬件意识,基本的数字电路像与或非门、D触发器、计数器、移位寄存器、状态机、多路选择器、译码器等一定要掌握,所有复杂的电路都可由这些基本电路构成,软件设计和逻辑设计的不同要明白,软件是顺序执行思维,而逻辑设计需要并发思维。数字电路是由很多的与非门及D触发器构成,上电之后所有部件都同时运行,不会因为A触发器的代码描述在 B触发器之前A触发器就先工作,事实上,RTL级代码书写的先后顺序在综合成网表文件后就消失了,取代的是基本逻辑电路之间的互联关系描述。数字电路功能中存在先后顺序的关系,但这种顺序不是靠代码的先后顺序来实现,它的先后顺序是基于时间轴(时钟)来实现,它的承载体是时序逻辑(触发器)。
因此逻辑设计需要的是一种并发的思维,设计师需要用并发的思维去考虑电路的设计。

  1. 前端设计流程

规格制定(一般多个部门共同参与)
规格制定是芯片设计中最重要的步骤之一,这个步骤就像是在设计建筑前, 先决定要几间房间、浴室,有什么建筑法规需要遵守,在确定好所有的功能之后再进行设计,这样才不用再花额外的时间进行后续修改。如果规格还制定好就开始设计,很难确保设计中不出任何差错。

规格制定前需要进行市场调研,收集客户需求,第一步是确定芯片的功能、功耗、性能,对大方向做设定;接着需要确定兼容那些规范,如无线网卡的芯片就需要符合 IEEE 802.11 等规范;最后则是确立这颗 IC 的制作方法,将不同功能分配成不同的单元,并确立不同单元间连结的方法,如此便完成规格的制定。
系统架构和部件详细设计(做设计方案)
这个步骤就像初步有了建筑的规划,将整体轮廓描绘了出来,方便后续制图。根据规则需求编写详细设计文档,明确具体架构,划分功能模块。对不确定的功能进行建模测试确保方案可顺利实现,这个阶段就是确定芯片设计的细节。
下图为基于ARM的自动驾驶芯片系统架构图。

做好设计方案非常重要,这里说的方案绝不是只摆几个框图,设计的时候需要做总体设计方案、逻辑详细设计方案,这两种方案包括了很多东西,总体方案主要是一级功能模块的划分及接口时序的定义,而逻辑详细方案就是代码的文字及图形描述(模块内部所有关键信号的时序最好都设计好)。
HDL编码
很多人在做逻辑设计时喜欢一上来就狂写代码,写到一半后发现了功能问题,只好推倒重来,反复好几次才能做到仿真基本正确,最后通过修补凑时序达到对的功能。这个做法除了设计周期长外,代码的质量也难以保证,往往存在很多冗余的逻辑,甚至会有一些隐藏较深的bug。所以数字逻辑设计一定要方案先行,根据方案写代码,这样才能在写代码时做到胸有成竹,避免逻辑混乱的情况。其实在方案阶段把时序设计好后,模块内部各个信号之间的逻辑关系也就理得差不多了,之后就是将它翻译成代码的体力劳动了。
HDL编码这个阶段是要使用硬体描述语言(HDL)描述实现功能模块,也就是把电路描写出来。常使用的HDL有 Verilog、VHDL等,国内一般使用verilog编写RTL(寄存器传输级)代码。
功能验证
功能验证就是检验编码设计的正确性,不符合规格的要重新设计和编码。设计和仿真验证是反复迭代的过程,直到验证结果显示完全符合规格标准。设计师一般只做基本通路验证,功能和代码的详细验证一般由验证工程师完成,验证和设计可同步进行。
常用仿真工具:Synopsys的VCS,Mentor ModelSim(Linux版本为Questasim),Cadence Xcelium(老版本叫incisive)。
编写SDC和代码检查
SDC是一种约束文件,这里的约束是针对综合和布局布线工具而言的。为什么会有约束这个东西出现呢?主要原因是EDA软件比较笨,难以理解设计师的心思,如果设计师不把更详细的信息告诉它的话它就干不好活,所以设计师需要用SDC来把设计意图(时序、面积和功耗等)传达给EDA工具。这里说的代码检查是指用EDA工具(spyglass最常用)来检查和诊断设计中可能存在的潜在问题,然后用其分析和追踪问题的根源,RTL级一般做lint、CDC(多时钟域检查)、Constraint(约束)三个方面的检查。
常用的检查工具:spyglass
逻辑综合(可能放后端做或者前后端交接设计师做)
逻辑综合就是把HDL代码翻译成门级网表(netlist),综合需RTL代码和SDC文件。逻辑综合需要基于特定的综合库,不同库中的门电路基本标准单元(standard cell)的面积,时序参数是不一样的,因此综合出来的电路在时序,面积上是有差异的。一般来说,综合完成后需要再次做仿真验证(这个也称为后仿真)。
常用综合工具:Synopsys的dc,cadence的genus
静态时序分析(STA,可能放后端做)
Static Timing Analysis(STA),静态时序分析属于验证范畴,它主要是在时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例(violation)。这个是数字电路基础知识,一个寄存器出现这两个时序违例时,是没有办法正确采样数据和输出数据的,所以以寄存器为基础的数字芯片功能肯定会出现问题。
STA工具:Synopsys的Prime Time。
形式验证(可能放后端做)
形式化验证属验证范畴,它是从功能上(STA是时序上)对综合后的网表进行验证。常用的就是等价性检查方法,以功能验证后的HDL设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。这样做是为了保证在逻辑综合过程中没有改变原先HDL描述的电路功能。
形式验证工具:Synopsys的Formality,cadence Conformal

  1. 前端设计入门要学的知识

前端设计所需知识很广,最好的学习方法就是项目实践,光看书和视频教程是学不会的,真正入门得靠项目。重点在于掌握设计思想和分析问题的方法,形成良好书写习惯(遵循代码书写、命名规范),最好把常用的基本的电路标准化、固定化。高手水平高并不是体现在他能写出一些很奇特的电路,相反水平高体现在他们总能将复杂的电路用一些很朴素的基本电路去描述。

前端设计一般需要掌握的知识有Linux操作基础、数字电子基础、verilog语言、计算机体系结构、脚本语言、EDA仿真工具等。
以下书籍可以作为入门教材。
《数字电子技术基础(第五版)》阎石 主编
《Verilog数字系统设计教程》
《Verilog编程艺术》
《专用集成电路设计实用教程》
《SOC设计方法与实现》
《数字设计和计算机体系结构》
《综合与时序分析的设计约束》
《SystemVerilog测试验证平台(中文版)》
《计算机组成原理》

关于更多芯片介绍类文章和芯片设计资料请看以下链接。
https://blog.csdn.net/weixin_43745611/article/details/108305382

本文是通过收集网上资源整理,版权属于原作者。

数字IC设计入门(8)初识数字芯片设计前端相关推荐

  1. 数字IC设计入门方法与资料大全

    0. 前言 正准备入行数字芯片设计的同志们可以看看以下几篇行业入门介绍的文章,因水平有限,文中难免存在疏漏.错误之处,与最新技术脱节之处必定不少,敬请细心的读者不吝指教.有用的您带走,没用的就当笑话看 ...

  2. 数字IC设计入门(10)初识数字芯片设计后端

    什么是数字IC后端设计? 完整的后端设计由后端半定制和后端全定制两个设计部分组成: 后端全定制设计是指在设计初期最先按照设计需求设计出的物理库单元,物理单元库由标准单元库.IP库及满足特殊需求的定制部 ...

  3. 数字IC设计入门(5)初识集成电路设计

    什么是集成电路? 集成电路(integrated circuit)是一种微型电子器件或部件.采用半导体工艺,把一个电路中所需的晶体管.电阻.电容和电感等元件及布线在一块或几块半导体晶片上制作出来,然后 ...

  4. 数字IC设计入门(3)初识电路图

    本文为入门级同学和零电子基础同学准备,有一定电子基础的请直接忽略,芯片本质是电路,因此作为IC设计工程师要识得电路.下文将以单片机最小系统和简单的外围电路为例来初步认识电路图. 单片机最小系统电路 下 ...

  5. 数字IC设计入门书单

    作者:Forever snow 链接:https://zhuanlan.zhihu.com/p/23429432 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 修订 ...

  6. 数字IC设计入门(1)初识电路板和芯片

    本文为入门级同学和零电子基础同学准备,有一定电子基础的请直接忽略,芯片从本质上说还是电路,因此有必要从电路板开始了解芯片工作过程,下面将简单介绍一块电脑主机板. 电路板已在我们生活中无处不在,不知大家 ...

  7. 数字IC设计入门篇:APB总线协议学习心得

    声明:本文章是本人学习AMBA  APB协议的一些个人理解,仅用于学习交流之用.本人学习APB协议时参考的是ARM公司官方的APB协议技术规范文档(编号:IHI0024D).受限于本人的知识水平,本文 ...

  8. 【数字IC验证快速入门】3、数字IC设计全流程介绍

    导读:作者有幸在中国电子信息领域的排头兵院校"电子科技大学"攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思.清华紫光.联发科技等业界顶尖集成电路相关企业面授课程, ...

  9. verilog hdl数字集成电路设计原理与应用_数字IC设计经典书籍推荐

    数字IC设计流程很复杂,从前端到后端,也有很多职位.在这里整理了个数字IC各个环节的经典必读书籍.市面上的书籍种类纷繁复杂,这里每种只推荐两本左右,如果需要,建议知识类的书籍还是购买正版,尊重作者,也 ...

最新文章

  1. 关于OpenGL ES 3D 光晕如何产生的自我理解
  2. linux的周期计划任务叫atd,linux计划任务
  3. 互联网元年,如何提高我们?
  4. Docker:You cannot remove a running container
  5. npm安装vue 解决VUE无法打开图形界面工具,输入vue ui无反应 vue-cli版本2.9.6无法升级 npm uninstall vue-cli卸载时失败
  6. winform进度条实现
  7. 数据结构无向图顶点的度c语言_图-储存及基本操作
  8. 创建查看mysql8.0数据库_创建和选择数据库
  9. crm高速开发之OrganizationService
  10. 数据结构-顺序表基本操作的实现(含全部代码)
  11. 铺铜需要把agnd和dgnd分开_电路中的AGND 和DGND怎么处理
  12. 13_大数据之数据可视化_note
  13. MySQL存储IP字段类型
  14. 自然语言处理--keras实现一维卷积网络对IMDB 电影评论数据集构建情感分类器
  15. 获取手机机身和外置SD卡存储容量的方法
  16. 动手学习数据分析第一章内容
  17. oracle 分析锁,ORACLE锁机制分析
  18. 上次被 ArrayList 锤了一拳后,LinkedList 很不服气,做出最后一击
  19. java 对接微信公众号(一)获取token
  20. java杂谈(瞎吉尔找的练习)

热门文章

  1. 主流开发语言和开发环境
  2. 5G毫米波芯片研发成功
  3. 常用的文字、图片的无缝滚动
  4. redis map 过期时间_redis 过期时间
  5. php中md5加密函数怎么用,php中md5()函数的定义和用法汇总
  6. 年度重磅 | 增长黑盒2021消费品牌私域研究报告
  7. ubuntu服务器解除显卡异常占用
  8. MWC 2017大会的10款热门物联网产品
  9. element-vue+echarts 竖状树形图,组织机构图组合
  10. 前后端分离前端部署方案是什么?