模拟技术学习
直播中

从未拥有

9年用户 934经验值
擅长:可编程逻辑 电源/新能源 光电显示
私信 关注
[问答]

SOC设计与验证流程是什么?

为什么verilog可以描述硬件?
在SOC设计中使用verilog,和FPGA为对象使用verilog,有什么区别?
SOC流程和FPGA流程的不同之处在哪里?

回帖(1)

李淑英

2021-6-21 14:25:56
  1、SOC设计前端流程
  随着SoC的设计逐渐庞大,SoC从设计到验证的诸多流程有待探索。
  一本系统性的书籍还是挺好的,推荐书籍:《SoC设计方法与实现》郭炜著:下载链接,《UVM实战》:下载链接
  2、为什么verilog可以描述硬件?
  verilog只是把硬件对应逻辑块的功能用软件的形式给模拟出来了。然后用这个verilog代码工程,来仿真整个SOC系统。仿真验证通过后,才到真正制定威廉希尔官方网站 这一步。
  对这个问题疑惑的话,是因为SOC流程还没弄懂。不知道SOC威廉希尔官方网站 是怎样出来的。知道这个问题的答案,就知道verilog在SOC设计中的定位了。
  3、在SOC设计中使用verilog,和FPGA为对象使用verilog,有什么区别?
  首先说明,关于RTL级的verilog代码,只是行为级描述,对功能的实现而已。所以,不管最后是用于设计SOC,还是用于FPGA,这和RTL级verilog代码的编写,没有绝对关系。
  但是还是稍微会有点差别:比如:1、FPGA的verilog代码中,可以对变量赋初值,但是SOC中,这种就不行。2、不同家族的FPGA,写代码时,会有不同家族的verilog代码规范;3、同一RTL级verilog代码,不可能在任意FPGA上跑,多多少少都要更改一点。能复用的是IP core,但是FPGA本身结构关系,自身也有由Xlinx或者Altera发布的IP core,在Vivado或者Questios中起作用。这些FPGA例化的IP core,是会随着不同FPGA的不同而不同的。(其实这一段有20%瞎猜的成分,需要进一步验证)
  不过RTL级verilog代码,就威廉希尔官方网站 功能实现这一块,不管是FPGA还是SOC都是一样的。所以,有时FPGA里面的验证例子能够给我们一个很好的参考。
  换句话说,在FPGA上使用过的RTL级verilog代码,稍微改一下是可以拿过来做SOC芯片设计。不同点在于,在FPGA上时,对verilog代码处理的工具和方式,和与设计SOC时,对verilog处理的工具和方式,有所不同。并且SOC设计,还要考虑面积,功耗,布线等等这些问题。(其实FPGA和SOC的RTL级verilog代码的编写,是完全相同的:从框架设定,功能划分,到功能实现。只是FPGA包含一些固定结构(这些固定架构被包含在了框架设计中),而SOC更加依赖框架)
  关于SOC开发和FPGA开发,一些区别。这个知乎回答挺棒的,推荐:SOC开发和FPGA开发,流程的一些区别。
  从网上介绍的FPGA开发流程,以及SoC设计方法与实现(第二版)书中提到的SOC设计流程,我们可以发现,SOC设计,和FPGA的开发,其实前端流程是一样的。因为不管是SOC设计还是FPGA开发,都是对硬件的描述。而SOC是多了后端设计,包括具体的面积,布线,功耗等等,而FPGA的后端设计,是被综合到软件里面去了,比如Quartus或Vivado。
  在前端设计,基本的流程是:先有一个针对特定软件(e.g. CNN)的功能架构,以及对应的更小模块的功能架构。功能架构划分好后,用verilog进行功能实现(在这一步里面有IP core知识),然后验证并生成威廉希尔官方网站 图。例子:1、MIT的Eyeriss神经网络加速器,verilog的实现:Eyeriss论文、Eyeriss代码 2、Georgia Institute of Technology (佐治亚理工学院),美国三大理工院校之一,针对DNN的FPGA解决方案:DNNweaver,verilog实现:DNNWeaver论文、DNNWeaver代码
  在设计好后,FPGA对应下的,就是输出一个配置文件,告诉FPGA芯片该怎么样去配置其威廉希尔官方网站 ,使其实现预期功能。该文件可以在FPGA上电之后再由PC下载进去,也可以保存在Flash里,威廉希尔官方网站 上电之后自动配置。而SOC/ASIC就是输出一个版图文件,告诉代工厂该怎么去腐蚀硅片,该怎么连金属等等。
  4、SOC设计和FPGA开发这么像,那有什么区别呢?FPGA的代码例子,是不是都可以拿去流片?
  是的,用于FPGA的代码例子,理论上都可以用于SOC设计,并拿去流片,因为verilog的代码就是硬件描述语言。至于为什么不拿去流片,是因为流片除了要对硬件相关东西的限制考虑外(面积、功耗、布线、成本等等),把这个东西拿到工厂流一次片太贵了。如果有1K+/月的需求量,可以考虑去流片。不然只需要用FPGA上去顶一下就可以了。
  至于SOC流程和FPGA流程的不同之处
  第一点:工具集的不同。
  SOC设计及验证的工具集是:1、SOC流程对对应的工具、2、SOC开发和FPGA开发,流程的一些区别(很细致)、3、ASIC/SOC开发工具集及流程
  FPGA程序设计的工具集是:FPGA的是集成开发环境。如英特尔家族的Quartus II、赛灵思家族的ISE或Vivado。不同FPGA厂商对自家FPGA板提供软件支持。1、FPGA工具,以及为什么只有Intel和Xlinx两大家族的FPGA板;2、FPGA工具及学习路线;3、FPGA的一些经验和流程。这些集成开发环境,包含从代码编辑、编译、仿真验证、布局布线到最后生成FPGA可识别的配置文件,这些所有流程。
  第二点:使用频次不同
  FPGA可以高频次的擦写,有些特定的威廉希尔官方网站 ,用FPGA更合适,因为SOC流一次片太贵,流片了又只用一次会很浪费;而FPGA实现了该威廉希尔官方网站 ,用过一次后,该FPGA可以下载其他配置文件,再进行其他操作,多么经济的选择。
  5、软件安装
  1、Ubuntu系统下Synopsys VCS DC PT安装文件下载及破解方法
  2、带有VCS、ICC、DC和ICFB等软件的Redhat
  3、一个小时搞定VCS安装。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分