登录 | 注册 退出 投稿

【汽车芯片】基于故障注入的汽车SoC芯片硬件和固件协同设计验证方法

专栏作者 2023-10-12

内容提要:本文提出了一种用于芯片顶层功能验证的混合抽象建模策略,该策略显著提高了仿真性能的同时,仍能实现了复杂的硬件-固件协同验证的高精度。


摘要

在现代汽车和消费电子行业,功能的数量和复杂性不断增加。此外,还面临着生产缩短上市时间和一次成功设计产品的压力,这给所有芯片设计人员带来了巨大的挑战。有效利用建模和仿真可以改善设计过程,从而应对这些挑战。本文提出了一种用于芯片顶层功能验证的混合抽象建模策略,该策略显著提高了仿真性能的同时,仍能实现了复杂的硬件-固件协同验证的高精度。芯片的数字内容(由数字逻辑核心和数字功能模块组成)采用RTL格式实现,而芯片的模拟内容则在真实信号的支持下使用VHDL行为建模进行建模。因此,通过基于事件的仿真技术可以实现芯片顶层仿真(硬件固件协同仿真)。此外,混合抽象建模策略和方法节省了大量建模工作,从而帮助项目赢得时间。为了进行演示,使用这种建模方法成功地对完整的安全气囊片上系统(SoC)产品进行了建模。在设计的早期阶段,该模型用于芯片顶层功能验证,同时支持硬件和固件设计活动的优化和错误调试。

一、简介

近年来硅集成能力的巨大增长,使得将整个系统集成到单个芯片中成为可能。此类系统称为片上系统(SoC)。一般来说,SoC架构是针对应用而定制的,而不是通用芯片。通常,与所有电子系统一样,SoC硬件架构由处理元件(运行嵌入式软件的处理器,所谓的固件或功能特定硬件加速器)、IO设备、存储元件以及将所有元件链接在一起的互连结构组成。一旦定义并记录了内存映射和寄存器,就可以启动开发固件(例如启动和初始化系统的引导代码、硬件诊断、设备驱动程序、功能应用程序固件等)。SoC最基本的特征是其复杂性。

通常,如图1所示,安全气囊系统是一个异构系统,由传感器、安全气囊ECU(电子控制单元)组成,安全气囊ECU由安全气囊SoC芯片组、安全气囊主微控制器(uC)和执行器组成。安全气囊ECU是多安全气囊系统中的硬件,因为它控制汽车内多个安全气囊的打开。

图片1.png

图1:典型安全气囊系统

在运行过程中,安装在车辆关键位置的传感器,如带扣开关、加速度计或压力传感器,会持续测量碰撞位置、碰撞严重程度和其他变量。该信息通过传感器接口以模拟信号(例如调制电流)的形式提供给安全气囊SoC芯片组。安全气囊SoC芯片组将模拟传感器信号转换为数字信号,可由主uC进一步处理。转换后的数字传感器数据通过SPI(串行外设接口)通信报告给主uC。根据此信息,安全气囊主uC决定是否、在何处(位置)以及何时触发安全气囊(例如:执行器)。在打开时,主uC向安全气囊SoC芯片组发送打开请求命令,该芯片组驱动安全气囊ECU的打开接口,允许向不同的引爆电阻器提供高达2.2A的大模拟电流(取决于冲击位置)。这些爆管电阻被高电流加热,从而激活电阻周围的化合物发生化学反应,从而导致安全气囊爆炸。

本文中的安全气囊ECU采用主从SPI通信系统,其中主uC是主/命令器,安全气囊SoC芯片组是从/执行器。安全气囊SoC还充当汽车周围远程传感器网络到主uC的收发器。它不仅负责接收模拟传感器信号,还负责将传感器数据翻译并报告给主uC。作为主设备的主uC负责评估从安全气囊SoC接收到的传感器数据,并根据碰撞情况请求在正确的时间窗口内、正确的位置进行触发。

二、问题定义:安全气囊SoC设计和集成的挑战

如图2所示,将汽车安全气囊电子系统集成到由主微控制器控制的单个SoC中,使得安全气囊SoC成为非常复杂的设备。主微控制器(uC)为主控,通过标准串行外设接口(SPI)与安全气囊SoC芯片组进行通信。安全气囊SoC芯片的主要功能包括:

·智能电源管理单元由开关电源模块—SMPS(降压和升压转换器)组成;内部电源发生器–iPSG和中央电源控制逻辑,控制芯片加电和断电阶段,并监控系统电源完整性和逻辑,以便在完整性违规的情况下进行故障安全状态诊断。

