1、flatten
展平化的设计方法是一种自下而上的设计思路,这种设计方法会一下子导入所有芯片中所需要的元件,而每个元件都要经过充分的验证,确保各个元件的功能无误。而后将所有这些原件组合,构成整个芯片系统。工程师在设计的时候,可以随意调动任意一个原件,也就是说所有元件都是看得到的,没有所谓的黑匣子。其实大家就可以单纯地理解为就是可以看到芯片所有内容的完整的设计。
2、hierarchical
层次化的设计方法是一种自上而下的设计思路。对于前端设计来说,它会首先分析整个芯片要实现的功能,而后划分(partition)为不同的功能模块(block),在划分的时候只关心每个模块的输入输出,不考虑模块内部具体是怎么构成的。之后再考虑每个模块要如何设计,模块的设计也可以分为展平化和层次化,最终最低一级的模块一定是要展平化设计的。对于后端实现来说可以完全遵循前端给的划分好的block,但如果前端给了展平式的网表,后端同样可以划分不同的block来做,这样对后端来说也是层次化设计。对于每个block,都会划分出它自己的netlist、sdc、lef、lib、upf等等。每位工程师可以负责单一的一个block,在block内部进行展平化设计,保证时序收敛,没有DRC等等,而后由一位工程师在top层将所有block联系起来,最终做到整个chip功能正常。
3、优缺点
展平化设计的优点是可以看到chip中所有cell的信息,更容易做时序收敛,出现的violation也相对更好解。缺点是这种方法对于大型design来说,计算量过大,而且人员不好分配,很难充分利用资源,导致设计周期偏长。要知道芯片设计中,在保证良率的同时也要追求速度,当然这些都是资本的考量了。
层次化设计最大的优点就是可以并行处理多个block,可以充分利用公司资源,大大减少了设计周期。然而需要在partition初期就对block进行充分的预估,做好timing的余量(timing budget),可能会出现有些block好做,有些block难做的情况,甚至一些block无法做到时序收敛。这个时候就需要重新调整分配,或者进行局部的重新综合。而最终signoff的时候也是要flatten的看结果,相对比较复杂一些。
4、实例
有些block,是属于hierarchy block,跑pt的时候有两种mode,top only和flatten。
芯片后端:flatten和hierarchical
最新推荐文章于 2025-03-04 13:53:34 发布