数字芯片全站市资料

目录

第一章 数字芯片流程 5

第二章 数字电路基础 6

    1. 逻辑函数化简 6
    2. 竞争 冒险 7
    3. 组合逻辑设计 8
      1. 译码器 8
      2. 奇偶校验电路 9
      3. 数据比较器 10
      4. 全加器、半加器、超前进位加法器 10
    4. CMOS 门电路 11
    5. 反相器知识 12
      1. 反相器结构 12
      2. 噪声容限 12
      3. 转换时间、传播延时 13

第三章 数字集成电路 14

    1. 同步电路、异步电路 14
    2. 复位电路 15
      1. 同步复位、异步复位 15
      2. 异步复位同步释放 15
    3. D 触发器与 Latch 16
      1. 锁存器的危害 16
    4. FPGA 17
    5. 门控时钟 18
      1. 基于锁存器的门控时钟 18
      2. 基于触发器的门控时钟 18
    6. CMOS 门的功耗 19
      1. 动态功耗 19
      2. 静态功耗 19
    7. 低功耗设计 20
      1. 系统级 20
      2. 体系结构级 20
      3. RTL 级 20

      1. 晶体管级 20
    1. 独热码(one hot) 20

第四章 静态时序分析 22

    1. STA 内容 22

STA 优缺点 22

    1. 建立、保持时间 22
      1. 时钟周期约束 22
      2. 保持时间约束 23
    2. 时钟约束修复 23
      1. Tsetup 建立时间不满足,采用措施 23
      2. Thold 保持时间修复 23
    3. 恢复、去除时间 24
    4. 时钟偏差、时钟抖动 24
    5. 如何时序收敛 24
    6. Fanout 优化 25
    7. 亚稳态 25
    8. 静态时序分析 26
    9. DC 流程 26
      1. 指定工艺库 26
      2. 读入设计文件 26
      3. 设定设计的约束条件 26
      4. 输出报告 28
      5. 保存数据 28
      6. 脚本案例 28
    10. 输入输出延时 29

4.11.1 定义 29

    1. 跨时钟域的 STA 30

4.12.1 域内 30

4.12.2 域间 30

第五章 跨时钟域传输 31

    1. 单 bit 信号跨时钟域传输 31
      1. 电平信号传输 31
      2. 边沿检测同步器(慢到快) 31
      3. 脉冲信号传输(快到慢) 32

      1. 结绳法 33
    1. 多 bit 信号跨时钟域传输 33
      1. 格雷码 33
      2. 握手协议 33
      3. 异步 FIFO 34
      4. 异步双口 RAM 34
    2. 同步 FIFO 34
    3. 异步 FIFO 35
      1. 读写指针表示 35
      2. 读空、写满判断 35
      3. 指针同步延迟的影响 36
      4. FIFO 深度 37

第六章 片上系统 38

    1. 流水线设计 38
    2. Cache 38
      1. Cache 一致性问题: 38
    3. 多处理机 Cache 一致性问题 39
      1. 监听协议 39
      2. 目录协议 39
      3. Cacheline 39
      4. MESI 40
    4. DMA 40
    5. SDRAM 40
    6. FLASH 40

6.7 I2C 41

6.8 SPI 41

第七章 Verilog 43

    1. 逻辑值 43
    2. ~ 按位取反 43
    3. Task 和 function 43
    4. 无损定点化 45

第八章 RTL 代码 46

    1. 序列检测器 46
    2. 偶数分频器 47

      1. 二分频电路 47
      2. 任意偶分频 47
    1. 奇数分频器 48
    2. PWM 50
    3. 脉冲展宽 51
    4. 按键消抖 52
    5. 无毛刺切换时钟 53
    6. 串并转换 53
    7. 异步双口 RAM 55

第九章 附录 笔试题 56

9.1.1 相关笔试题 56

    1. 串行总线 57
    2. 环形振荡器 58
    3. 两个噪声源叠加后的均方根噪声幅度 58
    4. 傅里叶变换 58
    5. DFT 可测性设计 58
    6. 互调串扰耦合 59
    7. 线与逻辑 59
    8. 取对数函数 59
    9. 取绝对值 60

第一章 数字芯片流程

芯片设计分为前端设计和后端设计,前端设计(也称逻辑设计)和后端设计(也称物理设计)并没有统一严格的界限,涉及到与工艺有关的设计就是后端设计。

一、需求分析

产品要解决什么问题,预测未来 3-5 年的走势和趋向,确保芯片是有卖点和前瞻性,面向未来。

客户向 fabless(芯片设计公司)提出设计要求,包括芯片需要达到的具体功能和性能方面的要求,让架构师可以进行细化。

二、功能架构设计

架构师将系统功能进行分解和细化,形成 spec 规范,将设计参数化、具体化。包括处理器架构的选择:ARM、RISC-V;

总线接口选择:AHB、AXI、APB;

软硬件功能的划分:硬件速度快,性能高,灵活性差。软件速度慢、性能差灵活性高开发周期短。

性能参数:引脚选择,电压频率、工艺选择、功耗和温度范围。三、RTL 编码

使用硬件描述语言(VHDL,Verilog HDL)将模块功能以代码来描述实现。图形输入工具:Cadence 的 composer

四、功能仿真验证(前仿)

功能仿真,对 RTL 级的代码进行设计验证,检验设计功能的正确性,是否满足规格中的所有要求。

仿真工具:Modelsim、VCS 五、逻辑综合

基于特定的工艺库,设定电路的面积、时序等目标参数的约束条件,将设计的 RTL 级代码映射为门级网表 netlist。逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元(standard cell)的面积,时序参数是不一样的。

综合完成后需要再次做仿真验证(这个也称为后仿真,之前的称为前仿真)。逻辑综合工具:Design Compiler

六、STA 静态时序分析

在时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例。

STA 工具:Synopsys 的 Prime Time。(PT) 七、形式验证 Formality

