今天讲一个非常简单的设计思想,这个东东也是IC设计方法里的基本矛盾之一:模块划分与overdesign。

模块划分乃是IC设计最基本也最经典的概念之一。该步骤出现在芯片架构设计之初。多方设计人员一起讨论,决定要做什么功能,各个功能究竟要做到什么程度。然后将整个芯片切分成多个逻辑清晰的子模块,决定由谁来实现各个子模块,通常伴随着一些嘴仗跟讨价还价。讨论结束之后,每个人就会大致清楚自己要实现什么功能,然后双方会写作接口文档和自己模块的功能定义及大致框图。再接下来,各方进一步确定接口的信号名、位宽以及操作时序。最后开始各自独立研发,coding自己的模块。

模块划分允许多个IC设计人员同时协作,不需要考虑接口以外别人会怎么做,而只需要考虑自己的模块怎么做就行。毫无疑问,提高了工作效率。

但是并不一定会提高设计质量,因为它会带来overdesign的问题。

什么是overdesign?就是过度设计,IC设计人员因为不了解与之对接的模块是怎么coding的,也不关心对方是怎么coding的,导致很多情况下,考虑了过多的可能性,而把自己的设计搞得过于复杂。明明可以优化的地方,没有做到优化;明明不需要的东西,却增加了上去。

模块划分是很经典的概念,搞IC设计的人都知道,教科书也爱讲。但是没有人讲overdesign,因为这并不是一个经典的概念,也没有引起该有的重视。

很可惜的是,overdesign是很容易发生的事情。IC设计人员倾向于只在乎自己的功能模块,一旦接口定义完之后,就不会考虑对方会怎么做,只需要对方提供恰当的接口时序,对于对方的内部的行为不闻不问。

一个很常见的现象,就是IC设计人员在写作自己的模块的时候,会倾向于用很多buffer,而非实时处理。我先收到对方的内容,然后buffer住,这样我可以有更大的设计自由度决定何时处理。因为设计人员对对方模块没有精确的预期,不确定对方模块能否立即回应,多久回应,并且不愿冒风险假设对方模块会何时回应,所以更倾向于假设无论对方何时回应我都能够处理,这样自己的模块才更加strong。设计人员会认真考虑很多边界情况,即便这些边界情况不会发生,他也会做到自己的design里面去以防万一。

这些overdesign现象,主要原因是因为我们不了解对方的内部设计,有些时候又懒得沟通,深挖细节,所以采用一种保险稳妥的设计方案。有时候会导致,明明双方可以并行的地方,我们做不到并行,明明不需要的资源,我们无谓的加了上去。有时候对方给我们一根内部信号就能解决我们的控制难题,我们因为不知道对方有这个信号,所以自己兜兜转转费大量精力才搞定。

所以,在设计架构定义完成之后,每个设计者在对自己的模块有了深入细致思考之后,其实还需要一个设计步骤,双方需要再次开会,确定设计中有哪些可以压缩的地方,有哪些重复设计或者过度考虑的地方。这个会议的存在将会对整体架构进行一次优化,达到更高的设计水准。

简单来说,有两次会议非常重要。一次是在架构定义之初,各方开会决定怎么做模块划分,并对各个模块的功能有一个基本的讨论。另一次是各方对自己的模块进行了深入到RTL层的细致思考之后,再开一次会,确定各方的细致架构合在一起有什么冗余或者低效的地方,进行架构优化。两次会议,一次为“分”,一次为“合”,才是最合理的设计流程。

当然,很多团队并没有开第二次会议的习惯,如果有的话,你会惊讶于overdesgin的现象有多么普遍,也会惊讶于搞设计的人有多么闭门造车。

欢迎大家关注我的微信公众号:半导学社。