·远程传感器接口支持从加速度到旋转传感器等不同传感器类型,并符合PSI5(外围传感器接口)或DSI3(分布式系统接口)等各种标准。

·安全引擎协助主uC观察传感器数据传输,并确认触发事件是否发生。

·安全气囊打开模块-引爆装置驱动器和打开启用逻辑-允许安全气囊点火电流,包括打开时间和电流以及负载条件诊断的要求。

这些功能分布在硬件(数字和模拟前端 (AFE))和粘在高密度逻辑数字核心(所谓的DCORE-数字核心)上的固件上。硬件和固件集成的两个重要概念是验证和确认,由它们确定设计的组件满足所有要求。由于硬件和固件的集成是嵌入式系统设计中最关键的步骤,因此越早完成越好。然而,有许多技术可以集成硬件和固件。主要目标应该是不要浪费时间在损坏的硬件上调试良好的固件或调试运行损坏软件的良好硬件。

图片2.png

图2:安全气囊SoC芯片组顶层实现架构概览

此外,汽车电子行业最近强烈要求大幅缩短产品上市时间,并迫切需要一次成功的设计。这些趋势给设计团队带来了巨大的挑战。事实证明,有效利用建模和仿真是可以为设计人员在应对技术挑战的同时保持行业要求提供大力支持的关键因素之一。能够选择正确的建模策略和方法对于这种复杂的嵌入式模拟混合信号芯片顶层仿真具有重要意义,它通常涉及精度和仿真性能(仿真速度)。

三、本文贡献

通过提出的混合抽象建模方法,本文做出了以下贡献:

·支持复杂SoC产品开发的硬件固件协同设计和协同验证的建模方法。固件、模拟和数字硬件设计团队可以使用通用模型来测试正在开发的软件/硬件。这也改善了多个学科设计团队之间的协作。

·提出一种使用全局信号概念进行芯片功能验证的硬件故障注入建模和仿真方法。这有助于固件和硬件设计人员验证故障检测和系统永久故障保护的概念。

·所提供的混合抽象方法还旨在“弥合”复杂IC的完整芯片顶层功能仿真的“速度”和“准确性”问题之间的差距。这是可以实现的,因为通过建模方法创建的模型是纯VHDL(直接RTL和行为VHDL);因此它具有高精度和非常快速的基于事件的仿真。

·从传感器到安全气囊SoC芯片接口再到主微控制器的数据流和通信链概念已在设计过程的早期阶段得到成功验证。这确保了客户对设计团队获得高度信任。

·使用VHDL的混合抽象建模方法,建模团队可以节省大量建模工作,因为建模任务仅集中于用数字方式对芯片的模拟内容进行建模。这在真实数据的支持下是可行的,从而支撑了设计团队和项目对产品的上市时间的要求。

四、混合抽象建模方法

A.安全气囊SoC芯片组的芯片顶层功能建模和验证挑战:

如上所述,为了实现安全气囊SoC芯片组的全部功能,不仅需要数字和模拟硬件之间的正确交互,还需要固件部分之间的正确交互。挑战之一是许多此类功能验证只能通过在芯片顶层完成。因此,在安全气囊SoC产品具有如此高的复杂性和集成度的情况下,重要的是要有一个有效的模型和验证策略来覆盖尽可能多的硬件和固件功能验证,但仍然不会危及准确性和仿真速度。

基于内部其他工作组的实践状态(例如传感器和控制组或通信组或IP模块组)。安全气囊SoC是将几种不同的单芯片大规模集成到单个芯片中,例如:电源管理芯片、引爆驱动芯片、嵌入式安全引擎芯片。根据使用VHDL-AMS仅在电源管理芯片上运行完整启动仿真的经验,启动仿真需要花费一天的时间来解决收敛问题。因此,仅使用VHDL-AMS仿真完整的安全气囊SoC芯片组是不够的。使用SystemC(-AMS)方法可以产生非常快的性能模型原型(尽管需要付出一些巨大的努力)。另一方面,模型原型仍需要适应最终的硬件实现。与SystemC(-AMS)和VHDL-AMS方法相比,使用纯VHDL的混合抽象建模方法具有许多优点,因为它提供:

·准确性:该模型具有完整的数字逻辑核心的真正RTL实现及其嵌入式固件,以实现更准确和可靠的结果。

·仿真性能:非常快速的基于事件的仿真,没有收敛问题。

·工作量:完全重用数字逻辑核心的RTL实现,显著减少建模工作量。此外,与VHDL-AMS方法(要求建模工程师对复杂模块具有良好的技能基础和经验)相比,在具有实际价值的VHDL中对模拟前端模块进行数字建模所需的工作量要少得多。因此,它也有助于缩短产品上市时间。

