大家好我是木林!由于个人的比赛和项目问题已经有连续一个多月没有真正的静下心来去输出一些内容了,接下来由于项目问题或许时间会更少,虽然只有十几个粉丝 也是感觉对不住大家当然目前我已经有两个完成的项目了,这两个项目呢一个是单片机方面的一个是基于FPGA实现的SOC系统在接下来的时间我会特别写两篇博客详细讲述这两个项目并且免费开源代码。那么今天这篇博客就来讲述一下我最近以半年投入的我认为将来会迎来很大发展的方向RISC-V。本博客也是站在一个入门者的角度去概述一些RISC-V内容。好了闲话不多说。发车!
其实那大家想了解RISC-V你要从本质上知道到底什么是处理器什么又是CPU core
那么我们习惯性的举例来说。现在世界上主流的PC端CPU是什么呢,这个几乎所有人都知道 Intel 旗下的X86系列对吧,因为这类的芯片你几乎是生活中不可能离得开的比如由intel的腿子
AMD研发的酷睿系列几乎是每台电脑上都会有的。那么现在我们手机端的主流CPU是什么呢这个或许知道的人少一些这个说来话长,简单理解是由于ARM公司的商业模式造成的
其实那我们手机端用的CPU几乎都是基于ARM公司的A系列处理器核生产的比如高通骁龙系列,海思麒麟系列。好的上面罗嗦了这么多是时候总结一下来了Intel能够独霸PC端与服务器端CPU市场主要是依赖其旗下的X86指令集,ARM公司现在可以称呼其为英伟达,因为他已经被英伟达收购了
能够独霸手机移动端与嵌入式端主要是依赖其ARM指令集。那么我们今天讲的这个RISC-V从应用角度讲它和ARM,X86是同样的概念。
RISC-V是由加州伯克利分校出生的,这个大学很厉害几乎读一本书就会听一次这个学校的名字
那么他的出生那也是十分的奇葩的一个原因就是因为教授们想要做一个SOC系统竟然找不到一个合心的指令集,于是就决定自己做一个指令集。所以RISVC-V就诞生了,其实由于ARM与X86的存在起初RISC-V并没有如此大的影响力,而且虽然X86属于CISC系列,但是ARM和RISC-V是同同宗同源的同属于RISC系列。所以RISC-V能够走到今天这一步真的是意料之外情理之中
其实慢慢的我或许也就理解为什么RISC-V变得那么招人待见了简便的说就两个原因。
大道至简:这里说的是RISC-V的设计理念。RISC-V本着实用与简便的设计思想以及其后发优势都导致了该款指令集相对于其他两款的主流指令集有着得天独厚的优势。就目前发展来看由于X86本身属于CICS系列并且又由于其不断地向前兼容的问题都导致其设计规模只会越来越大而不会越来越小,从摩尔定律的角度所以前景并不是那么光明,而ARM本身是一款很好的指令集这是不可否认的,但是由于目前已经被英伟达收购,那么他的发展一定就会受到政治因素的制约(当然我们只谈技术不谈政治),那么以后再去使用ARM或许就不仅是授权的问题了。
免费最好:那么相较于以上两钟我们反观RISC-V,RISC-V自从2010年首次公布初稿又在2013年成功的成立RISC-V基金会自此RISC-V将以全面开源的形式出现,出现之后其精简超前的设计思想就深深的打动了各国工程师。2018年RISC-V开始在中国兴起狂潮华为中兴相继投入研究。被卡脖子或许是一件好事情,因为RISC-V从此要在中国生根发芽了。
有很多人认为设计CPU是一件很高端而且触不可及的,其实并不是这样的CPU设计复杂是因为其设计流程所涉及到的领域宽泛,那么我们仅仅的依靠数字前端使用硬件描述语言VERILOG或者VHDL去描述一个CPU并在FPGA上面仿真实现出来其实并不复杂。那么我们来说说整个CPU设计的流程吧。
1、 规格制定
芯片规格: 芯片需要达到的具体功能和性能方面的要求
2、 详细设计
就是根据规格要求,实施具体架构,划分模块功能。
3、 HDL编码
使用硬件描述语言(vhdl Verilog hdl )将功能以代码的形式描述实现。换句话也就是说将实际的硬件电路功能通过HDL语言描述起来,形成RTL代码(使用cadence软件)
4、 仿真验证
仿真验证就是检验编码设计的正确性,仿真验证工具Mentor公司的Modelsim,Synopsys的VCS,还有Cadence的NC-Verilog均可以对RTL级的代码进行设计验证?(使用Cadence或Modelsim或Synopsys的VCS等软件)
5、 STA
Static Timing Analysis(STA),静态时序分析,属于验证范畴,它主要是在时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例(violation)。一个寄存器出现这两个时序违例时,是没有办法正确采样数据和输出数据的,所以以寄存器为基础的数字芯片功能肯定会出现问题。(Synopsys的Prime Time)
6、 形式验证
是验证范畴,它是从功能上(STA是时序上)对综合后的网表进行验证。常用的就是等价性检查方法,以功能验证后的HDL设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。这样做是为了保证在逻辑综合过程中没有改变原先HDL描述的电路功能。(形式验证工具有Synopsys的Formality)
从设计程度上来讲,前端设计的结果就是得到了芯片的门级网表电路
Backend design flow后端设计流程:
1、DFT
Design ForTest,可测性设计。芯片内部往往都自带测试电路,DFT的目的就是在设计的时候就考虑将来的测试。DFT的常见方法就是,在设计中插入扫描链,将非扫描单元(如寄存器)变为扫描单元。关于DFT,有些书上有详细介绍,对照图片就好理解一点。(DFT工具Synopsys的DFT Compiler)
2、布局规划(FloorPlan)
布局规划就是放置芯片的宏单元模块,在总体上确定各种功能电路的摆放位置,如IP模块,RAM,I/O引脚等等。布局规划能直接影响芯片最终的面积。(工具为Synopsys的Astro)
3、CTS
Clock Tree Synthesis,时钟综合,简单点说就是时钟的布线。由于时钟信号在数字芯片的全局指挥作用,它的分布应该是对称式的连到各个寄存器单元,从而使时钟从同一个时钟源到达各个寄存器时,时钟延迟差异最小。这也是为什么时钟信号需要单独布线的原因。CTS工具,(Synopsys的Physical Compiler)
4、布线(Place & Route)
这里的布线是指普通信号布线了,包括各种标准单元(基本逻辑门电路)之间的走线。比如我们平常听到的0.13um工艺,或者说90nm工艺,实际上就是这里金属布线可以达到的最小宽度,从微观上看就是MOS管的沟道长度。(工具Synopsys的Astro)
5、寄生参数提取
由于导线本身存在的电阻,相邻导线之间的互感,耦合电容在芯片内部会产生信号噪声,串扰和反射。这些效应会产生信号完整性问题,导致信号电压波动和变化,如果严重就会导致信号失真错误。提取寄生参数进行再次的分析验证,分析信号完整性问题是非常重要的。(工具Synopsys的Star-RCXT)
6、版图物理验证
对完成布线的物理版图进行功能和时序上的验证,验证项目很多,如LVS(Layout Vs Schematic)验证,简单说,就是版图与逻辑综合后的门级电路图的对比验证;DRC(Design Rule Checking):设计规则检查,检查连线间距,连线宽度等是否满足工艺要求,ERC(Electrical Rule Checking):电气规则检查,检查短路和开路等电气规则违例;等等。工具为Synopsys的Hercules实际的后端流程还包括电路功耗分析,以及随着制造工艺不断进步产生的DFM(可制造性设计)问题。物理版图验证完成也就是整个芯片设计阶段完成。
7、物理版图以GDSII的文件格式交给芯片代工厂(称为Foundry)在晶圆硅片上做出实际的电路,
8、再进行封装和测试。
上面我所加粗的步骤就是我们自己在设计一个CPU所需要做的步骤
CPU的工作的主要步骤由如下几个部分
1,取指:所谓取指就是提取指令,因为在处理器核里只认识指令你所写的代码到最后也会编译成机器能够识别的指令。
2,译码:就是根据当前的指令内容解析出具体的唯一的指令,并且确定所涉及的寄存器以及是读是写。
3,执行:这个就不必多解释了,就是将指令对应的操作(加减跳转之类的)
4,回写:就是吧处理完的数据回写进寄存器或者内存里面。
这些其实就是简单的CPU设计的整体流程。因为目前我所设计的CPU采用三级流水线较为简单。总体来说我可能连入门还算不上,所以有纰漏或者错误的地方还望多多指正。我的CPU还没有 设计完。等项目完工我将会放在我的Github仓库上面。届时还望大家多多给与建议。
那么看完这篇博客相信大家或许也是似懂非懂,所以我这里有一个群聊大家可以加进去有问题可以交流:366475079。接下来我会在项目和比赛空闲时间发布CPU设计相关的例程demo和设计经验心得
我记得我想时候有一个梦想就是做一块中国人自己的全世界独一无二的芯片,那时候感觉很遥远。几乎连老师都是不会相信的,但是现在我想告诉曾经迷茫的自己,那个梦想我真实的摸到了。马云不是 说过一句话吗,梦想还是要有的万一实现了呢?
好的我是木林学长技术水平有限,如有错误欢迎批评指正:[email protected](本人会在闲暇时在嵌入式,集成电路,物联网互联网方面发布自己经验与心得,喜欢可以关注。谢谢。)
预告下一篇《CPU设计:黎明前的黑暗取指工作》。