想一次性流片成功 ASIC设计中这些问题不可忽视
不到的结果。例如:
例1:
这个代码在RTL级仿真时是不会有任何问题的,其中潜在的问题留待后面讨论。
2.2同步设计和跨时钟域数据传输
尽管异步系统有很多优势,如低功耗,也没有同步系统中让工程师头疼的时钟分布以及skew问题,但是其复杂的各种握手协议,以及异步电路在测试上的困难,使得同步系统还是数字电路设计的首选。同步设计的一个特点就是所有的时序单元都是对统一的时钟边沿敏感。要使整个芯片只采用一个时钟并不现实,因此,异步时钟域之间的数据传输以及其中的一些问题将是本节讨论的重点。
通常,为了能够更好的综合和STA,需要对设计进行划分,一般的原则是将异步时钟域之间有数据交换的部分独立出来单独处理,其他的模块都在单一的同步时钟域中工作。对于这些模块如何在综合过程中特殊处理在下面的章节中讨论,本节主要讨论在代码设计中需要考虑的问题。
异步时钟之间的亚稳态(Metastability)问题,亚稳态主要是由于被采样数据的变化十分靠近采样时钟的边沿引起的,这样接收(采样)触发器的输出就是亚稳态,并在传输过程中发散而引发逻辑错误,也就是通常所说的同步失败。在同步时钟域中的这种问题是Hold问题,可以通过EDA工具或插入buffer消除,因为EDA工具可以检测到这种问题。那么在异步接收设计中通过两级Flipflop来消除这种可能出现的亚稳态。现在也有工具检测代码中可能出现的亚稳态问题。多位接收控制信号之间的skew引起的问题如图1,如果其中一位如C2延迟大于C1,Ck采样的数据就变成了C2=1,C1=0,如果按照无skew传输的波形是C2’的样子,应该是00才对。而skew是不可避免的,可能是由于C2C1信号的Launch时钟本身的skew引起,也可能是传输延迟引起。对于简单的情况,我们可以通过简化逻辑,尽量让控制信号是1位宽。而这样的问题同样出现在多位宽的数据接收情况。这时通常推荐使用异步FIFO接收,或者通过握手协议接收。有的系统设计数据交换协议约定,异步接收过程中,当某个事件发生后(如图1中采样到V信号为1后)的1个Cycle后(也可以约定多个Cycle)数据肯定是正确的;也可以消除这种skew问题,但是,这种实现需要后端设计时保证这些相关信号的skew不会超过约定的周期,同时发送方的数据也要保持足够的周期数。如图1中C2"信号,如果skew2>Period(一个CKCycle),则收到V信号一个Cycle后采样数据还是错误的。
2.3复位策略
复位信号中最主要的问题是Removal,也就是要保证所有的触发器必须在同一节拍内离开Reset状态,另外,Reset信号完成的时刻不能与时钟边沿太靠近,以防止触发器进入亚稳态(Metastability)。同步复位和异步复位各有利弊,很难说哪种更有优势。除了在编码风格时讲到的一个问题,在这里再对两种策略中可能出现的问题进行分析说明。
同步复位有一个好处就是复位的时刻发生在时钟的边沿,这样可以防止复位信号的Glitch。如果是内部生产的Reset信号,就必须保证Reset脉冲有足够的宽,至少2个Cycles,能够让时钟采样到。同时,这也是它的缺点,因为它需要一个活动的时钟,在加电时无法对一些电路产生复位。另外,综合可能把同步复位的逻辑移到触发器的D输入端,作为普通的信号处理,由于Reset信号通常有传输负载和延迟,这样处理会导致DataPath上较长的延迟。
异步复位的最大好处就是不需要活动的时钟,对于一些需要加电复位的电路,如总线,是很必要的;同时,不像同步复位那样,复位信号会被用作D端的输入逻辑,使得整个DataPath非常干净。如果异步复位有Glitch可能使芯片进入复位状态,这时可以通过两级DFF接收Reset,再通过tree给复位触发器使用,这样可以消除输入引起的Glitch,如果设计中有多个时钟域,可以对每个时钟分配两个DFF接收Reset信号。
2.4门控时钟
GatedClock主要的优点在于能够降低功耗面积,也可以简化逻辑从而提高频率。在编码时需要考虑无Glitch的门控信号设计。同时,在DFT设计时,由于触发器的时钟是前一级逻辑的输出(其他派生时钟也有同样的问题),为了测试这类触发器,需要为时钟增加一级Mux,在正常工作模式下,采用派生时钟,在扫描测试时采用正常的时钟。门控时钟的主要问题出现在综合、CTS插入以及STA分析的时候,在后面将进行特别的分析讨论。
2.5总线实现
在这里只讨论总线实现的方式,不涉及总线的协议。在设计总线时将面临着两种基本方式的选择,是采用三态总线还是采用多路选择结构的总线。在全定制设计时,设计者似乎更喜欢采用三态,
ASIC 相关文章:
- 安森美半导体配合中国消费类医疗市场趋势的半导体方案应用案例研究(07-20)
- 人工智能实现的流派 FPGA vs. ASIC看好谁?(08-27)
- 基于Xilinx Spartan-6 FPGA加速纹理映射的实现(09-08)
- 基于VHDL和CPLD的智能数字电压表设计(10-09)
- 浅谈降低100G系统功耗的六大关键技术(02-26)
- 赛灵思应用解决方案:ASIC原型与仿真(02-14)