从这篇文章开始,我会以一个从材料转行IC验证的人,一个纯小白的角度,更新在转行验证这一路我所接触的一些概念性的问题,以作为抛砖引玉之用。如果是科班,这些概念可能在我们求学阶段就应该烂熟于心了,所以我们后期也要加强学习,赶上他们。
一直以来都有很多人问我,SOC是什么?FPGA怎么样?嵌入式又是什么?和ASIC又有什么区别?这些问题够我更新很久的了,希望接下来,我能把这些问题都讲清楚。我也在持续学习的过程当中,如果有说得不对的地方,欢迎留言批评指正。
SOC是我转行IC验证之后接触的第一个概念,说实话,在我转行入职的时候,对于硬件,我完全没有什么概念,压根不知道什么是SOC。有的概念可能你目前也不知道,所以我推荐一本唐朔飞老师写的《计算机组成原理》,这本相对于我之前推荐的那本,会更加简单一点。
SOC,是System on Chip的缩写,翻译过来就是系统级芯片,也有称片上系统。既然是系统,单个就称不上系统,只有多个个体的组合才能称之为系统,所以,SOC强调的是一个整体。用“麻雀虽小五脏俱全”来形容SoC,再确切不过了。SoC是模仿计算机系统,微缩成了一个微系统。在我接触过的SOC芯片中,硬件的大概的组成是:核心(core),存储,外设接口(高速外设和低速外设),总线,中断模块,时钟模块等。在验证阶段,这些都是用verilog代码实现的,你是看不到实体的。先简单说一下这几个的概念,以后再逐一展开。核心类似于计算机中的CPU(中央处理器),包含多个小模块,存储分为很多种,像SRAM,DRAM,ROM之类的;外设接口可以理解为芯片对外的通信接口,与外界交互的接口;总线就像一根藤,而核心、存储、外设就像挂在藤上的葫芦娃,总线是这些“葫芦娃“交流的窗口。
SOC是一个整体的概念,再细化一下,便到了每个模块。在一个SOC成型之前,设计工程师用verilog代码把每个模块敲出了,粗略进行模块级的验证,在模块级验证通过之后,会通过总线把各个模块集成在一起。目前来说,应用比较广泛的总线协议是AMBA总线,包括AXI,ASB,AHB,APB,我在工作中最常接触到的就是AXI和APB,前者主要是挂一些高速的核心外设,DDR之类的,APB主要是挂一下低速的外设,先大概了解一下,以后再细讲。“挂”概念就是,通过例化把相互间的信号线连在一起。国内很多公司的“葫芦娃”并不是自己“长”的,都是从国内外一下专门做IP的公司买的IP,也就是模块,然后把这些IP,集成到一起,组把“葫芦娃”都挂在藤上,成一个SOC芯片。默认情况下,这些IP都是好的,所以这类公司的验证工程师干的活就是验证连接性,也就是验证集成是否正确,功能是否达到。这种对包括核心、外设、总线和存储等的验证,这也就是系统级的验证。当然,并不是所有的模块都是买,也有一些小的模块是可以自己写的。
看到这里,不知道你对SOC的概念,有没有多一点理解,希望对你有帮助,如果对你有帮助,麻烦点个赞。我是不二鱼,欢迎关注我。