DFT笔记20

3 LOGIC AND FAULT SIMULATION

仿真的用途有以下三个方面:

  1. 设计阶段:logic simulation就是用来看设计是不是符合spec以及设计中有什么错误(还能定位这些错误的位置)。
  2. 测试开发阶段:仿真故障电路的行为,这里用到的test patterns可以知道pattern的质量以及指导更多的向量生成。
  3. 电路故障仿真阶段:就是fault simulation,也被用在故障诊断中,定位硬件中的加工缺陷。

这一章分成两个部分:

  • 前半部分:logic simulation
    • 介绍logic circuit models,逻辑电路模型
    • 流行的logic simulation技术
    • 描述电路中可能出现的不良,怎么形成的,以及怎么在logic simulation中被检测到
  • 后半部分:fault simulation(源于logic simulation,但很多技术衍生出来可以快速仿真故障行为)
    • 介绍了一堆方法:serial, parallel, deductive, concurrent......
    • 还有一些方法,牺牲准确性,降低执行时间(对大规模设计很有意义)

通过这一章学习可以知道主要的logic and fault simulation技术,在选择仿真方法以满足设计需求的时候,这些背景知识将会非常有价值。

3.1 INTRODUCTION

Simulation就是在物理构建之前预测电路设计的过程。对于数字电路,仿真有两个目的:

  1. logic simulation:确认设计符合spec(通常指没有故障的仿真)
  2. fault simulation:被专门用来仿真故障电路
    1. 给定测试向量集,确定是否能检测感兴趣的故障模型
    2. 也是ATPG中非常重要的部分

3.1.1 Logic Simulation for Design Verification

logic simulation的主要应用就是design verification,按照设计阶段分成:

  1. behavioral level or electronic system level (ESL):用ESL描述语言例如C/C++、SystemC、SystemVerilog
  2. register-transfer level (RTL) design stage:用硬件描述语言hardware description languages (HDLs) 例如Verilog、VHDL,描述一些模块例如:
    1. registers
    2. counters
    3. data processing units
    4. controllers
    5. the data/control flow between these blocks。以上2点不涉及到时序分析,所以也被叫做functional verification
  3. gate-level:其实到这一步就足够了
  4. switch-level:对于一些高性能的设计会有这一步,介于gate-level和transistor-level之间
  5. transistor-level:太耗时,通常用来表征一些cell libraries比如SRAMs和DRAMs

logic simulation流程如下图:

需要的东西:

  1. functional specification documents:包含了功能和性能方面的设计目标
  2. 每个设计阶段有对应的电路描述:
    1. behavioral design:ESL code
    2. RTL design:HDL code
    3. gate-level design:netlist
    4. switch and transistor-level design:SPICE models
  3. verification testbenches
    1. input stimuli
    2. simulated responses

上图是每一个design stage的验证流程。如果某个阶段出现的结果和预期不符,那么就重新设计或者修正,直到没有design bug出现,然后才能往下一个design stage走。

3.1.2 Fault Simulation for Test and Diagnosis

需要好好体会logic simulation和fault simulation的区别。logic simulation发现的错误有可能是designers或者EDA软件导致的。fault simulation是担心有些工艺过程出现的fault,所以先仿真看能不能有效的筛查出来,fault simulation通常假设设计是无误的。

fault simulation的用处主要体现在test 和diagnosis,也分成以下三类:

  1. 评估一组测试pattern的故障检测有效性,通常叫fault coverage
  2. 识别检测不到的故障,但又很重要的话,designer或者ATPG需要加额外的pattern提高fault coverage
  3. 帮助在不牺牲fault coverage的情况下实现压缩。ATPG的第一步就是从fault simulator开始
  4. 协助做fault diagnosis

3.2 SIMULATION MODELS

仿真模型在门级。

3.2.1 Gate-Level Network

gate-level network就是一些逻辑门互连,例如下图(circuit N在这一章被一直用来举例):

对应的布尔逻辑运算如下:

3.2.1.1 Sequential Circuits

Sequential circuits时序逻辑电路(大部分设计都是时序的)分为两种:

  1. 同步synchronous(这节讨论这种,因为更为广泛使用)
  2. 异步asynchronous

下图例为一个时序逻辑电路的Huffman model:

分为两部分:

  1. combinational logic
  2. flip-flops

combinational logic的输入分为:

  1. primary inputs (PIs) x1,x2,......,xn
  2. flip-flop的输出y1,y2,......,yl,也叫pseudo primary inputs (PPIs)

combinational logic的输出分为:

  1. primary outputs (POs) z1,z2,......,zm
  2. flip-flop的输入Y1,Y2,......,Yl,也叫pseudo primary outputs (PPOs)

门级的描述中,flip-flop相当于一个functional block或者逻辑门的互连,如下图例(由D flip-flop组成的NAND,只是举个例子不具有实用价值):

输入输出:

  1. D:数据输入
  2. Clock:时钟(上升沿触发)
  3. PresetB:异步复位(低电平触发)
  4. ClearB:清零(低电平触发)
  5. Q:不取反
  6. QB:取反
相关推荐
滕州市燕猫虎计算机科技工作室个体工商户14 小时前
《Rust程序设计》学习笔记八:结构体
笔记·学习·rust·rust程序设计
志尊宝15 小时前
Vue3 零基础每日笔记(082):文件上传实战——el-upload 校验、自定义上传、头像预览
前端·javascript·vue.js·笔记·#javascript·#vue.js
后季暖16 小时前
电商问数笔记(2)
笔记
xier_ran16 小时前
【infra之路】AI 编译器学习笔记(二):重拾 C++——移动语义与 LLVM 风格的类型转换
人工智能·笔记·学习
星恒随风18 小时前
Linux库的底层原理:ELF文件格式、静态链接、程序加载、虚拟地址空间与GOT/PLT详解
linux·运维·笔记·学习·状态模式
罗西的思考18 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 — (7)— 混合机制
笔记·学习
ClinicTech20 小时前
婴儿培养箱技术笔记:温控、报警与数据记录的三层架构
笔记
xiaominngtongxue20 小时前
从一次接触网实训课看中职实训教学的组织逻辑
笔记
xier_ran20 小时前
【infra之路】AI 编译器学习笔记(四):PatternRewriter 与贪心 driver
人工智能·笔记·学习
ACP广源盛1392462567321 小时前
硬件选型笔记|国产 PCIe4.0 交换芯片 IX8012@ACP,边缘 AI 设备 IO 扩展方案探讨
人工智能·笔记·硬件架构·pcie·国产芯片