【芯片设计】异步电路碎碎念(五) 异步逻辑的几个注意事项

乐活   2024-09-02 12:02   北京  

UVM源码计划系列因为1X同学被分配了很繁重的工作,所以暂时先学到这,啥时候有闲暇时光了再继续往下学。同时IC checklist的三篇也已经推送完成,本来交付系列还有一些备份但是内容还是没打磨好,也日后再输出吧。总结下来最近就先专心更从RTL到GDS、异步逻辑以及开源项目阅览三个系列好了,在过程中再插入其他一些零散的文章,等到其他几个备份中的专题大概完成了再增加推送的系列吧。


本篇跟前文的内容有一定的重合,在行文中很多地方已经体现过了。不过既然已经写到这里了就归纳一下吧。总的来说,异步逻辑处理中,注意事项大概有以下这些,总结并不全面欢迎大家补充。

避免目的时钟域再收敛

即多比特信号进行同步时,如需要进行逻辑运算必须在源时钟域完成组逻辑并寄存处理,不能分别同步到目的时钟域后再进行逻辑处理。

这个老生常谈了,每个比特在同步过程中收敛的时刻不同,有的在第2拍采到正确值,有的在3拍采样到正确值,在目的时钟域对多个同步信号进行组合逻辑的话,产生的结果可能与预期不一致导致整个逻辑的混乱与进一步传播。

同步器之间不能有任何组合逻辑

同样是老生常谈的一个点,同步就干干净净的处理就对了,千万别有组合逻辑,一是触发器路径延迟不同,高低电平传播时间不一致,组合逻辑会有错误逻辑以及竞争冒险与毛刺,同时也增加了采样的不稳定区间。

同源信号扇出多个触发器的情况,需要先同步再复制同步后的信号

典型的场景就是A -> B,A -> C,BC都在目的时钟域,此时不要讲同步器复制对A分别跨异步,而是要先将A同步到目的时钟域后再驱动多个逻辑路径。

使用格雷码跨异步,格雷码必须是依次变化的

比较典型的场景是计数器非整2的幂次计数翻转,这过程中会有格雷码多比特跳变的场景,不能使用格雷码同步器。此外使用格雷码同步器时,格雷码必须打拍输出,格雷码多比特的走线延迟建议不要大于Tmin_cyc(min 源、目的时钟周期),多比特之间的走线延迟差值尽可能的小。

当异步电路存在反馈机制时,应当通过握手机制进行同步

尤其是反馈时间不定,异步握手同步器是合理的处理方式。

对连续数据的传输速度有要求,或者实在不知道怎么同步了,就用异步FIFO

emmm上学时老师跟我们说的,如果实在不会了就用异步fifo进行同步吧,然后转头就花了一周来讲异步fifo怎么设计。

单比特信号跨异步时的维持时间要求

这个我笔记上一直记是:
Tcapture + Tjitter + Tsetup + Thold + T损失
含义分别是目的使用周期,目的时钟最大抖动,目的时钟建立时间,目的时钟保持时间,传输损失。但是我一直有点不太理解,对于Tcapture + Tjitter + TThold这三个时间我觉得很清晰,要保证目的始终不漏采确实需要满足,但是Tsetup为什么需要包含在其中呢,我自己感觉不加这个时间也不会导致漏采的吧,没太想清楚。还有就是损失的这个时间应该如何计算,我也不太明白。
因此,通常的做法是源脉冲信号大于Tcapture + 2ns(目的时钟为高频时钟)或大于2Tcapture(目的时钟为低频)。

同步器采样点禁止动态门控

异步传输中存在时序不确定性,因为不同信号的到达时间可能不同,或者在传输过程中可能发生抖动。因此,在异步传输的场景下,动态门控可能导致采样点的不确定性,使得同步器采样到的信号不准确,从而可能导致错误的数据处理。
在芯片设计中,通常需要满足一系列的时序约束,以确保数据在特定的时间窗口内到达目的地。动态门控可能导致时序约束无法满足,因为它会引入不确定的延迟,从而影响同步器的采样时刻。为了保证时序约束的满足,同步器的采样点通常会禁止动态门控,以确保在固定的时刻进行采样。

系列文章入口——

【芯片设计】SoC 101(一):绪论
【芯片设计】FIFO漫谈(零)从无处不在的FIFO开始说起
【芯片设计】计算机体系结构(一)虚拟内存

【芯片设计】深入理解AMBA总线(零)绪论

【芯片设计】握手协议的介绍与时序说明
【芯片设计】复位那些小事 —— 复位消抖
【芯片设计】快速入门数字芯片设计(一)Introduction
【芯片验证】UVM源码计划(零)下定决心读源码前的自测环节
【芯片设计】异步电路碎碎念(一) 到底什么是异步电路
【芯片设计】从RTL到GDS(一):Introduction
其他文章链接——
【芯片验证】sva_assertion: 15道助力飞升的断言练习
【芯片验证】可能是RTL定向验证的巅峰之作
【芯片验证】RTL仿真中X态行为的传播 —— 从xprop说起
【芯片验证】年轻人的第一个systemVerilog验证环境全工程与解析
【芯片设计】verilog中有符号数和无符号数的本质探究
【芯片设计】论RTL中always语法的消失术
【芯片设计】代码即注释,注释即代码
【芯片设计】700行代码的risc处理器你确实不能要求太多了
入职芯片开发部门后,每天摸鱼之外的时间我们要做些什么呢
如何计算系统的outstanding 和 burst length?
芯片搬砖日常·逼死强迫症的关键词不对齐事件
熟人社会里,一群没有社会价值的局外人


芯时代青年
专心数字前端全流程,芯时代有为青年的自我修养
 最新文章