0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

聊聊芯片设计有哪些活要做?

芯司机 来源:芯司机 2023-11-25 15:15 次阅读

芯片设计这个行当,从大的方面讲,主要分模拟和数字两大块,而每大块又分前端和后端,我想大部分同学对这个肯定是非常清楚的,下面就数字电路聊聊芯片设计的一些事情,就是芯片设计有哪些活要做,这并不是全面完整的系统介绍,只是个人的了解和总结, 希望抛砖引玉,也许不全面,不正确,欢迎大家指正和补充。

说到数字芯片,不能不说FPGA,这种是可编程的数字电路,用法原理也不说了,数字电路设计的目标就是把这些功能做成我们自己专用的ASIC/SoC,这样无论面积、成本或者安全性等都能有保证。

从流程上讲,数字芯片设计的大致步骤就是系统与功能定义、RTL实现验证、 综合及可测试性设计、ATPG仿真、时序分析到自动布局布线(APR),直至交付fab的GDS网表。

这个流程是可以反复迭代的,对于不同类型芯片,如纯数ASIC或混合电路(mix-signal)及系统级芯片(SoC),每一步的方法和具体实施流程上可能又有所差异。下面就这些基本流程分步谈一些主要问题。

系统设计主要涉及到功能定义及架构设计、总线架构的配置、模块设计、数据流的分配、时钟的设计等问题。总线包括模块之间,模块与MCU核之间,外部主机和芯片之间通信,或者测试需要等等一系列因素。时钟涉及到数据流的规划、通信接口或内部MCU的时钟约定、工艺条件、功耗等因素。模块需要明确接口和定义。

在系统级设计上, 特别是很多数模混合电路中或对功耗有特别要求的电路中,还要有电压域的设计,不同模块之间,功能模块和接口之间可能都需要根据工艺条件、功耗要求设置不同的电压。

无论是时钟,还是电压,都可以通过控制开关来实现功耗的要求,时钟实现比较简单,在大部分电路中都可以实现这种时钟控制。电压控制一般是实现在集成有电源管理芯片的较大规模芯片上,但未来趋势是即使没有电源管理芯片,电压的gating也需要纳入考虑范围。

SoC系统设计上,一个重要的环节是MCU 内核的选型,现在常用的内核一般是ARM、较老的ARM7、ARM9等系列,较新的是三大系列Cortex -A 、R、M,具体的用途不做详细描述,选定好后,根据需要进行设置,一般做硬件的人不需要对它的指令集了解太多,但是需要了解它的总线接口、数据总线、指令总线, 以及存储系统的设计,一般需要安排ROMRAM分别作为指令和数据存储器,由于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等等。

很显然,测试激励是有时间概念的,是按顺序进入和流出芯片的,使用的这些非电路描述语言和功能和软件几乎是没有区别的,所以验证中也越来越多地使用软件的一 些技术, 如面向对象的编程技术、SystemVerilog、 Specman E等。

无论传统的验证还是最新的验证方法学,都需要追求验证的收敛性,即验证完全是自动化的检测,除非debug, 我们无需通过波形判断测试通过与否。

验证系统中,使用的一般是存储器的模型加上文本格式的代码文件, 一般实现是直接通过系统读入指令把文件读入到存储器模型中。(有些仿真工具可以直接通过选项导入,类似SDF文件,如工具nscim)。

仿真器可以直接写出指令执行的log,以用于debug,不过现在有更先进的方式用于复杂SoC验证, 如Codelink工具,能够在原仿真器的基础上,建立起MCU和HDL电路已经软件的关系,通过展示波形和固件(firmware)源码的链接进行更方便的debug。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117721
  • 芯片设计
    +关注

    关注

    15

    文章

    895

    浏览量

    54411
  • RTL
    RTL
    +关注

    关注

    1

    文章

    377

    浏览量

    59064
  • SoC系统
    +关注

    关注

    0

    文章

    50

    浏览量

    10575
  • 电源管理芯片

    关注

    21

    文章

    646

    浏览量

    51580

原文标题:芯片设计有哪些活要做?