模块怎么用_IC设计方法:模块划分与overdesign相关推荐

  1. 学习软件测试(三)测试用例、测试用例的设计方法(等价类划分法、边界值分析法、判定表法、因果图法、正交排列法、场景法、错误推测法)

    目录 测试用例 测试用例八大要素 测试用例的设计方法 等价类划分法 等价类操作步骤 边界值分析法 边界范围 边界值法的操作步骤 案例1 案例2 判定表法 为什么使用判定表法 判定表法的四个组成部分 判 ...

  2. 软件测试用例设计方法-等价类划分法

    本篇文章,来分享大家比较熟悉的测试用例设计方法--等价类划分法. 首先,我们可以使用上一篇文章介绍的场景法来梳理业务流程. 其次,根据流程中的每个节点的需求说明,使用等价来划分来设计用例. 定义 等价 ...

  3. 软件测试 通用技术03 测试用例 黑盒测试用例设计方法 等价类划分法 边界值分析法 判定表法 场景法 功能图法 其他用例设计方法 用例设计方法综合选择

    文章目录 1 测试用例 1.1 测试用例的定义 1.2 测试用例模板 1.3 测试用例模板的内容 测试用例编号 测试项 依赖用例 测试步骤 测试数据 预期结果 测试结果 测试人 备注 2 测试用例编写 ...

  4. 测试用例的定义、内容以及设计方法——等价类划分法、边界值分析法等

    文章目录 1.什么是测试用例? 2.测试用例模板和包含的内容 3.设计测试用例的作用 4.测试用例编写注意事项 5.黑盒测试用例设计方法 5. 1 等价类划分法 5.2 边界值分析法 5.3 因果图法 ...

  5. 测试用例设计方法---等价类划分法

    1 等价类划分法 1.1 定义 是把所有可能输入的数据,即程序的输入域划分策划国内若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例.方法是一种重要的.常用的黑盒测试用例设计方法 ...

  6. 黑盒测试用例设计方法-等价类划分法

    目录 一.等价类的作用 二.等价类的分类 三.等价类的方法 四.等价类的原则 五.按照测试用例的完整性划分等价类 六.等价类步骤 七.案例 一.等价类的作用 为穷举测试设计测试点. 穷举:列出所有的可 ...

  7. 测试用例设计方法-等价类划分

    等价定义 具有相同属性或方法的事务的集合 这个集合中某个个体所表现的特征与其他个性完全相同 对于某个测试对象的测试输入而言,某个个体能够被接受或被拒绝,则该个体所在集合中的任意个体都应该被接受或被拒绝 ...

  8. 功能测试笔记PART2-测试用例设计方法与实战【等价类划分、边界值、因果图判定表、正交实验法】

    如何设计软件设计[测试用例设计] 一.测试设计与测试用例 测试设计:将概括的测试目标转化为具体的测试条件和测试用例的一系列活动. 测试分析和设计的主要任务: 评审测试依据 (需求.系统架构.设计.接口 ...

  9. vba 定义类_类模块的定义及设计

    你已选中了添加链接的内容蓝字关注,加微信NZ9668获资料信息  VBA解决方案   系列丛书作者  头条百家平台 VBA资深创作者 _______________________________ ( ...

最新文章

  1. python常用变量名_python基础知识整理
  2. 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面
  3. python啥意思-星号*在Python中是什么意思?
  4. Thread.Join()用法的理解
  5. 输入回车时结束循环python_python-用户输入退出以在循环时中断
  6. win10 + Terminal + WSL+ oh-my-zsh 配置漂亮实用的windows终端及配置ubuntu不加.exe打开windows程序
  7. mysql和mongodb存储时间_MongoDB存储时间
  8. matlab如何判断矩阵中元素都大于0_在MATLAB中找到矩阵中零元素的数量
  9. 4.1 API : MultinomialNB、GaussianNB、BernoulliNB
  10. linux img提取文件系统,Linux系统获取开发板的文件系统并打包成img文件
  11. vs各个版本的编译器号
  12. CentOS7安装无线网卡驱动和更新yum源
  13. 数仓建模—表设计规范
  14. C#串口通信——协议格式
  15. 荣事达Royalstar无叶暖风机——功能逻辑与能耗分析
  16. 计算机专业为什么不用amd,为什么网吧电脑很少用AMD处理器?
  17. [284]python使用execjs执行js
  18. java毕业设计物资租赁管理系统mybatis+源码+调试部署+系统+数据库+lw
  19. Lesson 49 At the butcher's
  20. 电脑CPU使用率过高怎么办

热门文章

  1. AIX-vi操作-提示Unknown terminal type的问题解决方法
  2. Ubuntu12 10下安装JDK7
  3. 抽象工厂模块在开发中的应用
  4. u-boot 详细介绍 .
  5. android sh 指令_Java/Android中实现Shell命令
  6. 学生社团网站html,学生社团活动平台的设计与实现.docx
  7. c语言生命游戏代码大全,c++生命游戏源码
  8. python模拟鼠标拖动滑块_如何通过拖动滑块来控制Kivy滚动视图?
  9. 最大流自用模板(例题:HDU1532)
  10. 第一个Django应用程序_part1