从功能上对综合后的网表进行验证,将综合后的网表与验证后的 HDL 设计对比,看他们是否在功能上存在等价性,保证逻辑综合过程中没有改变 HDL 描述的电路功能。

形式验证工具:Synopsys 的 Formality

后端流程一、DFT

可测性设计,在设计中插入扫描链。SCAN、Mbist、ATPG 技术等。二、布局规划

放置芯片的宏单元模块,在总体上确定各种功能电路的摆放位置,能影响芯片的最终面积。如 IP 模块、RAM、I/O 引脚等摆放位置。

工具:IC Compiler

三、时钟树综合 CTS

时钟的布线,时钟分布 H 型或树形,使时钟从同一个时钟源到达各个寄存器时,时钟延迟差异最小。

工具:PC 四、布线

将前端提供的网表实现成版图,包括各种标准单元之间的走线。五、寄生参数提取

由于导线本身存在的电阻,相邻导线之间的互感、耦合电容在芯片内部会产生信号噪声、串扰和反射。提取寄生参数进行再次分析验证,分析信号完整性问题。

六、物理版图验证

对布线完成的版图进行功能和时序上的验证 LVS:版图和逻辑综合后的门级电路图对比验证DRC:设计规则检查,检查连线间距,连线宽度。ERC:电气规则检查,检查短路开路。

实际的后端流程还包括电路功耗分析,以及随着制造工艺不断进步产生的 DFM(可制造设计)问题。物理版图以 GDS II 的文件格式交给芯片代工厂(称为 Foundry)在晶圆硅片上做出实际的电路,再进行封装和测试,就得到了可使用的芯片。

第二章 数字电路基础

    1. 逻辑函数化简

公式一:吸收法 A+AB=A (短项吸收长项)

公式二:消项法 AB+A'C+BC=AB+A'C

卡诺图法:见数电书

    1. 竞争 冒险

竞争:各信号到达目标位置的时延不同,到达终点的时间有先有后造成竞争。两个输入信号同时向相反方向的逻辑电平跳变的现象。有竞争不一定有冒险。

冒险:由于竞争现象所引起的电路输出发生瞬间错误的现象,就称之为冒险解决办法:

      1. 加滤波电容,消除毛刺影响。
      2. 增加冗余项,消除逻辑冒险。
      3. 改变设计,减少毛刺发生。

1)使用格雷码;2)使用同步电路。

例如数字电路中常用格雷码计数器取代 2 进制计数器,因为 Gray Code 输出每次只有一位跳变,消除了竞争冒险发生的条件。同步电路信号变化发生在时钟沿,只要毛刺不在时钟沿被采样就会消除毛刺。

    1. 组合逻辑设计

程序见 code 文件夹

      1. 译码器


2-4 译码器、3-8 译码器、BCD 译码器。译码器是组合逻辑。

      1. 奇偶校验电路

原理:检测数据中奇数位错误,但不能确定错误位置方法:判断 1 的个数为奇数还是偶数个

在奇校验时,正常的情况下个数应该为奇数个, 偶校验正常情况下应该时偶数个。

应用: UART 中接受数据位的校验

      1. 数据比较器

数据比较器的电路图如下:列出真值表,写出逻辑表达式,根据逻辑表达式画出电路图。

      1. 全加器、半加器、超前进位加法器

半加器

    1. CMOS 门电路

与非、或非、非、传输门、OD 门、三态门

      1. 与非门 :上并下串

      1. 相同面积的 CMOS 与非门和或非门哪个更快与非门会更优

电子迁移率是空穴的 2 倍,为了上升延迟和下降延迟相同,PMOS 需要做成 NMOS 两倍多大小。PMOS 的充电时间要大于 NMOS 的充电时间长。与非门的 PMOS 是并联的,相对于串联 PMOS 管的或非门更快。

    1. 反相器知识
      1. 反相器结构
      1. 噪声容限

噪声容限定义:前一极输出为最坏的情况下,为保证后一极正常工作,所允许的最大噪声

幅度

VIH:输入电压由高到低变化时,输出电压开始上升且传输特性曲线斜率为-1 的点。(仍能

维持输出为逻辑 “0” 的最小输入电压)

