• 【数字IC前端入门】01-数字IC专栏内容概述


    IC

    • 前端(把算法和协议做一个逻辑上的实现)
      设计
      验证(功能验证):EDA(主流)、FPGA(系统级)

    • 后端(把逻辑的RTL实现为Netlist)
      综合和timing的BES
      DFX–验证制造工艺,还会涉及到一些功能的调试(也会用到一点EDA)、DFT–针对制造缺陷作测试

    工具

    • Linux操作系统(shell命令、文本方式)、givm文本编辑工具
    • EDA逻辑仿真工具(Mentor-Questasim和Sysnopsys-VCS)
    • 主流EDA厂商及工具
      Candence:NC-Sim(inv-SIM)
      Mentor:Questasim(Modelsim升级版)(有windows版本,跑简单的仿真比较方便)
      synopsys: VCS

    理论基础

    • Verilog语言:描述电路(RTLcode(提升效率))
      芯片早期-CMOS工艺实现-效率低-在寄存器层面进行实现逻辑功能-已有算法为基础(通常为C、MATLAB语言)-以RTL方式实现(用Verilog语言写RTL代码)-利用综合工具映射为CMOS管-----(DUT(Design Under Test)、DUV(Design Under Verification)):检查算法功能是否正确
    • SystemVerilog验证
    • UVM验证方法学(VMM、OVM是之前比较流行、UVM实现了前两者的统一)
      “带随机的随机激励生成,覆盖率驱动的验证策略”:属于UVM验证方法学,核心思想是验证的完备性
      需求(MRD)–设计和验证(了解需求的详细功能 ,去逐一验证设计是否满足所有的功能,如果某一条功能不符合要求,再去把设计中的bug找出来,并不是单纯的找bug)
      随机激励的作用:用机器的方式尽可能将所有的功能点充分考虑到
      覆盖率驱动的作用:判断验证到达什么程度才算结束,收集结果时看覆盖率(判断某些功能点是否通过随机产生的激励覆盖到了)—功能覆盖率、代码覆盖率:行覆盖、条件覆盖、toggle覆盖

    在这里插入图片描述

    实践项目

    • SoC芯片设计验证实践项目(MCU)
    • 逻辑仿真技术(RTL设计中讲)、调试技术(发现Bug之后怎么调)、断言技术
      在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    MemBist: MemBist主要针对Memory,如SRAM。在制造过程中,可能会存在缺陷,当芯片回来之后,我们要进行一些制造型测试!MemBist是进行内建自测试!
    这种内建自测试与其他IP外设测试不一样,其他IP外设测试通常是通过GPIO灌激励,然后将经过这些逻辑之后的激励通过另外一些GPIO引出,然后去对比Partner。而内建自测试是我这个测试,对SRAM的测试不需要通过外部的管脚,在SRAM外部会包一层Bist逻辑,然后相当于在内部触发一个使能信号,然后它就可以往SRAM中灌各种激励,然后把经过逻辑之后的激励输出,就可以完成这样一个内建自测试。这就是MemBist的功能。
    Spare Cells: Spare Cells 主要是放在顶层,用于芯片开发后期,在投片时忽然发现有BUG,这时候要做一个叫ECO(Engineering Change Order,手动修改集成电路的过程)的东西,这个时候就可能会涉及到一些cell的替换,如果之前已经放了Spare Cells的话,就可以直接用Spare Cells,不需要再重新增加cell。如果增加cells,可能会导致整个Die的面积放不下!所以相当于是提前预留放了一些为我们做ECO准备的Spare Cells,把面积在那占着,这样的话,整个FloorPlan就不用了动了!Cell在那放着,尽可能最小的去影响我们最终的FloorPlan。
    IO MUX: 管脚复用,一个接口具有不同的功能。

    • master(主)、slave(从):组件之间要相互通信,主动发起读写操作,叫做主,被动接受叫做从。

    芯片应用场景

    • 无线通信+数据存储=相机数据的存储卡

    • 无线通信:APB总线上的SPI接口–挂载WiFi芯片–实现无线通信和数据传输
      SOC-SPI-》WIFI–》WLAN–》手机

    • 数据存储: 之前主要使用NandFlash控制器,实现数据存储。该芯片(无NandFlash接口)采用了SD-Host接口,外接SD memory卡的方式进行数据存储。

    • 场景描述
      照片-通过-》SD-memory-暂存-》SRAM-通过-》SD Host-存储-》SD-memory
      手机–》WIFI-下载-》SD-memory中的照片

    • 数据流向
      数据存储:在这里插入图片描述
      无线通信:在这里插入图片描述

    • Slave和Master
      高速IP具有M和S的双重功能,低速IP只具有S的功能,一般情况下,高速IP工作在M,CPU可以通过改变寄存器配置使IP工作在S。

    • IP总线地址映射
      CPU访问某一空间是通过该空间的地址来访问的,一个地址空间对应1个Byte也就是8个bit
      在这里插入图片描述

    • Pin-Mux(工程上一般会在顶层做PIN-Mux,减少PAD)和PAD
      PAD:芯片与外部通信的一个接口
      在这里插入图片描述

    • 版图布局
      模拟IP在外围放一圈(MEM、Flash、模拟IP)
      在这里插入图片描述

    • SOC设计节点

    在这里插入图片描述
    RTL:编写RTL代码,进行功能验证(EDA仿真验证、FPGA原型验证)和代码复查
    Netlist:通过综合工具,将其转化为Netlist,即将RTL代码映射(MAP)成门级网表(STD CELL),同时进行形式验证(RTL逻辑功能和Netlist的逻辑功能对比,看看综合工具是否把RTL某些功能给优化掉),时序验证(实现Netlist后,timing setup 能否满足)
    GDSII:接下来进行物理实现,GDSII也是一个网表,只不过是包含了器件位置信息的网表。Netlist仅仅只是逻辑信息。然后进行一些后仿真和签收复查。
    芯片:投片,在wafer上生成芯片,芯片回来后,需要做制造测试(ATE测试),ATE测试的partner是在前面做RTL时的DFx做的,Membist,Scan扫描,都是在前期做好的设计,芯片回来之后,会把这些电路启动,进行ATE测试!测芯片本身,有没有制造功能的问题!

    注:所学验证主要是针对RTL进行一个逻辑功能的验证
    
    • 1

    数字IC设计全流程

    • 数字集成电路设计的流程?
    初学者小知识:芯片=IC(intergrated circuit)=集成电路
    
    • 1
    • 数字设计流程每个阶段主要工作?
    • 数字设计流程每个阶段使用的主要EDA工具?
  • 相关阅读:
    基于VC的WinSock网络编程实用宝典
    【C++】C++ 语言对 C 语言的加强 ① ( 实用性增强 - 变量任意位置定义 | register 关键字增强 - 自动进行寄存器优化 )
    【操作系统】磁臂黏着现象
    C++(四)
    Kubeadm搭建kubernetes集群
    【unity学习笔记-如何给动态的人物添加碰撞体】
    顺丰面试,第二个问题把我劝退了!
    M2 Mac Xcode编译报错 ‘***.framework/‘ for architecture arm64
    【单片机】【数码管】数码管显示
    AcWing 835. Trie字符串统计
  • 原文地址:https://blog.csdn.net/claylovetoo/article/details/123133634