从SOC谈谈硬件中的“复用”与软件中的“复用”
title: ISP PIPELINE 概述
date: 2024-11-18 23:13:33
categories:
tags:
@TOC
前言
进公司,做项目过程中肯定会碰到很多技术点,总结一下,以供后面参考学习,查看。肯定大家都有一定差异啦,大家作为参考哦,与诸君共勉。
一、软件中的复用思想
如果说你问一个码农,你怎么理解“代码复用”嘞,可能他会说:面向对象【继承、多态】、封装成一个方法、一个接口、一个工具类、一个服务、一个模块……,咱们大概总结一下:
1.复用的概念和重要性:
- 概念:复用是指在不同的软件系统中,对已有的软件元素(如代码、模块、框架等)进行再次使用,而不是每次都从头开始开发。
- 重要性:复用可以减少开发成本、缩短开发周期、提高软件质量,并且有助于维护和扩展软件系统。
2.不同层面的复用
- 代码层面的复用
- 函数/方法复用:将常用的功能封装成函数或方法,可以在多个地方调用。
- 类库复用:开发通用的类库,提供给不同的项目使用。
- 代码片段复用:使用代码片段管理工具,如代码片段库,复用代码模板。
- 设计层面的复用
- 设计模式复用:应用已有的设计模式,如单例模式、工厂模式等,解决特定设计问题。
- DRY原则(Don’t Repeat Yourself):避免重复代码,是代码层面复用的核心原则。
- 开闭原则:软件实体应对扩展开放,对修改封闭,这是设计层面复用的重要原则。
- 单一职责原则:每个模块、类或函数应该只有一个引起变化的原因,这有助于提高复用性
- 架构复用:在不同的项目中复用相同的软件架构,如MVC、微服务架构等。
- 设计模式复用:应用已有的设计模式,如单例模式、工厂模式等,解决特定设计问题。
- 模块层面的复用
- 模块化设计:将软件系统分解成模块,每个模块负责特定的功能,可以在不同的系统中复用。
- 组件化开发:开发可复用的软件组件,如UI组件、业务逻辑组件等
- 框架层面的复用
- 框架选择:选择成熟的框架,利用框架提供的功能和架构,减少开发工作量。
- 框架扩展:在框架的基础上进行扩展,添加定制化的功能。
- 服务层面的复用
- 微服务复用:将通用的服务(如用户管理、支付服务)设计成微服务,供多个应用复用。
- API复用:提供RESTful API、GraphQL等接口,供不同的客户端复用。
- 复用的最佳实践
- 文档和示例:为复用的组件提供详细的文档和使用示例,方便其他开发者理解和使用。
- 版本控制:对复用的组件进行版本控制,确保不同项目使用的是兼容的版本。
- 质量保证:对复用的组件进行严格的测试,确保其稳定性和可靠性。
二、SOC中的复用思想
随着芯片性能越来越强,规模越来越大,设计复杂度迅速增加。此外,市场对产品设计周期减短的要求越来越高。那怎么办呢?IP复用被认为是最有效的方案,用以解决当今芯片设计工业界所面临的难题
1.IP:重复使用预先设计并验证过的集成电路模块,称为IP。
- 2005年基于IP的集成电路设计已达到近80%。
- IP的设计与验证也需要考虑很多,比如可移植性、可测试性,也必须经过功能、时许、物理布局等验证。
- IP是可重复使用的集成电路模块
- IP是在单个硅片上集成处理器、存储器、I/O端口及模拟电路等,实现一个完整系统的功能。
- IP指一种事先定义,经验证可以重复使用的,能完成某些功能的组块。
- 在集成电路行业里,IP通常是指硅知识产权(Silicon Intellectual Property),即IP核。
2.IP的分类从设计流程方面区分:包括软IP、固IP和硬IP
- 软IP:以HDL文本形式提供,经过编译,可以下载到FPGA或ASIC中进行验证。
- 软核(Soft IP):在逻辑IC设计的过程中,IC设计者会在系统规格制定完成后,利用Verilog或VHDL等硬件描述语言,依照所制定的规格,将系统所需的功能写成寄存器传输级(RTL,Register Transfer Level)的程序。
- 固IP:以掩膜形式提供,已经完成了综合和布局布线,但是并没有进行最终的工艺制造。
- 固核(Firm IP):RTL程序经过仿真验证(Simulation)后,如果没有问题则可以进入下一个流程——综合(Synthesis),设计者可以借助电子设计自动化工具(EDA),从单元库(Cell Library)中选取相对应的逻辑门,将RTL文件转换成以逻辑门单元形式呈现的网表(Netlist)文件,这个网表文件即所谓的固核。
- 硬IP:以掩膜形式提供,已经完成了所有的设计步骤,可以进行批量生产。
- 硬核(Hard IP):网表文件经过验证(Verification)后,则可以进入实体设计的步骤,先进行功能模块的位置配置设计(Floor Planning),再进行布局与布线设计(Place & Routing),做完实体的布局与布线后所产生的GDSII文件,即称为硬核。
- 从差异化的程度来区分IP,可将其分为基础IP(Foundation IP)、标准IP(Standard IP)和明星IP(Star IP或Unique IP)3种类型。
3.基于平台的SoC设计方法。基于平台的设计方法是一种新型的SoC设计方法学,旨在解决基于IP核的设计方法在满足市场需求方面的局限性。
- 平台是一种比IP规模更大的可重用、可扩展复用单元。平台包含了IP、软件、开发工具和其他相关组件。
- 基于平台的设计方法可以解决IP复用存在的问题,使IP更易于集成到整个系统当中
- 平台提供了统一的接口和工具,使得IP可以更容易地集成到整个系统当中。
- 平台提供了可重用的软件组件,可以加速软件开发过程。
- 平台提供了可扩展的架构,可以支持不同规模和复杂度的SoC设计。
4.下面借用SOC设计与实现中的一个例子,看下基于平台的设计实例:
假设要开发基于ARM核的嵌入式实时系统,主要应用在如汽车控制、工业控制等领域。
- 根据应用的需求,首先从众多ARM核中选择某一适合于控制类应用的型号,如ARM7 TDMI。
- 然后进行总线结构的选择。针对ARM核,ARM公司提供了多种总线结构,如APB、AHB、AXI等。这时要进行评估多大的总线带宽才能满足设计要求,而同时又不会消耗过多的功耗和片上面积。
- 假设通过评估最后选择的系统总线是AHB,外设总线是APB。
- 对于这个SoC,硬件模块除处理器核与总线架构外,还需要其他常用的模块,如存储模块、时钟产生模块、复位控制模块、定时器模块及UART等。模块间通过总线进行通信。
- 在初步的系统结构确定后,各个模块的接口与之对应的总线接口的标准来决定。该结构采用两层片上总线作为其基本框架,系统总线上连接高速、高带宽的设备,如处理器核,片上存储器等;外设总线上一般连接低速、低带宽的设备,如时钟、复位模块和其他外设。这种方式可以减少系统总线的负荷,提供系统的性能,这种结构也是目前SoC的典型结构。
- 由于采用的是基于ARM核和AMB总线通信的平台,设计者可以从ARM公司或有关ARM IP供应商那里得到关键IP模块的行为级描述模型、验证模型、软硬件IP及系统集成环境,进而可减少设计时间。ARM核模块和存储器模块在前端设计中通常采用行为级描述,这样可以大大提供仿真速度。虚线框模块是验证IP模块,总线功能模型(BFM,Bus Functional Model)是激励产生模块,而监视器(Monitor)是响应检查模块,它们不是系统芯片的基本组成部分,没有可综合的限制,一般在仿真时加入。加入这些验证IP组件后,实际上形成了一个系统级的验证环境,它不但可以对新加入的模块进行集成验证,同时也可以对整个SoC进行验证。在基本的平台形成后,要进行基于平台的SoC系统结构的验证,保证平台的功能正确。
- 对于软硬件开发工具,如硬件仿真器、软件的编译器等,一般是从相应公司的产品中选取。在这个基于ARM核的平台设计实例中,同样可以方便地从ARM公司及其合作伙伴那里得到相应的软硬件开发工具。软件模块主要是实时操作系统、功能驱动等。ARM公司提供了相关的一系列操作系移植包,如针对Linux OS、针对Palm OS的移植等,进而加快了软件的开发与移植。从这个例子可以看出,平台所涉及的内容相当多,基于平台的设计的基本思想是通过平台这种比IP核规模更大的可重用、可扩展的软硬件及开发环境的使用,避免使派生而来的SoC设计及系统集成一切都从头开始做起。
大家也可以自己多思考下,其中的联系。无论是在SoC设计中的IP复用,还是在软件开发中的复用,核心目标都是通过最大化资源利用来提高效率和降低成本。这些复用实践需要在保证产品质量和性能的同时,不断优化和适应新的技术挑战。通过这种方式,复用不仅是一种技术策略,也是推动整个行业向前发展的重要驱动力。
巨人的肩膀
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.


