计算机领域有一句名言:“计算机领域的任何问题都可以通过增加一个间接的中间层来解决。”
举个例子:cache,通过层次化的存储结构折中解决存储成本-大小-速度问题。寄存器离核最近,速度最快,但是成本也最大。其次是L1 cache、L2 cache、L3 cache、然后是主存,最后是磁盘。
又举个例子:操作系统页表机制。通过硬件存储管理单元解决实际物理寻址空间远小于业务地址空间的问题,同时简化软件编写,使得软件编写人员无需关注实际硬件物理地址存放问题(多核除外)。
又双举个例子:ASIC设计流程。现在SoC芯片越来越复杂,从而导致ASIC芯片研发涉及太多的东西。一个工作很多年的工程师也不能够把所有的内容吃透。为了让刚走出校门的应届生入职即可上手芯片研发,就需要将ASIC研发流程“中间层”化,将工程师螺丝钉化。
又双叒举个例子:UVM验证平台。同样是各司其职的道理,验证需要完成激励的发送、结果比对、参考模型、覆盖率收集等等工作,将这些需要完成的工作组件化,标准化,验证人员就可以将主要精力花在测试用例的编写上。
上面是一些比较大的框架,听起来很空,但又是事实,即“通过一个合理的、统一的结构将复杂事务分为治之是解决工程问题的最有效方式。”
UVM中组件driver、monitor、checker就是一个无限循环,最能够展示这种“中间层”艺术的莫过于sequencer-sequence-driver之间的协同工作机制了,关于这个点可以简单读下文章
《You Are In a Maze of Twisty Little Sequences, All Alike – orLayering Sequences for Stimulus Abstraction 》
其实这对我们的日常工作也是具有启发的,也就是“大事化小,小事化了”,最核心的就是处理“大事化小”的方式,what?when? how?
我悟了一点点,你呢?
原文链接:https://mp.weixin.qq.com/s/ixe9ZpBZwq2dd9IjIAR2ig
授权转自数字芯片实验室公众号,请勿二次转载。
推荐阅读
更多数字IC设计技术干货等请关注数字芯片实验室专栏。