想一次性流片成功 ASIC设计中这些问题不可忽视
导读: ASIC的复杂性不断提高,同时工艺在不断地改进,如何在较短的时间内开发一个稳定的可重用的ASIC芯片的设计,并且一次性流片成功,这需要一个成熟的ASIC的设计方法和开发流程。
ASIC的复杂性不断提高,同时工艺在不断地改进,如何在较短的时间内开发一个稳定的可重用的ASIC芯片的设计,并且一次性流片成功,这需要一个成熟的ASIC的设计方法和开发流程。本文结合NCverilog,DesignCompile,Astro等ASIC设计所用到的EDA软件,从工艺独立性、系统的稳定性、复杂性的角度对比各种ASIC的设计方法,介绍了在编码设计、综合设计、静态时序分析和时序仿真等阶段经常忽视的问题以及避免的办法,从而使得整个设计具有可控性。
1基本的ASIC设计流程
ASIC设计流程可以粗分为前端设计和后端设计,如果需要更细的划分,可以分成如下几个步骤:
1.包括系统结构分析设计、RTL编码以及功能验证;
2.逻辑综合、PreLayoutSTA以及形式验证(RTL代码与逻辑综合生成的Netlist之间);
3.Floorplan、Placement、ClockTree插入以及全局布线(GlobalRouting)
4.形式验证(逻辑综合的Netlist与带有CT信息的Netlist之间)、STA;
5.DetailedRouting,DRC;
6.PostlayoutSTA,带有反标延迟信息的门级仿真;
7.Tape-Out
当然,这还是一个比较粗的流程,其中每个步骤还可以分得更细,通常所说的前端设计主要包括上述流程中的1,2,4,6这几个部分。同时,这个流程是一个迭代的过程。对于一些通常的问题以及其中的一些方法,已经有大量的文献中提到,本文将不再赘述,因此本文着力于讨论在设计各个阶段中一些容易被忽视的或者可能带来潜在危险的地方。
2结构分析设计、RTL编码
这一阶段在整个ASIC设计中占非常重要的地位,结构分析设计阶段主要是从产品的功能定义出发,对产品采用的工艺、功耗、面积、性能以及代价进行初步的评估,从而制定相应的设计规划,对于规模很大的ASIC设计,在这一阶段估算芯片的功耗面积非常困难。
在这里引入一个ASIC设计中很重要的概念:划分(Partitioning),在不同的设计阶段这个概念都将提到。首先,必须在芯片的Top-1级进行功能划分,Top-1级通常可以分为4个大的功能模块,IOPads、边界扫描逻辑、核心功能逻辑,以及PLL时钟模块,然后再对核心功能逻辑依据功能进一步细化。核心功能部分将是RTL编码设计的重点部分,下面就这一部分展开说明。
2.1良好的编码风格
编码风格对芯片的正确性、可读性、可维护性以及综合后芯片的性能、面积都有很大的影响。自然,对于编码中遇到的所有问题一一阐述不是一篇论文所能做到的,下面只对一些经常遇到的可能产生错误的地方进行重点说明。
无论从可重用设计的角度还是代码仿真行为与实际芯片的行为一致性的角度来说,采用工艺独立的设计是必要的,一些工程师在编码时可能用到一些延迟单元或者延迟线,来生成一个脉冲来操作,由于延迟单元对温度、电压以及制造工艺敏感,这些因素的改变也会改变生成的脉冲的宽度,因此,可能在仿真的时候没有问题,或者在某些操作条件下没有问题,而实际芯片工作时或者工作条件改变时芯片就没有按照设计目标工作了。
在RTL级编码时应该尽量避免采用例化标准单元门的方式编码,这不仅降低代码的可读性,当采用新的单元库或者新的工艺时,这些代码就需要反复的修改,综合工具也不会对这些代码进行逻辑优化。
其他问题如:由于没有对所有的条件分支赋值引起潜在的Latch问题、always块中的敏感列表问题,以及阻塞赋值与非阻塞赋值的选择问题很多文献中都提到,就不再赘述。下面提到一个容易被忽视的问题,在定义时序块时,有些信号是需要复位的,有些不需要复位,如果编码时把它们写在一个always块中,综合出来的电路就不是我们设想的。对于那些不需要复位的信号,综合后可能把复位信号连到对应的触发器使能端,这样导致RTL代码和Netlist的行为不一致,而这类问题在形式验证时也没法发现,需要通过大量的门级仿真才可能发现。
ASIC设计应该尽量避免采用Latch作为时序单元,Latch设计潜在的问题,如:如果使能输入端有Glitch,就会导致锁存噪声数据。或者你能够保证数据稳定时间可以包住使能信号,可你很难保证在使能关闭的瞬间D输入端没有Glitch,尤其在接收总线数据的时候。同时,Latch设计还带来STA和DFT的困难,而采用触发器的设计,通过Setup/Hold时间的检查报出这些问题。因此,尽管Latch设计有面积、低功耗等方面的优势,由于这些潜在的风险使得设计变得不可控,因此不推荐使用。
尽量避免把时钟当作信号使用,在RTL验证时不会出现什么问题,但是,如果在后端设计的时候忽略了对这些点的时钟skew控制,就会产生意想不到的结果。例如:
例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分析的时候,在后面将进行特别的分析讨论。
- 华为成国内IC设计第一:麒麟处理器立功 2018-04-14
- 美光发布企业级microSD卡:专为视频监控设计,24×7不间断读写 2018-04-12
- 芯智汇科技语音拾取ADC荣获2018中国IC设计成就奖年度最佳产品奖 2018-04-03
- 日本TDK收购欧洲ASIC大厂ICsense 强化定制IC设计服务 2017-03-30
- 汽车电子EMC汽车系统ASIC、ASSP和电磁兼容性(EMC)设计 2016-07-12
图片新闻
- 即日-5.15 【有奖问答】 NI半导体测试应用有奖问答 立即参加>>
- 即日-6.16 【有奖问答】泰科电子传感器及医疗应用解决方案 下载白皮书>>
- 4月26日 泰克开放日与专题巡回研讨会 立即报名>>
- 5月8日 Dialog GreenPAk混合信号技术研讨会 参会有礼>>
- 5月16日 2018首尔半导体LED巡回技术研讨会-上海站 立即登记>>
- 5月16日 OFweek2018(第四届)中国工业自动化及机器人在线展会 立即报名>>
- 电子工程
- 猎头职位
- 视觉工程师广东省/深圳市
- 技术研发总监广东省/深圳市
- 高级电气工程师广东省/深圳市
- 封装工程师北京市/海淀区
- 光模块结构工程师(无锡)江苏省/无锡市
- 光模块光学工程师 (无锡)江苏省/无锡市
- 光器件物理工程师北京市/海淀区
- 销售总监(光器件)北京市/海淀区
- 电路设计工程师(金华市)浙江省/金华市
- 结构工程师(金华市)浙江省/金华市
我来说两句
请输入评论
请输入评论/评论长度6~500个字
暂无评论
暂无评论