模块怎么用_IC设计方法:模块划分与overdesign

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

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

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

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

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

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

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

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

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android常用类库包介绍

为什么80%的码农都做不了架构师?>>> 在Android 类库中,各种包写成android.*的方式,重要包的介绍如下: android.app:提供高层的程序模型、提供基本的运行环境。 android.content:包含各种的对设…

android调用系统相机图片不旋转,Android 处理调用系统相机生成的被旋转图片

主要通过获取EXIF信息进行设置:public static int readPictureDegree(String path) {int degree 0;try {ExifInterface exifInterface new ExifInterface(path);int orientation exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_…

fastdfs 吗 支持windows_主流开源文件存储系统-fastdfs是否支持windows?你可以选择minio...

首先答案是肯定的,fastdfs不支持windows。 其次建议你使用Minio一、引言一般来说文件存储花钱就选择阿里云oss、七牛云等产品,开源的话,目前开源的分布式文件存储系统非常多,上网一搜 "Ceph,GlusterFS,Sheepdog,L…

SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛* B. 我觉得海星 bitset

B. 我觉得海星 题意&#xff1a; 一个无向图&#xff0c;判断是否含有五元环。T 组数据&#xff0c;n 个点。 T<100, n<200 。 tags&#xff1a; 一开始想 dfs&#xff0c;发现搞不出来。赛后听大佬们bb&#xff0c;原来可以 bitset 水过去 。 bitset<1000> bit[i]…

Android电视关闭的闪屏动画效果

老式电视机关闭的时候画面一闪消失的那个效果&#xff1a; 首先创建一个TVOffAnimation继承于Animation&#xff1a; 首先创建一个TVOffAnimation继承于Animation 然后在initialize里面设置一些参数import android.graphics.Matrix;import android.view.animation.Accelerat…

python怎么清除代码_Python如何清空列表?清空列表的4种方法(代码示例)

通过Python语言提供的不同构造的方法可以有许多方法来清空列表&#xff0c;下面本篇文章就来给带大家介绍Python中4种清空列表的方法&#xff0c;希望对大家有所帮助。方法1&#xff1a;重新初始化列表可以重初始化列表&#xff0c;初始化该作用域中的列表时&#xff0c;将不带…

SocketServer源码学习(二)

SocketServer 中非常重要的两个基类就是&#xff1a;BaseServer 和 BaseRequestHandler在SocketServer 中也提供了对TCP以及UDP的高级封装&#xff0c;这次我们主要通过分析关于TCP的处理逻辑来对SocketServer模块进行一个很好的理解和学习 TCPServer TCPServer 继承了BaseServ…

Yum命令解析

Yum配置文件位于/etc/yum.conf和/etc/yum.repos.d/CentOS-Base.repo目录下 使用yum时注意&#xff1a;必须使用root身份来执行yum&#xff1b;yum配置文件内的镜像站点必须能与自己进行网络连接&#xff1b;镜像站点越近&#xff0c;带宽越大越好&#xff0c;方便下载。 [rootl…

430f149有几种封装类型_高速光调制器的发展与封装技术研究

共读好书汪冰 黄平 杨磊摘 要&#xff1a;文章分析了100 Gbps(以下简称100 G)以太网光通信光调制器及其封装的技术发展动向&#xff0c;对比分析了10 G/40 G/100 G高速光调制器及其封装的结构特点。通过对高速光调制原理的浅析&#xff0c;论述了40 G/100 G高速光调制器在100 …

异常:没有找到本地方法库,java.lang.UnsatisfiedLinkError: no trsbean in java.library.path

1.问题描述 迁移环境中遇到这个问题 : Fri Apr 20 15:22:31 CST 2018, Exception:500004___-500004,没有找到本地方法库,java.lang.UnsatisfiedLinkError: no trsbean in java.library.path 1 Fri Apr 20 15:22:31 CST 2018, TRSException:500004___-500004,没有找到本地方法库…

js将docx转换为html,js 将word转换Html

WalkingPoisons Word-to-HTML sample Click the "save" button to save the file "C:/test.doc" to "C:/test.htm":

vsftp账号_Linux入门-CentOS7安装vsftp

前言vsftpd是用于类Unix系统(包括Linux)的FTP服务器。那怎么搭建呢&#xff1f;请看下文在CentOS7 64位进行安装。为了调试顺利&#xff0c;关闭selinux&#xff0c;防火墙iptables一.yum安装vsftp# yum -y install vsftpd二.启动服务# systemctl start vsftpd.service三.配置文…

android n模拟器,BlueStacks推出Android N模拟器

原标题&#xff1a;BlueStacks推出Android N模拟器IT之家1月23日消息&#xff0c;相信有不少玩家都有过在电脑上玩手游的经历&#xff0c;打怪升级这类游戏在操作似乎还是交给键盘和鼠标比较高效&#xff0c;电脑端体验安卓游戏自然就要用到模拟器了&#xff0c;但是尴尬的是似…

为UIKeyboardTypeNumberPad增加自定义按键

在 iPhone 上面開發應用程式時, 在使用輸入鍵盤時, 或多或少都會遇到客制化鍵盤的問題, 這邊筆者以簡單的數字鍵盤來示範客制化的動作. 這部份我想網路上已經有不少 sample code , 但大部份基本上都是以 SDK 3.x 的版本去實作, 以"特定寫法"來實作客制化在 iOS4 會有…

Unity 内建数据索引

看到多少补多少 顶点输入类型 UnityCG.cginc Line:58 struct appdata_base {float4 vertex : POSITION;float3 normal : NORMAL;float4 texcoord : TEXCOORD0;UNITY_VERTEX_INPUT_INSTANCE_ID };struct appdata_tan {float4 vertex : POSITION;float4 tangent : TANGENT;float…

车载安卓中控改鸿蒙,教你改装车子中控安卓大屏,看一遍你就会了,改完后低配秒变高配...

因为我这个车子年代比较久了&#xff0c;所以没有中控大屏&#xff0c;需要导航的时候我都是把手机放在出风口支架这个地方&#xff0c;这种磁吸的支架有时候过减速杠一震动就掉下来了&#xff0c;我又不想在上面粘什么东西&#xff0c;所以干脆就花几百块钱买了一个能够插手机…

pip 删除安装包_Python中PIP的快速指南

无论您是Python新手还是有经验的Python开发人员&#xff0c;不使用pip安装命令是不可能编写或开发Python应用程序的。在这篇文章中&#xff0c;我将对Pip进行详细介绍。Pip是Python Package Manager的缩写。当您在系统上安装python时&#xff0c;它附带了一组预定义的包&#x…

海量数据前N大

最大堆即大根堆 -- 求前n小最小堆即小根堆 -- 求前n大比如求前n小&#xff0c;对于当前元素&#xff0c;和最大堆的堆顶元素&#xff08;即堆最大值&#xff09;比较&#xff0c;如果小于堆顶元素&#xff0c;则替换堆顶元素&#xff0c;并调整堆。这样扫描一遍就可以得到最小的…

react项目在ie空白解决

先安装babel-polyfill npm install babel-polyfill --save 2.在入口文件(main.js)最上方将其import进来 import babel-polyfill // 下面是别的代码&#xff0c;不需要动 import Vue from vue import App from ./App转载于:https://www.cnblogs.com/lcosima/p/8893799.html

元素不包括_干货 | FDA法规对元素杂质的限度控制及计算方法

元素杂质又称重金属&#xff0c;重金属原义指比重大于5的金属&#xff0c;元素杂质包括可能存在于原料、辅料或制剂中&#xff0c;来源于合成中催化剂残留、药品生产制备过程中引入或辅料中存在的、生产设备引入、或容器密闭系统引入。某些元素杂质不仅对药品的稳定性、保质期产…