使用VHDL纯数字建模方法进行芯片顶层仿真的决定是由以下因素驱动的:

·安全气囊SoC芯片组在单个芯片上部署了高度集成的非常复杂的数字逻辑以及高电压(高达35V)和高电流(高达2.0A)输出驱动电路。

·安全气囊SoC芯片组架构采用数字硬件,具有大量模拟硬件模块(超过22个模块);与实时交互要求的嵌入式固件(ROM)紧密结合在一起。

·主电源管理单元-PMU(带有开关模式DC/DC电源-例如:降压、升压转换器、内部电源发生器和电压调节器)以超过70MHz的时钟速率进行数字控制。

·最后但并非最不重要的一点是,由于上市时间的要求,还需要快速可靠的顶层仿真设置。

33.png
详询“牛小喀”微信:NewCarRen

B.混合抽象建模方法:

根据评估结果,安全气囊SoC芯片组的建模策略是在VHDL中建立尽可能高精度的芯片全数字模型。这可以通过使用以下步骤来实现,如图2和图4所示:

·安全气囊SoC芯片的数字核心逻辑和数字功能直接复用来自数字设计团队的RTL实现。

·AFE模块(例如通用灯驱动器、传感器接口、电源管理单元、用于展开安全气囊的引爆驱动器、安全带带扣开关等)使用VHDL行为建模进行基于实际数据的建模(在第四.C节中描述)。

注:图3显示了安全气囊SoC设计中功能模块的总体架构。每个功能模块由一个模块AFE和一个子系统数字组成,模块AFE与外部世界或系统负载接口,子系统数字由整个SoC的数字CORE逻辑控制,分为模块逻辑和模块寄存器接口。

图片3.png

图3:安全气囊SoC设计中的功能模块架构

·通过内部开发的专用工具从最终流片版图原理图中自动提取芯片的顶层网表,并将其应用到顶层的所有模块上。这个过程称为“联姻”,如图4所示,用于在集成芯片顶层模型时替代连线流程。上述顶层联姻过程不仅有助于节省模型制作的精力,而且还可以提高模型对最终产品的准确性。这是因为模型顶层网表和顶层流片原理图是一致的。

·最后,固件实现也作为ROM掩码直接注入到模型中,从而允许固件和硬件协同仿真。在实践中,固件团队在开发时使用硬件模型来验证其固件。如果是由于固件或硬件造成的,则会分析并识别仿真过程中发现的错误。从而让团队之间的密切合作。

该方法称为混合抽象建模方法。采用混合抽象方法实现安全气囊SoC芯片组模型,可以通过基于事件的仿真对整个芯片进行仿真,从而显著提高整体仿真性能。

图片4.png

图4:安全气囊SoC芯片组的混合抽象建模

C.具有真实数据支持的模拟组件VHDL行为建模

当使用混合抽象方法时,可以显著减少制作完整芯片模型的工作量,因为工作量主要分布在芯片AFE模块的建模上。通过引入analog_t和current_t类型,以“数字”思维方式对模拟组件进行建模,它们分别代表模拟世界的电压和电流符号。Analog_t和current_t类型的概念是基于实数类型的。Analog_pack包用于声明这两种类型。Analog_pack软件包最初是为了支持传感器和控制应用程序的建模而编写的,最近已被其他应用程序组(例如通信和汽车)采用并广泛使用。在Analog_pack包中,可以找到用于仿真建模和验证目的的更多信号类型和分辨率函数(如图5所示),例如:

·analog_u:未知/未定义值

·analog_x:驱动程序冲突

·analog_z:高阻抗

图片5.png

图5:analog_pack包中用于建模和仿真支持的解析函数示例

电源检查块说明了如何使用支持实际数据的VHDL进行模拟组件建模,该块是安全气囊灯驱动器AFE模块的内部功能块,如图7所示。该块检查电源电压安全气囊SoC灯驱动器的5v0和1v5(分别针对模拟和数字子块)接地,并返回布尔类型的Supply_ok输出。Supply_ok的输出“1”表示电源电压信号5v0和1v5保持稳定电平,而“0”表示电源信号处于不稳定电平或超出范围。该块的行为VHDL代码实现如图6所示。

supply_check核心进程被实现为并发进程。它立即检查输入电压和接地电平。如果电压之间的差异保持在预定义的阈值,它会返回一个布尔值来指示电源状况。大多数情况下,如果电源不好,模型将保持在“停用”模式。Supply_1v5_ok和Supply_5v0_ok是整个芯片的许多不同模型中使用的通用函数,因此在仿真support_lib库中声明。

