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复用,还是在软件开发中的复用,核心目标都是通过最大化资源利用来提高效率和降低成本。这些复用实践需要在保证产品质量和性能的同时,不断优化和适应新的技术挑战。通过这种方式,复用不仅是一种技术策略,也是推动整个行业向前发展的重要驱动力。


巨人的肩膀