社区目前已经开设了下面列举的前四大数字后端实战课程,均为直播课,且均是小编本人亲自授课!遇到项目问题,都可以远程一对一指导解决具体问题。小编本人是一线12年后端经验的数字后端工程师。想找一线IC后端技术专家亲自带你做后端实战项目的同学,可以私信。
社区第四期复杂时钟设计Clock Gen时钟树综合训练营将于10月19号正式开班!超小班教学,星主亲自授课!
本期包含两个复杂时钟clock gen设计,即在原来clock gen设计项目的基础上另外再加入一个更复杂的clock gen设计(包含1000 clock +)。
复杂时钟设计时钟树综合(clock tree synthesis)常见20大问题
CRG全称是Clock &Reset Generator。所以它包含两大部分,一部分是时钟产生电路,另外一部分是时钟复位电路。下方为小编画的一个SoC芯片中CRG的思维导图。作为一名资深的IC后端工程师还是需要对这里面的Clock Generator有一定的了解。我们可以不用自己去写各种时钟产生电路的代码,但一定要对这些电路结构有所了解。这样才比较有利于我们做时钟树综合。
数字IC后端时钟树综合专题(OCC电路案例分享)
对于时钟复位和咱们数字后端工程师相关的就是在做时序检查timing signoff时会看到recovery和removal的timing问题。
一般来说整个SoC芯片的CRG设计是由相对比较资深的IC前端设计工程师来完成的。并且他们还会整理出整个设计的时钟结构框图。对于设计中存在分频的点必须明确在文档中指出,以免出现后续写时序约束SDC遗漏时钟的情况。
下图所示为咱们社区复杂时钟结构clock gen设计时钟树训练营项目的时钟结构图。咱们每个学员都可以根据design的netlist轻松画出来如下所示的时钟结构图。
社区新一期复杂时钟Clock Gen时钟树综合训练营将于10月份正式开班!本期将在原来项目的基础上再增加一个1000+个clock的项目。
下图为一个典型的SoC芯片的时钟结构图。这里展示的部分均为Clock Generator。
整个芯片的时钟源头为外部晶振输入的32K或24MHz。这个外部时钟通过IO送给芯片中的各个PLL锁相环,经过图中的各个Clock 开关Switch(ICG),再经过分频电路和无毛刺时钟切换电路,最终送给各个数字和模拟IP(局部也会送到IO作为时钟观测用)。
【思考题】下图为一个典型的时钟结构设计,我们应该如何来做时钟树综合?CTS Constraint需要怎么写?
写这个CRG时还需要和DFT工程师沟通好mbist,occ时钟的结构(不同OCC属于异步关系)。如果这里设计不合理会导致后续timing完全收敛不了。经常会出现scan测试模式hold violation特别大,其根本原因是时钟结构不合理,长tree过程是完全按照异步来做,但最终时序检又是同步的。这种情况的timing signoff一定会让你崩溃的。
下图所示为一个典型的OCC电路,这里面包含三路时钟,分别是fast_clock,slow_clock和ijtag_clock。针对这种OCC电路,我们在做时钟树综合时必须把不相干的clock隔开开,否则会出现IP和OCC Controller中的寄存器tree被拖长的情况。
芯片Tapeout前到底应该如何来做signoff?
数字IC后端时钟树综合专题(OCC电路案例分享)
Lockup latch的用法,看这个就够了
【惊呆了】你居然还在用flatten方式进行timing signoff
所以做大型SOC芯片必须要有相对比较懂后端概念的前端工程师和懂得分析时钟结构的后端工程师。这两个条件具备了,我们就可以把后续timing signoff可能遇到的问题提前规避掉。特别是大型走hierarchy flow的设计,前期没有做flatten timing时可能还看不到时钟拼接起来的问题。
关于异步复位同步释放的内容,有兴趣的同学可以查看小编2018年写的这篇文章。深度揭秘异步复位同步释放原理
异步复位同步释放原理