问答

汇集网友智慧,解决技术难题

21ic问答首页 - 在SOC设计中和FPGA使用verilog有什么区别?

FPGA verilog SoC设计

在SOC设计中和FPGA使用verilog有什么区别?

chenai1592021-01-28
在SOC设计中使用verilog,和FPGA为对象使用verilog,有什么区别?
回答 +关注 19
4125人浏览 1人回答问题 分享 举报
1 个回答
  • 首先说明,关于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就是输出一个版图文件,告诉代工厂该怎么去腐蚀硅片,该怎么连金属等等。


您需要登录后才可以回复 登录 | 注册