【《硬件架构的艺术》读书笔记】02 时钟和复位(1)

2.1 概述

这章主要内容是ASIC设计时的一些建议,这些建议独立于EDA和工艺,主要针对模块设计和存储器接口。

2.2 同步设计

同步设计特点:单个主时钟和单个主置位/复位信号驱动设计中所有时序器件。

同步设计:ASIC设计时域控制最安全的方法。

2.2.1 避免使用使用行波计数器。

行波计数器:将触发器输出作为其他触发器的时钟输入端,由于数据相对时钟会有延迟,所以不推荐这种使用方式。

2.2.2 门控时钟

门控单元会导致时钟偏移,并会引入尖峰脉冲单元作用于触发器。

可能仿真正常,综合出问题。

 

2.2.3 双边沿或混合边沿时钟

 

缺点:为使用同步复位和使用插入扫描链这样的测试方法带来麻烦,增加了确认关键信号路径的难度。

不过有时候为了追求性能还是会使用双边沿,如DDR。

2.2.4 用触发器驱动另一个触发器的异步复位端

第二级输出同时受时钟边沿和复位信号影响,违反了同步设计原理。

2.3 推荐的设计技术

要理解综合工具如何对不同的HDL编码风格和结果进行解释(硬件思维),其会影响设计门数和时序性能。

2.3.1 避免在设计中出现组合环路

所有反馈回路都应包含寄存器,组合环路违背了同步设计原理。

组合环路是不可综合的。

 

解决方法:引入一个触发器或者寄存器。

许多设计工具中,组合环路都会导致无休止的循环计算,所以EDA可能以不同的方式把组合环路打断,导致于原始设计意图不一致。

2.3.2 避免数字设计中的延迟链

延迟链:两个或多个单扇入单扇出的连续节点产生延迟。

使用场景:异步设计中,解决其他组合逻辑导致的竞争条件。

缺点:增加设计对操作环境的敏感性,降低设计的可靠度,增加移植到不同器件结构上的难度。

避免使用延时链,需要在设计中使用同步技术取代异步技术。

2.3.3 避免使用异步脉冲产生器

两种脉冲产生的方法(纯异步):

1、同一个信号接两输入与门或者或门,其中一个取反或者加延迟链,脉宽取决于两个信号相对延迟。(相当于人为增加毛刺宽度)

2、寄存器输出延迟后驱动同一个寄存器的异步复位端。

异步产生的脉冲宽度常常为综合和布局布线软件带来困难,实际脉宽只有在布局布线之后,布线和传播延迟已知时才能确定。所以在创建HDL时很难得到可靠的延迟值,且PVT环境,工艺脉宽都会变。且STA不能验证脉宽,验证工作会变得困难。

PVT环境:压力、体积、温度(Pressure-Volume-Temperature)。

这里多谐振荡器翻译成多振子有点怪怪的。

由于涉及对脉冲数量的控制,所以多脉冲结构会比脉冲产生器引起更多问题。多脉冲也增加了设计的频率。

推荐使用的同步脉冲产生器:

 

 这个结构脉宽总是于时钟周期宽度相等,可以用时序分析验证,易于移植,独立于工艺。

always@(posedge clk)
begin
    q2<=q1;
    q1<=d;
end
assign Pulse=q1&~q2;

不过感觉这里还是有点问题,经过触发器后触发信号延后了一个周期,脉冲应该也延后一个周期才对。

类似的,可以在触发输入末端产生脉冲的脉冲产生器。

 

 2.3.4 避免使用锁存器

这是一个老生常谈的问题了,在其他的书里已经看到了很多次。

 

图中电路X和Y同时拉高,形成了一个类似组合环路的结构,会使电路振荡。原因:Latch的触发信号高电平时,输出对于输入来说是“透明的”。

 STA分析器通常会做出与锁存器透明有关的错误假设:要么发现伪路径,要么丢失真正的关键路径。寄存器本身时序也是模糊的。这样的代码很难移植或者复用。

锁存器常常使电路不可测。

FPGA是寄存器密集型电路,所以使用latch会占用更多资源。

不完整的if或者case会导致意料外的的latch的生成(因为组合电路要保持之前的值就得用latch)。

对于某些不支持Latch的FPGA,就会综合出组合环路代替Latch。

 图中电路有锁存数据的能力,但是可能违背建立时间和保持时间的要求,而且很难发现。

Latch也并不是完全没用,事实上可以用Latch挪用周且或者借用时间来满足关键路径的要求。

2.3.5 避免使用双边沿时钟

优点:给定时钟速率下达到两倍的吞吐量。

缺点:违反了同步电路的原理并将造成一系列的问题。

问题:

 

 等效同步电路:

 

 

 

 

 上述等价是在时钟占空比为50%时成立的,如果时钟非对称占空比可能导致违背建立和保持时间,扫描路径也不能容易地通过触发器。

使用条件:对性能/速度要求很高、且无法承受使用等效同步电路在DFT和验证方面带来的额外开支。

优点:

1、提升性能。

2、过高的时钟频率会给许多接口带来问题。

3、降低功耗。

除非等效同步电路无法完成所期望的性能时,设计人员才应该使用双边沿时钟。

这里补充一个芯片功耗公式:

 

 第一项为动态功耗,与负载电容、供电电压的平方和工作频率成正比。

第二项为静态功耗主要是漏电带来的功耗。

posted @ 2022-11-13 18:43  Magnolia666  阅读(236)  评论(0编辑  收藏  举报