图片6.png

图6:VHDL中电源检查模块的实现

完整的灯驱动器AFE功能模型架构如图7所示。作为整体建模,该模型从策略上代表了实际AFE模块实现的功能和物理分区。在这个层面上,已经要求模型引脚与电路实现完全兼容;以便集成到最终安全气囊SoC模型的顶层中。

图片7.png

图7:安全气囊SoC灯驱动器AFE模型

灯驱动器AFE的关键模块是MOS模型。其作用是一个包含过流限制功能的开关。如果驱动器启用,栅极电压将被驱动到高于Vthreshold的电平,以便关闭开关/打开晶体管并让电流流过LED(在这种情况下灯亮)。该电流称为负载电流(iload_s),由drv_ocl_mon模块持续监控。在VHDL建模中,这转化为始终对iload_s电流敏感的过程。灯驱动器模块的数字逻辑部分,使用驱动器过流监控块报告的状态来实现过流检测和驱动器保护功能。驱动器开启/关闭功能;驱动器转换速率配置以及向主微控制器的驱动器状态报告,均通过使用SPI通信接口的固件完成。

一般来说,AFE模型通过使用模块级验证套件的子集将模型与实际电路进行比较来针对电路实现进行验证,然后由仿真设计人员、固件设计人员和功能模块所有者进行审核/签核(例如:通常负责数字、模拟和固件设计)。每个AFE模型都有一个经模拟设计人员同意的规范;固件设计师和顶层验证工程师。此过程有助于避免过度设计模型实现,这通常会不必要地降低仿真性能。此外,该过程还有助于加强不同学科小组之间的合作。它在设计阶段具有重要意义,因为可以在设计者之间达成共识;因此已经减少了由于误解而导致的设计错误。

D.用于固件激励的串行外设接口(SPI)模型

没有使用主uC模型,而是使用SPI生成器模型来生成SPI命令作为固件激励源。该SPI生成器还用于检查SPI接口硬件模块的实现。SPI发生器有4个符合SPI通信标准的数字接口,如图8所示,例如:sclk_o(SPI时钟输出)、ss_o(从机选择输出)、MOSI_o(主输出从输入)命令行和 MISO_i(主输入从输出) 来自安全气囊SoC芯片的响应线。SPI帧生成器可以配置为在不同的sclk_o下工作,生成不同的帧长度并具有不同的超前和滞后时间。

图片8.png

图8:SPI总线:单主–单从通信模型

五、使用全局信号概念的故障注入仿真

安全气囊SoC芯片组是安全气囊系统中的安全关键组件。安全气囊SoC芯片组的某些部件属于ISO-26262安全标准的ASIL-D级别(ASIL=汽车安全完整性级别)。故障注入仿真对于许多安全要求是强制性的,例如故障检测和故障保护功能。如图7所示,由高电池电压电平或低负载阻抗(短路)引起的过流事件被视为应用故障。如果无法检测和保护,此类故障可能会损坏应用程序的驱动程序。

图片9.png

图9:具有全局信号概念的故障注入仿真

注入故障的可能性允许验证过流检测电路,甚至驱动器保护功能验证。这对于模拟不同的客户应用也很有帮助。实际上,负载阻抗和电池不是芯片的一部分,如图 9(a) 所示为外部电路。用于仿真的故障注入概念如下:为了在仿真过程中注入故障,将电池电压Vbatt_s和负载阻抗rload_s建模为MOS模型中的analog_t类型信号,并在一个单独的包中全局声明,称为全局信号包。这些信号用于计算iload_s电流。在图9(b)中,这通过在芯片模型内部建模的外部应用电路来说明。因此,通过全局信号包,可以在仿真过程中动态地控制或激励这些负载信号和电池电压,以创建不同的仿真事件,包括故障事件。换句话说,全局信号包必须在顶层测试台的标头处声明。

尽管这个概念非常简单并且实现起来并不费力,但它确实使故障注入和故障仿真成为可能并且非常容易。全局信号概念还广泛用于创建不同的测试场景以进行顶层验证。例如,其中包括使用全局信号概念生成不同的传感器数据模式,如图10所示。传感器数据在全局信号包中声明。验证工程师需要在不同的测试用例场景中定义不同的传感器数据模式,并使用全局信号包将这些数据传递到测试台。根据不同的碰撞场景验证不同的传感器数据模式,有助于检查安全气囊系统的稳健性,因为不允许错误打开。

图片10.png

图10:使用支持传感器接口顶层验证的全局信号概念

