SoC 设计流程

1. 软硬件协同设计

软硬件协同设计指的是软硬件的设计同步进行,在系统定义的初始阶段两者就紧密相连。这种方法使软件设计者在硬件设计完成之前就可以获得软件开发的虚拟硬件平台,在虚拟平台上开发应用软件,评估系统架构设计,从而使硬件设计工程师和软件设计工程师联合进行 SoC 芯片的开发及验证。这样并行设计不仅减少了产品开发时间,同时大大提高了芯片一次流片成功的概率。具体流程如图2-1所示。

1.1 系统需求说明

将用户的需求转换为用于设计的技术文档,并初步确定系统的设计流程

1.2 高级算法建模与仿真

确定流程后,使用如 C 和 C++等高级语言创建整个系统的高级算法模型和仿真模型,进而得到软硬件协同仿真所需的可执行的说明文档。此类文档会随着设计进程的深入而不断地完善和细化。

1.3 软硬件划分过程

这一环节包括软硬件划分和任务分配,是一个需要反复评估和修改直至满足系统需求的过程。通常,有些功能既可以用软件实现也可以用硬件实现,这取决于所要达到的性能指标与实现的复杂程度及成本控制等因素。

1.4 软硬件同步设计

硬件设计包括 RTL 设计和集成、综合、布局布线及最后的流片。
软件设计则包括算法优化、应用开发,以及操作系统、接口驱动和应用软件的开发。

1.5 硬件系统测试

首先测试子模块的正确性,接着验证子模块的接口部分及总线功能,然后在整个搭建好的芯片上运
行实际的应用软件或测试平台。

2. 基于标准单元的 SoC 芯片设计流程


ECO修改是工程修改命令的意思。当在设计的最后阶段发现个别路径有时序问题或逻辑错误时,有必要对设计进行小范围的修改和重新布线。ECO修改只对版图的一小部分进行修改而不影响到芯片其余部分的布局布线,这样就保留了其他部分的时序信息没有改变。

物理验证是对版图的设计规则检查(DRC,Design Rule Check)及逻辑图网表和版图网表比较(LVS,Layout Vs. Schematic)。DRC用以保证制造良率,LVS用以确认电路版图网表结构是否与其原始电路原理图(网表)一致。LVS可以在器件级及功能块级进行网表比较,也可以对器件参数,如MOS电路沟道宽/长、电容/电阻值等进行比较。

3 基于 FPGA 的 SoC 设计流程

3.1 典型的 FPGA 设计流程

在这里插入图片描述

3.2 面向 SoC 的 FPGA 设计流程


图2-8所示的面向SoC的Xilinx FPGA设计流程是一个软硬件协同处理和设计的过程。软件流程完成C语言程序的编写、编译和链接过程。硬件流程完成HDL设计输入、仿真、综合和实现过程。EDK提供了一个Data2MEM(该工具仅对软核Microblaze有效)工具,将C语言程序生成的ELF文件插入到生成的FPGA比特流文件中,将其生成能够下载到FPGA并能启动的映像文件。通过上述过程,设计人员能够使软件开发和调试进行实时处理,而不需要额外的时间开销。最后,通过Xilinx的JTAG技术,完成FPGA下载和调试,C语言程序下载和软件调试。此外,如果最终的设计无法满足设计要求时,需要进行迭代设计,对SoC软件部分以及硬件部分进行修改,直到满足设计要求为止。

3.3 面向高层次综合的 FPGA 设计流程

随着摩尔定律的发展, SoC 系统正在演化的越来越复杂,而 C 语言及其衍生语言,如 SystemC 和 Matlab 有着更广泛的资源,更全面的开源算法库(如 OpenCV 等)以及更加庞大的开发人员团队。如果将手工硬件设计的复杂度大幅降低,将会有更多的资源和人力加入到硬件设计的行列,推动硬件设计的发展。正是基于上述因素,推动了高层次综合的发展。
高层次综合特指将行为级或更高层次的描述转化为RTL级别的描述。以Xilinx的高层次综合为例,它是将C语言及其衍生语言(如SystemC等)或更高层次描述语言(如Matlab)转换为RTL级别的描述。基于高层次综合技术,SoC设计不再是从硬件设计上着手,而是从系统层面上开始设计,它涵盖了软硬件系统设计和仿真的概念,也被称为系统综合。

图2-9所示为Xilinx公司采用了高层次综合技术后的SoC FPGA设计流程。该流程与传统的软硬件协同设计类似,首先需要根据应用设计整个系统功能,通常使用高层次语言来描述,如C、SystemC、Matlab等。然后,需要根据系统和各功能模块的性能和资源需求,进行软硬件的划分,即将描述系统的C程序分解为将作为软件运行在处理器上的C程序和将要转化为硬件的C程序。
与传统SoC FPGA设计最大的不同在于,传统上将C程序转化为硬件,需要手工编写RTL代码完成。但基于高层次综合技术后,将借助高层次综合工具,如Xilinx Vivado HLS,将C程序自动转化为与之对应的RTL描述,这将大大降低设计难度,提高设计效率,缩短产品的上市时间。通过高层次综合生成的硬件(通常需要带有特定接口,如在Zynq中的AXI接口)需要完成单独的验证,并将其集成到整个系统当中去。被划分到软件的部分,需要为硬件部分设计软件接口,如果涉及操作系统,还需要设计相应硬件协处理器的驱动程序,这样软件才可以顺利调度所设计的硬件协处理器。最后,需要将软硬件联合到一起进行仿真和调试。如果性能及所占FPGA资源等参数满足设计的要求,那么设计完成;如果不能满足设计要求,则还需返回之前的步骤进行重新设计,比如,重新进行软硬件划分、重新设计硬件和优化软件等。

本文参考——《SoC设计方法与实现》,郭炜著。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值