今天给大家聊一聊芯片后端的两种设计思路:展平式设计(flatten)和层次化设计(hierarchical)。其实在很多工程项目中应该都有类似的设计方法学,对于芯片设计来说也不例外,这两种设计思路决定了我们的芯片将会如何物理实现。
展平化的设计方法是一种自下而上的设计思路,这种设计方法会一下子导入所有芯片中所需要的元件,而每个元件都要经过充分的验证,确保各个元件的功能无误。而后将所有这些原件组合,构成整个芯片系统。工程师在设计的时候,可以随意调动任意一个原件,也就是说所有元件都是看得到的,没有所谓的黑匣子。其实大家就可以单纯地理解为就是可以看到芯片所有内容的完整的设计。
层次化的设计方法是一种自上而下的设计思路。对于前端设计来说,它会首先分析整个芯片要实现的功能,而后划分(partition)为不同的功能模块(block),在划分的时候只关心每个模块的输入输出,不考虑模块内部具体是怎么构成的。之后再考虑每个模块要如何设计,模块的设计也可以分为展平化和层次化,最终最低一级的模块一定是要展平化设计的。对于后端实现来说可以完全遵循前端给的划分好的block,但如果前端给了展平式的网表,后端同样可以划分不同的block来做,这样对后端来说也是层次化设计。对于每个block,都会划分出它自己的netlist、sdc、lef、lib、upf等等。每位工程师可以负责单一的一个block,在block内部进行展平化设计,保证时序收敛,没有DRC等等&#x