文章出处:【微信号:芯司机,微信公众号:芯司机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    cyw43012的低功耗保是如何应用的?

    1、目前cyw43012的低功耗保是如何应用的如果主控不是psoc,是君正或者rk之类的arm平台可以做远程唤醒吗。 2、cyw43012可以开放43012 rtos的部分开发吗,如下虚拟网卡或者sdio裸数据传输的应用是否支持。 谢谢
    发表于 03-01 07:09

    封装对高频芯片计有何影响吗?

    为了说明如何使用Process Configurator来探索封装对芯片的影响,我们创建了一个简单的布局示例:它由一个EM器件(一个单端八角形螺旋电感器)组成,该器件是使用RaptorX提取的。
    的头像 发表于 02-18 17:21 2384次阅读
    封装对高频<b class='flag-5'>芯片</b>设<b class='flag-5'>计有</b>何影响吗?

    在TP芯片上开发的软件想要运行在同型号的TE芯片上,需要做什么修改吗?

    嗨,请教个问题,如在TP芯片上开发的软件想要运行在同型号的TE芯片上,需要做什么修改吗?
    发表于 02-01 08:01

    聊聊AMBA协议的evolution过程

    作为一名新时代的ICer,一定必定肯定听说过AMBA协议,但是却少有人知道AMBA协议的evolution过程,本文将大致聊聊Evolution of the ARM AMBA Specifications!
    的头像 发表于 01-19 09:50 506次阅读
    <b class='flag-5'>聊聊</b>AMBA协议的evolution过程

    简单聊聊半导体芯片

    在之前的文章里,小枣君说过,行业里通常会把半导体芯片分为数字芯片和模拟芯片。其中,数字芯片的市场规模占比较大,达到70%左右。
    的头像 发表于 01-04 10:43 561次阅读
    简单<b class='flag-5'>聊聊</b>半导体<b class='flag-5'>芯片</b>

    聊聊嵌入式软件分层

    今天以控制LED闪烁为例,聊聊嵌入式软件分层
    的头像 发表于 12-28 09:22 257次阅读

    聊聊Redis的使用案例

    今天我们来聊聊 Redis 的使用案例。
    的头像 发表于 12-13 14:13 267次阅读

    请问AD转换芯片数字输出A0-A11这12根数据线与FPGA连接时要做等长吗?

    AD转换芯片数字输出A0-A11这12根数据线与FPGA连接时要做等长吗? AD转换芯片时钟为70MHz,如果不需要,那么时钟速率达到多少需要做等长,就是画蛇形线!
    发表于 12-12 08:15

    从可综合的RTL代码的角度聊聊interface

    SystemVerilog引入了interface,这里我们从可综合的RTL代码的角度聊聊interface。
    的头像 发表于 10-12 09:06 887次阅读
    从可综合的RTL代码的角度<b class='flag-5'>聊聊</b>interface

    芯片流片后需要做哪些工作?

    芯片流片后需要进行一系列的工作,以确保芯片的正确性、稳定性和性能。
    的头像 发表于 09-02 17:25 1522次阅读

    小科普|聊聊网线那些事

      网线这个东西,看着还真都差不多,插上就能用这能有什么差别呢?首先是线材本身,是分三六九等的,最常见的什么“超五类、六类、超六类”等,今天我们就跟着小编一起来聊聊网线那些事。
    的头像 发表于 07-26 10:18 664次阅读

    聊聊芯片行业客户收款难的问题及解决方法

    芯片
    芯广场
    发布于 :2023年07月25日 10:24:11

    聊聊什么是电磁转矩和磁阻转矩

    电机转矩分为电磁转矩和磁阻转矩。本期,从能量的角度来聊聊什么是电磁转矩和磁阻转矩,尽量让大家不通过死记硬背学知识。
    发表于 07-14 17:31 1386次阅读
    <b class='flag-5'>聊聊</b>什么是电磁转矩和磁阻转矩

    聊聊芯片超净间的颗粒

    芯片制造领域,颗粒的存在可能对生产过程产生巨大影响。
    的头像 发表于 07-08 09:28 597次阅读
    <b class='flag-5'>聊聊</b><b class='flag-5'>芯片</b>超净间的颗粒

    聊聊 220V交流 过零检测

    聊聊过零检测,以及如何实现过零检测 ...... by 矜辰所致
    的头像 发表于 06-06 11:20 3243次阅读
    <b class='flag-5'>聊聊</b> 220V交流 过零检测