六、模型覆盖范围:准确性评估与实施工作

本节从物理实现和功能的角度总结了模型覆盖范围。

A.安全气囊SoC芯片组模型精度评估

通过混合抽象建模方法,该模型实现了高精度,因为它相应地涵盖了芯片物理实现的以下几点,如图11所示:

·完整的数字硬件架构实现(RTL代码的复用)

·建模时严格要求数字域和模拟域之间的接口。这些接口在顶层通过子模块模型集成步骤流片原理图网表进行验证。如果不匹配,用户会在编译阶段立即收到错误消息。

·仿真真实的顶层网表时,还涵盖了模块之间的顶层连接。该顶层原理图稍后用于芯片布局。

·为了进行仿真,还使用ROM掩码。该ROM掩码是将固件实现(C代码)转换为适合数字处理器架构的ROM结构。ROM掩码稍后也用于芯片的物理实现。

图片11.png

图11:混合抽象建模方法的模型精度评估

B. 模型限制和实施工作

尽管VHDL允许实现多字段记录来对同一引脚上的电压和电流进行建模,但作者还是选择了全局信号发送概念来保留电压或电流信息以及对模型的反馈。这有助于显著改进实施工作量并保持仿真行为简单。话虽如此,所有模拟模块的验证都是针对电路/原理图级别的。它是整体验证策略的一部分,并且明显影响建模方法。

根据实践,两名建模工程师花费了大约3个月的时间完成了安全气囊SoC芯片的概念、规范、实现、模块验证和顶层集成的完整建模任务。

C.安全气囊SoC顶层模型确认及验证覆盖范围:

图12展示了用于验证安全气囊SoC芯片组的测试台架构。测试台由以下部分组成:

·激励:数字激励(固件,例如:SPI命令序列和数字硬件)和模拟激励(例如:vbatt_s、rload_s、1v5和5v0电源等)。SPI激励语法包含SPI接口(SPI1或 SPI2)、片选名称、MOSI命令和预期的MISO响应。

·检查器:回归测试套件还实现了不同的检查器。

·SIM日志:所有仿真事件,包括激励和检查器,都被捕获并放入日志文件(文本格式)中。仿真结束后用户可以访问仿真日志文件。

图片12.png

图12:安全气囊SoC顶层测试台架构

采用混合抽象模型,安全气囊SoC芯片顶层仿真重点验证以下几个方面:

·芯片的功能,如电源管理功能、安全气囊打开功能等,需要模拟/数字硬件和固件的交互才能验证。这些功能只能在芯片顶层进行验证。对于许多模块来说,仿真模型与真实原理图实现高度兼容。

·可以验证芯片顶层的固件行为;硬件验证过程中发现的任何错误都可以直接反馈给固件团队进行错误修复,反之亦然。

·还可以验证从主uC到安全气囊SoC芯片的通信链,包括传感器数据传输、命令解码和模拟硬件状态报告。

·客户使用案例验证。

电气参数的检查专门针对功能模块验证级别,采用混合信号验证技术,其中使用模块实现(RTL代码和真实原理图)。

七、结果/结论总结

混合抽象建模策略和方法已成功应用于复杂的安全气囊SoC芯片组产品设计。该芯片已经完成流片,使用这种方法取得了成功的结果。整个安全气囊SoC芯片组模型采用纯VHDL建模。总之,作者想强调以下结果:

·本文的方法和结果现已成为英飞凌科技奥地利公司动力传动和安全产品开发小组的新建模实践状态。推荐这种建模策略用于复杂的嵌入式混合信号SoC产品设计,特别是芯片顶层的硬件固件功能协同设计和协同验证。

·通过混合抽象模型,典型的完整顶层功能硬件/固件协同验证可缩短至不到1小时(相比之前需要几天到一周),并且仿真结果的准确性很高。

·在模拟前端建模时,引入了全局信号的概念。这允许简化系统负载模型并注入错误/故障条件,并最终验证在这种条件下的系统反应。

·使用系统模型不仅可以验证许多重要的硬件设计功能,还可以验证固件行为。特别是,在开发过程的早期阶段发现了与硬件和固件之间的交互和关键时序响应相关的重要实现错误。

·使用开发的模型,可以显著缩短上市时间并实现设计目标。

44.png

详询“牛小喀”微信:NewCarRen



作者:牛喀网专栏作者
牛喀网文章,未经授权不得转载!


下一篇: 【汽车芯片】汽车SoC功能安全设计的形式化故障传播分析方法
上一篇: 牛喀学城汽车芯片功能安全设计研修班圆满结业
相关文章
返回顶部小火箭