VIL:输入电压由低到高变化时,输出电压开始下降且传输特性曲线斜率为-1 的点。(仍能维持输出为逻辑 “1” 的最大输入电压

      1. 转换时间、传播延时
  1. Transition Time(转换时间/过渡时间):

上升时间 tr:从 10%Vdd 上升到 90%Vdd 的时间, 下降时间 tf:从 90%Vdd 下降到 10%Vdd 的时间。

  1. Propagation Delay(传播延时):

在输入信号变化到 50%Vdd 到输出信号变化到 50%Vdd 之间的时间。

第三章 数字集成电路

    1. 同步电路、异步电路

同步电路和异步电路的区别在于电路触发是否与驱动时钟同步,从行为上讲,就是所有电路是否在同一时钟沿下同步地处理数据。不同时钟源的电路就是异步电路。

同步复位和异步复位电路是同步电路和异步电路中两个典型的逻辑单元。在同步复位电路中,当复位信号有效时,必须要等到时钟沿有效时,才能处理复位信号相关逻辑行为(同一时钟沿下同步处理数据;而在异步复位电路中,当复位信号有效时,立即处理复位信号相关逻辑行为。

数字逻辑设计的首要原则就是坚持做同步设计。在数字逻辑中坚持同步设计是因为同步设计对延迟和 layout 不敏感,只要时序收敛,一般就可以保证电路稳定工作。如果时序收敛,则所有组合逻辑可能产生的毛刺都会在下个时钟边沿到达之前 settle 掉。时序收敛即输入数据与时钟需要满足建立时间(setup time)和保持时间(hold time)。

对异步复位寄存器来说,异步复位信号需要满足恢复时间(recovery     time)和去除时间

(removal time)才能有效进行复位操作和复位释放操作,防止输出亚稳态。异步电路存在竞争冒险、延迟相关等一系列问题,这导致异步电路对半导体工艺参数变动和温度变化十分敏感。布线方式改变也会对异步电路造成影响。对 FPGA 来说,异步设计的坏处很明显,FPGA 的布线会经常性改变,不同 FPGA 厂商采用的工艺也不同。

在实际情况中芯片会存在多个不同时钟,也需要接受来自外部的信号,需要跨时钟域

(CDC),后面会讲。SOC 最好采用全局异步局部同步(GALS)的设计方法。

    1. 复位电路
      1. 同步复位、异步复位

  1. 同步复位

优点: (1)过滤毛刺。

    1. 利于仿真。
    2. 利于时序分析。缺点:(1)与门延迟

(2)消耗组合逻辑资源。

  1. 异步复位

优点:库中触发器带异步复位端,设计简单,节省资源。缺点:亚稳态。

      1. 异步复位同步释放

目的:防止异步复位信号 release 释放时出现亚稳态现象。

含义:异步复位:复位与 clk 无关:always@(posedge clk or negedge rst_n)

同步释放:复位信号在第二级触发器的 clk 边沿来后释放,第二级输出是稳定且被同步。多打一拍,消除亚稳态。一般触发器都会在一个或两个时钟周期内返回稳态。

    1. D 触发器与 Latch

  • 锁存器对电平信号敏感,在输入脉冲的电平作用下改变状态。
  • D 触发器对时钟边沿敏感,检测到上升沿或下降沿触发瞬间改变状态。优点:锁存器集成度更高,占用面积小。

缺点:锁存器对毛刺敏感,ASIC 设计中 CPU 高速电路和 RAM 对面积要求高的电路才会用锁存器。一般不提倡使用锁存器。

      1. 锁存器的危害

组合逻辑语句不全导致电路产生锁存器。

  1. 对毛刺敏感。不能异步复位,上电后处于不确定的状态。
  2. Latch 会使静态时序分析变得复杂,不利于设计的可重用。
  3. FPGA 没有与锁存器直接对应的逻辑资源。FPGA 实现锁存器,会采用查找表 LUT, 消耗更多的资源。

避免锁存器的 RTL 设计:If-else 要写全,case 语句中包含 default

D 触发器由两个锁存器组成。

    1. FPGA

可编程器件分 FPGA 和 CPLD(复杂可编程逻辑器件)

注:FPGA 逻辑单元一般是基于 SRAM 工艺的,每个可编程逻辑单元包含查找表、D 触发器、走线资源、组合电路。其中查找表与触发器数目是 1:1,FPGA 版图中芯片面积最大的不是逻辑资源而是布线,走线资源是FPGA 布线时的瓶颈。FPGA 的物理结构中没有与锁存器直接对应的逻辑资源。所以如果在 FPGA 中要实现锁存器,只能采用 LUT(查找表)资源。但是锁存器不是纯粹的组合逻辑,在 FPGA 中实现会带来两种问题。静态时序分析困难,对时钟占空比敏感。因此,FPGA 设计中避免使用锁存器。

分布式 RAM 与 Block RAM。分布式 RAM 由 CLB 单元生成,消耗逻辑资源,而 Block

Ram 固定在 FPGA 内,当 Block RAM 不够用时可以用逻辑资源生成分布式 RAM。

CLB 中分SliceM 和SliceL,他们都有 LUT。SliceMemory  和SliceLogic 的区别是SliceM

中含有能够把 LUT 资源重新整合为 Ram 和 Rom 的逻辑。可以配置为分布式 RAM。

    1. 门控时钟

简单的门控时钟用与门就可以实现,但会出现过早截断时钟脉冲,因为毛刺也会误产生时钟脉冲。

基于锁存器的门控时钟

电平敏感的 锁存器+与门

Latch 相对触发器来说面积小,门控使能信号如果在时钟的高电平的时候开启或者关闭, 就会导致产生的门控时钟高电平被截断,变成毛刺。门控时钟低电平开启,保证门控时钟周期完整、避免产生毛刺。但会产生亚稳态,避免产生亚稳态就把锁存器换成触发器

      1. 基于触发器的门控时钟

基于时钟下降沿的触发器门控时钟,不会在时钟高电平跳变防止时钟截断导致毛刺,保证了时钟周期的完整性,避免了毛刺和亚稳态的产生。无毛刺时钟切换电路,glitch free 电路。增加一个该时钟源上升沿驱动的触发器来避免亚稳态。下降沿的触发器避免毛刺。

    1. CMOS 门的功耗
      1. 动态功耗

动态功耗包括短路功耗和开关功耗。

  1. 短路功耗 (导通功耗)

PMOS 和 NOMS 同时导通所消耗的瞬态功耗。

  1. 开关功耗:

电路在开关过程中对输出节点的负载电容充放电所消耗的功耗。

VDD:供电电压。 C:负载电容大小。 f:信号翻转频率

      1. 静态功耗

������ = ������ ∗ ���������

VDD:工作电压; I���:漏电流

在 CMOS 电路中,静态功耗是漏电流引起的功耗。随着工艺先进,晶体管阈值电压降低, 漏电流增大,静态功耗增大。

CMOS 漏电主要有:反偏 PN 结电流MOS 管的亚阈值电流。即扩散区和衬底的 PN 结上存在反向漏电流,MOS 管半导体表面弱反型,表面势=费米势。

    1. 低功耗设计

功耗来源有静态功耗、动态功耗。低功耗设计在晶体管级、RTL 级、体系结构级、系统级各个层次上都要进行,层次越高低功耗降低越有效。

软硬件划分、多电压域、多阈值电压、门控时钟、减少电容、衬底偏压。

      1. 系统级

软硬件划分:经常使用的模块用硬件实现节约功耗,减少代码量。处理器的选择

      1. 体系结构级

多电压供电:将设计划分电压域,根据每个区域的要求使用不同的供电电压。动态功耗方程中功耗与电压成正比。

多阈值电压:阈值电压不同的单元,使用高阈值电压的 MOS 管可以防止 NMOS 和 PMOS

都处于开启状态,降低导通功耗,降低漏电。

添加缓存:对 DSP 等频繁访问存储器数据的处理器,预先将数据从主存中取到缓存,使计算能耗下降。

      1. RTL 

门控时钟:将产生时钟的 PLL 关闭,或用时钟切换 IP 核在快慢时钟间切换,进入休眠模式。动态功耗方程中时钟翻转频率 f。

减少毛刺:if -else、default 要写全。避免产生锁存器。信号尽量保持,这样会综合出门控时钟。

      1. 晶体管级

减少电容:即减少动态功耗方程中的 C 负载电容。

衬底偏压:将衬底电压偏置,提高晶体管阈值。但阈值电压的升高会影响性能,使用动态偏置的方法,在工作模式下保持较小的偏置电压,在保持模式下加强偏置电压。

    1. 独热码(one hot

含义:使用 N 位寄存器对 N 个状态进行编码,每次只有一个位高电平,其余为低电平。优点:提高了转换速度,稳定性好,译码输出控制简单,适用于 FPGA。

  1. 解决数据离散问题。状态机中每个状态跳变的距离不同,为了让距离计算更合理,每个距离跳变位数一样。
  2. FPGA 中资源瓶颈在布线资源上,而组合逻辑消耗大量布线资源(组合逻辑通过查找

表实现,查找表之间的连接会消耗布线资源。)使用独热码在任何时刻,N 个触发器只有一个为高电平,其余为低电平。减少了组合逻辑的资源。

二进制、格雷码适用较多组合逻辑、较少触发器,one-hot 反之。

第四章 静态时序分析

    1. STA 内容

静态时序分析,通过遍历所有的传输路径,寻找所有组合逻辑电路最坏延迟情况,检查建立时间和保持时间是否满足要求,检查恢复时间、移除时间;时钟脉冲宽度、时钟抖动偏移, 验证设计在时序上的正确性,并确定能否在要求的工作频率下运行。

注:静态时序分析只针对同步逻辑设计,对所有的时序路径进行错误分析,不需要测试向量,分析速度比动 态时序验证快,能够达到 100%的时序路径覆盖。动态时序验证不仅有着难以承受的工作量和时间量,而且很难保证足够的覆盖率。

STA 优缺点

优点:执行速度快;不需要测试向量;覆盖率可达 100%

缺点:只能验证时序特性,如果设计中有较多的异步电路,要通过门级动态仿真来验证。不能识别多周期路径、伪路径等。

    1. 建立、保持时间

      • 建立时间 Tsetup:时钟有效边沿之前输入数据有效且稳定不变的时间。
      • 保持时间 Thold:时钟有效边沿之后输入数据有效且稳定不变的时间。
      • 传播延时 Tcq: 时钟有效边沿到寄存器 Q 输出更新的时间。
      • 组合逻辑延时 Tplogic:组合逻辑最大延时

      1. 时钟周期约束

      1. 保持时间约束

正时钟偏斜 skew  对于建立时间 Tsetup  的满足是有益的,而对保持时间 Thold  的满足是有害的。

触发器 2 的保持时间!

    1. 时钟约束修复

PVT:制造工艺 Process、工作电压 Voltage、温度 Temperature

PVT 对芯片运行速度影响很大。在静态时序分析时,会在PVT 条件下分析芯片时序是否满足要求。分析建立时间用 ss 慢速模型:高温+低压+慢速模型;(最差情况)

分析保持时间用 ff 快速模型:低温+高压+快速模型。电压低组合逻辑延时大。(最好情况)

      1. Tsetup 建立时间不满足,采用措施
  1. 降低时钟频率;(T 增大)
  2. 采用流水线;(组合逻辑延时减小)
  3. 提高工作电压;减少信号延迟。
  4. 使用反应速度更快的 D 触发器

建立时间与工艺、温度、电压,时钟周期有关。

建立保持时间是芯片本身的特性,他们的存在是触发器内部的特性又在屏蔽毛刺方面起到了一定作用。建立 保持时间与组合逻辑延迟有关,对于组合逻辑的延迟,也即触发器之间的门延迟,不能太大,也不能太小,太大 会导致(关键路径)建立时间不满足,太小会导致(关键路径)保持时间不满足。

      1. Thold 保持时间修复

保持时间与 工艺、电压、温度有关。

  1. 插入 Buffer 缓冲器延时
  2. 做时钟树平衡
  3. 提高温度,降低电压。(延时加大)

降低时钟频率无法解决,保持时间公式里没有 T,与T 无关。

    1. 恢复、去除时间

Recovery time 恢复时间:异步信号在时钟来临之前有效稳定保持不变的时间。与同步电路中的建立时间类似。与寄存器的复位有关,在时钟有效沿来临之前,复位就要撤销,数据就要开始恢复正常的时间。

Removal time 去除时间:异步信号在时钟边沿之后输入数据有效且稳定不变的时间。

    1. 时钟偏差、时钟抖动

  1. 时钟偏差(Clock Skew):由于时钟的路径长短和经过负载的延时不同,造成时钟在空间上的差别。
  2. 时钟抖动(Clock Jitter):时钟周期变长或缩短,时钟周期 T 变化。
  3. 区别:Jitter 是在时钟发生器内部产生的,和晶振或者 PLL 内部电路有关,布线对其没有影响。Skew 是由不同布线长度导致的不同路径的时钟上升沿到来的延时不同。

    1. 如何时序收敛

时序收敛要保证建立时间和保持时间收敛。

方法:流水线、retiming 重定时、逻辑复制、采用树型加法器、关键信号后移、消除优先级等解决办法。

  1. 流水线。时序不收敛是因为两个触发器之间的组合逻辑延时太大,采用流水线技术,将组合逻辑分解,降低了组合逻辑延时,
  2. 寄存器重定时。在不改变电路功能的情况下,将大块组合逻辑分成小块的组合逻辑,分布到寄存器之间。通过改变寄存器的位置来优化关键路径,减少组合逻辑最大延时,从而改进最高时钟频率。

(区别:  寄存器重定时是在不增加寄存器个数的前提下,通过改变寄存器的位置来优化关键路径。而流水线是增加了寄存器的个数)

  1. 逻辑复制。当信号扇出很大时,该信号到各个目的逻辑节点的路径变得很长。通过 对寄存器进行复制来降低扇出,复制几个相同的寄存器来分担原来一个寄存器驱动模块的任务。逻辑复制另一种方法,是在 DC 软件的约束文件中,设置 max_fanout 属性,一般将 max_fanout

设置为 3,当实际设计中该信号的 fanout 超过了 3,综合器会自动优化。

  1. 操作符平衡,将串行逻辑并行化处理,积之和变为和之积。例如 Z=A*B*C*D,利用括号进行操作数平衡 Z=(A*B)*(C*D)。变成树状乘法器、树状加法器
  2. 其他方法有关键信号后移,消除优先级等方法。

代码风格上

1、不要使用多层嵌套的条件语句。

多层嵌套代码被综合成具有优先级的电路。使用 case 综合并行结构,关键路径延时明显减小。

2、用寄存器对模块的输入与输出进行缓存。

对异步电路,用寄存器缓存能减小亚稳态发生的概率,消除组合逻辑竞争冒险带来的毛刺。对同步电路,用寄存器缓存可以降低 fanout 被逻辑复制。 但缓存占用资源,还带来一个时钟延迟,并非免费的午餐。完成子模块连接的顶层模块就不该缓存输入输出。

项目中电路时序没有很高,主要考虑的是跟面积平衡。如果增加乘法器数量提高并行度,会提高速度。时序违规主要是路径中的组合逻辑过长或者高扇出导致。CPU 关键路径是取指译码模块,主要是代码中逻辑过于复杂和多层的 if-else 导致的。硬件加速器关键路径主要包含大量的加法器逻辑,导致延时过大。针对逻辑复杂的问题可以加入流水线级数分割逻辑;而多层的嵌套条件语句则需要优化代码。

    1. Fanout 优化

Fanout 扇出过大,会导致 net delay 线延时过大,不利于时序收敛。通过逻辑复制解决高扇出,通过复制几个相同的寄存器来分担由原来一个寄存器驱动所有模块的任务。在综合时设置set_max_fanout 综合其会自动优化。

    1. 亚稳态

原因:违反时序约束,输出状态介于 0 与 1 两个有效状态之间。危害:毛刺、振荡、逻辑混乱、复位失败。

发生场合:跨时钟域信号传输;复位电路;异步信号采集。(异步系统) 消除方法:

采用同步器;采用响应更快的触发器;降低时钟频率。

  • 跨时钟域传输用两级 D 触发器同步、采用握手协议交互等;
  • 复位电路采用异步复位、同步释放方式处理。
  • 异步信号采集采用 FIFO 对跨时钟域数据进行缓冲设计。

  • 在避免亚稳态时,可采用反应更快的触发器、引入同步机制防止亚稳态。

注:一般采用两级 D 触发器同步消除亚稳态,这个在跨时钟域中也讲到了。

亚稳态危害后果:一般情况下亚稳态产生不可预知的数据,也可能导致系统崩溃,影响系统后续的逻辑判断和程序整体运行走向,影响系统稳定性。

    1. 静态时序分析

静态时序分析实际是把整个芯片按照时钟分为 timing paths,分析路径的时序约束,建立保持时间!。过程为三,(1)将整个设计按照不同的时钟域 path group 分为不同的时钟路径 timing paths;(2)计算每个 timing path 的延时信息;(3)检查延时是否满足要求。

    1. DC 流程

在逻辑综合阶段,设置工作条件,包括温度、电压、工艺制程,各个单元的延时是在这几个条件下得到的。比如温度 25 度,电压是 1.8v,工艺 180nm。工艺库中会有几种工作条件模型的选择,有最好情况 ff,典型情况 tt,最差情况 ss。最差情况用于建立时间的时序分析,最好情况用于保持时间的时序分析。

约束条件有时钟约束、设计规则约束、输入输出端口延时约束、面积约束、特别路径约束

      1. 指定工艺库

工艺库会提供标准单元的全部信息,包括标准单元的逻辑功能、单元面积、输入到输出的时序关系、扇出等信息。综合工具会根据这些信息来优化调整,使时序约束收敛。

Tcl 脚本:

      1. 读入设计文件

读入 RTL 级设计。使用 analyze 与 elaborate 一起;或者使用 read;

      1. 设定设计的约束条件

约束条件有时钟约束、设计规则约束、输入输出端口延时约束、面积约束、特别路径约束。

1 、 时钟约束

2、设计规则约束

包括节点上信号最大跳变时间(max_transition)、最大扇出(max_fanout)、最大电容等

(max_capacitance)。设定约束条件有利于控制功耗,保证信号完整性。

  set_max_leakage  -power      0mw    设置静态功耗约束。Power Compiler 将根据时序和静态功耗的约束,在目标库选择合适的单元。在时序约束的前提下,用 HVT 单元使得静态功耗低。

3、输入输出端口延时约束 一般是时钟周期的 40%

输入延时:信号在时钟沿之后多少时间到达。Set_input_delay 4.5

输出延时:信号在时钟沿之前多少时间输出。Set_output_delay 4.3

4、面积约束

设定最大面积约束 set_max_area 0

5、特别路径约束

  1. 多周期路径

多周期路径指两个触发器之间组合逻辑延时较大,使得数据无法在一个时钟周期内稳定下来,在多个时钟周期后才使用。常见的是有使能信号,信号经多个周期才被第二个寄存器沿捕获。乘法器中加法器延迟约为 6 个周期。

Create_clock -period 10 [get_ports CLK] 周期时间为 10 Set_multicyle_path 6 -setup -from A -to B

  1. 虚假路径

虚假路径指由于逻辑功能、数据顺序等原因,从来不会被激活、不需要考虑的路径。存在但不起作用的路径

  1. 从逻辑上考虑,与电路正常工作不相关的那些路径,比如测试逻辑,静态或准静态逻辑。
  2. 从时序上考虑,我们在综合时不需要分析的那些路径,比如跨越异步时钟域的路径。

Set_false_path -from A -to B

输出报告

生成面积报告 report_area、约束报告 report_constraint、时序报告 report_timing。通过这些报告,分析设计中存在的问题,优化设计。

      1. 保存数据

最后保存综合工具得到的数据

      1. 脚本案例

    1. 输入输出延时

4.11.1 定义

 

输入延时 输出延时蓝色线

输入延时定义:DFF1 的时钟端到 FPGA PAD 的时间。具体包括 DFF1 Tco PCB 线延时。

输入输出延时有一个范围,不能太大,也不能太小。最大最小输入输出延时,凡是最大,通过建立时间得出。最小输出延时根据保持时间得出。最大输入延时,用来判断 DFF2 的最小建立时间。最小输入延时,对建立时间有利,但对保持时间有更高要求。

输入输出延时的和要满足一个时钟周期。

    1. 跨时钟域的 STA

(1) 内部时钟相关的时序分析;(2)和外部接口相关的时序分析,保证和外围电路进行通信。分为域内和域间两种情况进行时序分析。

      1. 域内

对时钟域内,是纯粹的同步逻辑,只需要指明时钟信号的周期,占空比,jitter 等参数,进行全面分析。

      1. 域间

很多时候无需进行时序分析。对于不同时钟域,时钟周期和相位往往不相同。设置 false path。

第五章 跨时钟域传输

跨时钟域信号传输归为两类,一是控制信号的传输,也是单 bit 信号传输,分电平控制信号和脉冲控制信号。二是数据信号的传输,也是多 bit 信号传输。

    1. bit 信号跨时钟域传输

单 bit 信号传输,分单电平信号传输和单脉冲信号传输。(1)单电平信号传输采用两级触发器同步;(2)单脉冲信号传输,首先将脉冲信号转化为电平信号,采用双触发器同步电平信号,最后用电平变化检测电路将上升沿下降沿检测输出脉冲信号。

      1. 电平信号传输

两级触发器同步(打两拍)

      1. 边沿检测同步器(慢到快)

将慢时钟域的脉冲同步到快时钟。

两级同步器+边沿检测电路

      1. 脉冲信号传输(快到慢)

慢到快只需要考虑亚稳态问题。快到慢要考虑采样速率。奈奎斯特采样定理,采样频率低于信号最高频率 2 倍的时候,无法完整采样。

采用翻转同步器电路,在时钟域 1,脉冲输入经脉冲电平转化后输出,在时钟域 2 经两级触发器同步和电平变化检测电路输出脉冲。整个设计包括脉冲电平检测、双触发器同步、边沿测三部分。(见 37 页)

      1. 结绳法

适合任何时钟域的过度。采用锁存信号,在时钟域 1  锁存住输入,相当于脉冲展宽。

将快时钟域信号的脉冲周期延长,等到慢时钟同步采样后再“解绳”,还原为原来的脉冲周期宽度。

    1. bit 信号跨时钟域传输
      1. 格雷码

格雷码特点:各个相邻码之间仅有一位状态不同,首尾也仅有一位状态不同。一个数变为另一个数时,只有一位发生变化。

如果总线上传输的数据是计数器值,且为 2 的 n 次方。可以将二进制值转换为格雷码后传输。

      1. 握手协议

发送器 X 将数据发到数据总线上,并发出请求信号 x_request。将请求信号同步到接收器的时钟域 Y 上。

接收器接受 y_request 信号,锁存数据。并向发送器发送确认信号 ack,并同步到发送器时钟域 X 中。

      1. 异步 FIFO

      1. 异步双口 RAM

    1. 同步 FIFO

同步 FIFO 由三部分组成。如图。

    第一部分:读写过程的地址控制

  1. FIFO 写数据,读数据。从 ram 中读写,可定义 reg
  2. FIFO 写操作。写地址+1,与读地址错开,此时 FIFO 非空。
  3. FIFO 读操作。读地址+1;     第二部分:空满状态产生

引入计数器,count 计数器存储 FIFO 数据个数。

  1. 写操作,count+1;读操作,count-1;
  2. 写满:count=fifo 深度,full 写满

读空:count=0,empty 空。

    1. 异步 FIFO
      1. 读写指针表示

二进制的计数值跨时钟域出现亚稳态,二进制计数时所有位都可能同时变化。使用格雷码减少亚稳态。将格雷码同步到另一个时钟域用来空满判断检测。

格雷码特点

  1. 相邻格雷码之间只有一位变化,其他位相同,降低亚稳态出现的概率。
  2. 格雷码是循环码,0 和 2^n-1 之间只有一位不同。当 FIFO 深度是 2 次幂时,可以满足用格雷码消除亚稳态。
      1. 读空、写满判断

在读时钟域进行空状态判断,在写时钟域进行满状态判断。

  1. 读空:将写时钟域的二进制写指针转化为格雷码经过两级触发器同步到读时钟域,被同步的写指针与读时钟域的读指针每一位完全相同。
  2. 写满:将读时钟域的读指针同步到写时钟域,被同步的读指针与写时钟域的写指针高两位不一致,其余完全相同。

异步 FIFO 读指针是属于读时钟域,写指针属于写时钟域,读写时钟域不同。读写指针同步时采用两级触发器同步+格雷码,目的是消除亚稳态。

判断机制

最高位和次高位相同,其余位相同,读空 最高位和次高位不用,其余位相同,写满。

      1. 指针同步延迟的影响

问题:同步会消耗两个时钟周期,是否会导致设计出错?

会虚空、虚满,但不出错。读空、写满经过两级触发器同步后是一种保守的判断,会有额外的开销,但不会导致错误。在写指针同步到读时钟域,写时钟域可能还会写入新的数据,导致判断的读空不一定是真的空。这样更保守,为设计留了设计余量,不会空读。同样,写满时,

读指针可能读出了数据,不会溢出。这些做会有性能损失,但不会出错。

问题:读写时钟频率相差大

假设写时钟快,读时钟慢,采不齐写指针。慢的读指针被同步到写时钟域,写满判断不会出错。较快的写指针同步到读时钟域会出现数据丢失情况。

      1. FIFO 深度

产生任意深度的 FIFO

  1. 格雷码是对称的,去掉中间几位格雷码,可以达到首尾相差 1  位,深度为偶数。
  2. 深度为一般值,自行设计逻辑电路,或查找表。

格雷码的 bus skew 不能超过一个周期,否则格雷码多位数据跳变失去作用。格雷码是对称的,去掉中间的或者去掉两头可以产生循环码。

题目:

一个 8bit 宽的异步 FIFO,输入时钟为 100MHz,输出时钟为 95MHz,设一个 package 

4Kbit,且两个 package 之间的发送间距足够大。问异步 FIFO 的深度。解答:时钟周期时间 Tin=1/100MHz;Tout=1/95MHz

Burst_length= 22 ∙ 210 ÷ 23 = 29 = 512 4kbit/8bit 宽度 4000/位宽。512/100=X/95; X=486.4

FIFO 深度=512-486.4=26

第六章 片上系统

    1. 流水线设计

PPA:性能 Performance、功耗Power、面积Area

流水线越深:追求性能,更高的主频

流水线越浅:追求功耗,小面积低功耗。(8051 采用状态机,没有用流水线,面积开销小。)

越深导致的问题:1,以面积换速度,消耗更多的寄存器,面积开销大,功耗大。2.流水线中的反压,流水线冲刷问题。分支预测失败,就会导致预取的指令全部作废,重新取指,造成功耗,造成性能损失。3、处理器发展面临的挑战:频率墙、功耗墙、存储器墙、应用墙。

  1. 存储墙:主流商用微处理器主频 3Ghz 以上,存储总线主频仅 400MHZ,由通信带宽和延迟构成的存储墙是系统性能的最大障碍。(1)在多级存储结构下预取指技术(2)压缩技术增大容量(3)新型三维存储结构 SIP
  2. 频率墙:工艺进入超深亚微米后,线延迟超过门延时占据主导地位。

    1. Cache

目的:为了弥补处理器核与存储器之间的速度差异。避免 cpu 空等。

方式:基于程序访问局部性原理,代码和数据的时间、空间相关性,以块为单位由硬件控制器加载代码和数据。

基本结构

相联存储器实现,每一个存储块都具有额外的存储信息,按块操作,cache 有 tag 标签。当访问时,将地址和标签进行比较,相同则对存储块访问。

      1. 全相联映射
      2. 组相联映射
      3. 直接映射

6.2.1 Cache 一致性问题:

DMA 直接数据存取,可以不经过处理器就能更改存储器内容,导致 Cache 中的数据与对应的内存中的数据是不一致的。

数据在 CPU 与 Cahce 及主存 Memory 之间如何存取读:贯穿读出式 Look Through

Cache 处于主存和 CPU 之间。 CPU 的数据请求先由 Cache 查找,如果命中数据送出;不命中,再请求主存。降低对主存的请求次数。

旁路读出式

CPU 同时向 Cache 和主存发出请求。

写更新策略:写通 Write Through

Cache 写数据时,将数据写到 cache 和主存。

写回 write back

只修改 cache 的内容不立即写内存,只有 cahce 行被替换,才将其写回到主存。

    1. 多处理机 Cache 一致性问题
      1. 监听协议
  1. 写无效策略:当处理器更新私有域 Cache 数据时,通知其他 cache 数据的副本无效。
  2. 写更新策略:处理器更新私有域 Cache 数据时,把更新的数据发送给其他 cache,更新副本数据。

      1. 目录协议

使用 cache 目录来存放有关数据块,目录表管理所有的数据,协调一致性。目录类似仲裁者,数据修改、目录改变其状态、更新其他 CPU。

目录协议 cache 有三种状态:共享、未缓存、修改。

MESI 协议:M 修改、E 独占、S 共享、I 无效。

      1. Cacheline

Cache line 是 cache 与内存数据交换的最小单位,包括状态、地址、数据三部分。状态是

MESI,地址是 cache line 中映射的内存地址,数据是从内存中读取的数据。

当 CPU 从 cache 中读数据时,比较地址是否相同,再检查状态。有效直接读,无效从主存中获取数据。

      1. MESI

如上文内容所述,MESI 协议中 cache line 数据状态有 4 种。

初始场景:在最初的时候,所有 CPU 中都没有数据,某一个 CPU 发生读操作,此时必然发生 cache miss,数据从主存中读取到当前 CPU 的 cache,状态为 E(独占,只有当前 CPU 有数据,且和主存一致),此时如果有其他 CPU 也读取数据,则状态修改为 S(共享,多个 CPU之间拥有相同数据,并且和主存保持一致),如果其中某一个 CPU 发生数据修改,那么该 CPU 中数据状态修改为 M(拥有最新数据,和主存不一致,但是以当前 CPU 中的为准),其他拥有该数据的核心通过缓存控制器监听到 remote write 行文,然后将自己拥有的数据的 cache line 状态修改为 I(失效,和主存中的数据被认为不一致,数据不可用应该重新获取)。

    1. DMA

DMA 可以将处理器从数据搬移任务中解放出来;总线桥将高速设备和低速设备从总线上分开,从而达到节电的目的,使得高速总线的时序更容易收敛。

    1. SDRAM

静态 RAM 具有低密度高速度的特点,双稳态电路;动态 RAM 具有高密度低速度的特点, 电容刷新。

SDRAM 同步动态随机存储器,Syn 意为同步:Memory 工作需要同步时钟。动态:需要不断刷新保证数据不丢失。随机:指数据不是依次存储,而是自由指定地址读写。

SDRAM 是 DRAM 的一种,为满足大容量而设计,SRAM 的所有信号与时钟同步。

    1. FLASH

Flash 存储系统程序,属于 ROM 中一种,非易失闪存包括 NOR,和 NAND 两种。NOR 的

传输效率很高,但写入速度和擦除速度慢影响性能。NAND 单元密度高,并且写入和擦除速度很快。

    1. I2C

 

IIC 两条线速度 400k,SPI 四条线速度能到 M 级别。

IIC 有起始位和停止位,SPI 上升沿写一位,下降沿读一位。

IIC 有应答信号,SPI 无应答信号。

    1. SPI

SPI 的极性和相位,有四种不同的工作模式。时钟有两种,可改变空闲时 sclk 为高电平或低电平。采样两种情况,每个周期的第一个时钟沿采样,或第二个时钟沿采样。

第七章 Verilog

    1. 逻辑值

四种状态,0、1、X、Z

X 不定态在仿真的时候会出现,未给初始值。实际综合电路会被优化掉,没有不定态。Z 高阻态,是三态门输出高阻态或者悬空状态。

    1. ~ 按位取反

A = ’b0001,那么~A = ’b1110

~ 按位取反, !逻辑取反。

    1. Task function

Task 可以调用 task 和 function。Function 只能调用 function。Task 可以有时间延时,function 不能有时间延时。

Task 不可综合,用在仿真测试中。

比较点

任务

函数

输入输出

可以有任意多个输入输出 

至少一个输入不能有输出和双向端口

触发事件控制

任务不能出现 always 语句;可以包含延时控制语句(#),但只能面向仿真,不能综合

函数中不能出现 always、#这样的语句,要保证函数执行在零时间内完成

返回值

通过输出端口传递返回值

通过函数名返回,只有一个返回值

调用

任务只能在过程语句中调用,而不能在连续赋值语句中调用

函数可作为赋值操作的表达式,用于过程赋值和连续赋值语句

调用其它

可以调用其它任务和函数 

只能调用函数,不能调用任务 

其它说明

任务调用语句可以作为一条完整的语句出现 

函数调用语句不能单独作为一条语句,出现只能作

为赋值语句的右端操作数 

    1. 无损定点化

12.918

整数部分需要 4 位。

如果小数位用 8 位表示,0.918*2^8=235.008 取整,舍弃 0.008,235 即为对 0.918 做 8bit

量化后的整数值。一共需要 12 位来定点化。

对 235 进行反量化:235/2^8=0.91796875,得到量化误差 0.918-0.91796875=0.00003125,

而精度为 1/(2^8)=0.00390625,   量化误差小于精度的一半,满足“无损条件”。

第八章 RTL 代码

    1. 序列检测器

    1. 偶数分频器

使用计数器:N 分频,计数到 N/2-1。

使用触发器:使用触发器进行分频,n 个触发器进行 2^n 分频。Q= ~ Q;完成 2 分频,将 2

分频后的时钟作为下一级触发器的时钟,完成 4 分频。

      1. 二分频电路


 

      1. 任意偶分频

用计数器法实现。

    1. 奇数分频器

仿真过了,没有问题!

因为计数器是从 0-(N-1),产生 clk_n 的时候,在计数器到达(N-1)/2 和 N-1,且 clk 是下降沿 clk_n 才会翻转。

CLK = n%2 ? 奇分频:偶分频。

    1. PWM

    1. 脉冲展宽

华为手撕代码题:对 1bit 的脉冲信号进行展宽,转为 32bit 位宽,并产生有效信号

    1. 按键消抖

    1. 无毛刺切换时钟

    1. 串并转换

    1. 异步双口 RAM

第九章 附录 笔试题

9.1.1 相关笔试题

确答案: 

4

确答案:100 MHZ

三、求电路固有的建立保持时间

如图,将框内的电路作为一个寄存器,那么其有效的建立时间和保持时间是多少?

有效建立时间分析:

对于 D 触发器而言,其本身的建立时间是 2ns,也就是说数据必须在时钟有效沿到达之前2ns 保持稳定,这样到达 D 端后就一定是稳定的数据了。

考虑时钟延迟和数据路径延迟影响:

Tsetup_valid = Tsetup - 1ns + 2ns = 3ns;(数据需要提前 1ns 稳定下来,经过组合逻辑后的数据需要在时钟有效沿之前 Tsetup 时间稳定下来)

有效保持时间分析:

考虑时钟延迟、路径延迟的影响:

Tsu=Tsetup-tclk+td; Thold= thold+tclk_td

    1. 串行总线

SPI(同步串行)、I2C、UART(异步串行)

    1. 环形振荡器

    1. 两个噪声源叠加后的均方根噪声幅度

|X1-X2|≤ X ≤ X1 + X2

    1. 傅里叶变换

其中平移不影响频带的宽度,尺度变换影响频带宽度。

信号 f(t)的频带宽度为w,则 f(3t-2)的频带宽度为3 ⩠ w

    1. DFT 可测性设计

1、DFT 能覆盖电路的时序问题

2、DFT 影响动态功耗

3、DFT 检测制造缺陷、对信号做降采样前添加滤波器

在对信号做降采样前加滤波器,需要加什么滤波器,完成什么功能。加低通滤波器,完成抗混叠滤波功能

    1. 互调串扰耦合

串扰:一个信号部分能量传输到相邻导线上。

耦合:两个或以上的电路彼此有依赖,相互作用影响。互调:不同频率的信号相互调制,形成新频率信号。

    1. 线与逻辑

线与逻辑是在输出端加上拉电阻。OC 门、OD 门都可以实现线与逻辑。OC 门是三极管、OD 门是场效应管。

    1. 取对数函数

    1. 取绝对值

LEON2 经综合后该处理器系统面积为 55 万平方微米,关键路径延时为 14.74ns。RI5CY 微处理器流水线采用取指、译码、执行和访存四个阶段,利用 DC 综合出来的处理器规模为 2 万个 cell,芯片总面积为 33 万 4234 平方微米。

你可能感兴趣的:(fpga开发,嵌入式硬件,面试,集成学习)