在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 41800|回复: 89

[原创] 说说芯片设计这点事 (未完)

[复制链接]
发表于 2012-7-8 09:43:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 vista2002 于 2012-12-25 20:53 编辑

自己写了点东西,做了个提纲性的总结, 没写完, 希望高手能指正或更详细一点

芯片设计这个行当 ,从大的方面讲,主要分模拟和数字两大块, 而每大块又分前端和后端, 我想大部分同学对这个肯定是非常清楚的, 下面就数字电路聊聊芯片设计的一些事情,就是芯片设计有哪些活做, 这并不是全面完整的系统介绍,只是个人的了解和总结, 希望抛砖引玉,也许不全面, 不正确, 欢迎同学们指正和补充

说到数字芯片,不能不说FPGA, 这种是可编程的数字电路, 用法原理也不说了, 数字电路设计的目标,就是把这些功能,做成我们自己专用的asic/SOC, 这样无论面积, 成本或者安全性等等都能有保证


   从流程上讲, 数字芯片设计的大致步骤就是系统与功能定义,RTL实现 验证, 综合及可测试性设计(synthesize , DFT ), ATPG仿真, 时序分析, 到自动布局布线(APR). 直至交付fabGDS网表.


这个流程是可以反复迭代的, 当对于不同类型芯片, 如纯数ASIC或混合电路(mix-signal及系统级芯片(SOC), 每一步的方法和具体实施流程上可能又有所差异.下面就这些基本流程分步谈一些主要问题。

系统设计主要设计到功能定义及架构设计, 总线架构的配置,模块设计,数据流的分配, 时钟的设计等问题。总线包括模块之间,模块与MCU核之间,或者外部主机和芯片之间通信,或者测试需要等等一系列因素。 时钟涉及到数据流的规划, 通信接口或内部MCU的时钟约定,工艺条件,功耗等因素。模块需要明确接口和定义。

在系统级设计上, 特别是很多数模混合电路中或对功耗有特别要求的电路中,还要有电压域的设计,不同模块之间,功能模块和接口之间可能都需要根据工艺条件,功耗要求设置不同的电压。

无论是时钟,还是电压,都可以通过控制开关来实现功耗的要求,时钟实现比较简单,在大部分电路中都可以实现这种时钟控制,电压控制一般是实现在集成有电源管理芯片的较大规模芯片上。但未来趋势是即使没有电源管理芯片,电压的gating也需要纳入考虑范围。

SOC系统设计上,一个重要的环节是MCU 内核的选型,现在常用的内核一般是arm, 较老的ARM7, Arm9等系列,较新的是三大系列cortex A , R, M, 具体的用途不做详细诉述,选定好后核需要根据需要进行设置,一般做硬件的人不需要对它的指令集了解太多,但是需要了解它的总线接口,数据总线,指令总线,以及存储系统的设计,一般需要安排ROM RAM分别作为指令和数据存储器,由于ROM是不可更改的,一般也需要加入flash作为补丁程序写入地。也可能需要外部存储器或者DMA控制器来增加外部存储空间。地址的分配是按照功能需要来进行的,现在有很多工具如synopsysDesignKits可以产生外部总线代码及进行地址分配。

          第一步完成系统和功能定义后, 就要实施的就是RTL实现, RTL是专门描述硬件电路的工具语言, verilogVhdl, RTL的特点就是硬件上的同时触发性,不同于软件的按顺序执行, 电路有时序逻辑和组合逻辑组成, 时序逻辑在物理构成上就是一些寄存器,这些寄存器受时钟控制, 寄存器代表了电路中数据或控制信号, 这些信号受时钟的驱动流动. 组合逻辑是不受时钟控制的电路块, 组合逻辑顾名思义,通过一些信号的组合直接生成一些逻辑结果。



      RTL
设计中,一大问题是异步设计问题,异步数据的处理根据不同情况有很多方式, 最简单的,如果对异步的电平信号, 可以直接在新的时钟域中加2级寄存器来隔离,避免不定态的发生. 当如果对于总线的处理, 或者脉冲的处理, 则需要同步模块, 同步模快一般是指需要握手信号,就是前一级时钟告诉采样的时钟,信号ok, 采样的第二个时钟再去采,采好后再告诉前一级时钟,我搞定了,那样前一级时钟就可以换数据或其他处理.
有一种情况就是前一级时钟太快, 造成第二级来不及,则需要加入fifo作为隔离, 就是让那些数据先放好, 我在慢慢来取. 这个FIFO的设计涉及到读写地址的判断,写满或读空都需要做相应处理, 读写地址之间的判断只能在其中一个时钟域中进行, 这本身又涉及异步信号的处理问题,这一般用格雷玛解决, 或者有些地方直接可以判断地址高位, 这些方法的目的就是不能让地址在比较的时候不稳定.


RTL
设计中时钟本身的设计问题也要注意, 我们在一个芯片中, 尽量把时钟产生电路放在一块,主要是从综合, DFT的角度去考虑的, 让这些时钟统一管理和约束。 时钟的分频,切换也要专门处理,否则容易产生毛刺等事情。

RTL设计中还有很多需要注意的问题,比如可综合性, 还有要考虑到电路的面积, 以及响应速度等等, 这些问题是RTL coding的基础问题


代码写完后,需要进行的是验证工作, 下面谈谈这方面的事情

sina微博 紫腾IC设计培训

发表于 2012-7-8 12:37:29 | 显示全部楼层
坐个沙发,学习一下;谢谢分享
发表于 2012-7-8 17:01:07 | 显示全部楼层
学习了, 期待~
发表于 2012-7-8 20:41:35 | 显示全部楼层
感谢指教!
发表于 2012-7-8 21:56:05 | 显示全部楼层
写得不错,求下方
发表于 2012-7-8 22:37:49 | 显示全部楼层
谢谢楼主分享~做数字的飘过~
发表于 2012-7-9 00:25:07 | 显示全部楼层
谢大神指点
发表于 2012-7-9 01:22:17 | 显示全部楼层
做个标记,慢慢学习
发表于 2012-7-9 08:27:42 | 显示全部楼层
写的不错,希望楼主继续啊
发表于 2012-7-9 09:29:35 | 显示全部楼层
受教了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-29 13:38 , Processed in 0.052915 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表