当前位置: 首页 > news >正文

芯片上音频相关的验证

通常芯片设计公司(比如QUALCOMM)把芯片设计好后交由芯片制造商(比如台积电)去生产,俗称流片。芯片设计公司由ASIC部门负责设计芯片。ASIC设计的芯片只有经过充分的验证(这里说的验证是FPGA(现场可编程门阵列)原型验证, 通过将RTL移植到FPGA来验证)才能去流片。因为流片费用昂贵,如果不经过充分的验证去流片,芯片回来后发现有问题,经济损失巨大。一般ASIC内部会有专门的验证工程师做一轮验证,也会让软件工程时做一轮验证(做芯片验证是芯片公司里软件工程师的主要工作之一,出一款新芯片就要做一次芯片验证),均OK后才会去流片。本文以智能手机(或智能手表)上的SoC芯片为例讲讲ADSP(audio DSP, ADSP是SoC的一部分)上音频相关的硬件验证有哪些以及怎么验。

一,验哪些

1,  IPC

现在的智能手机(或智能手表)都是多核系统(主要有AP、CP、ADSP、BT、WIFI、GNSS等)。核间需要通信,因此就有了IPC(inter-processor communication,核间通信)。示意如下图:

 

IPC的本质是中断和ring buffer。一个核给另一个核发一个IPC,就是先向共享ring buffer里写数据,然后给对方发一个中断。对方收到中断后就到共享ring buffer里读数据,这样就完成了一次核间通信。 验证时主要看中断有没有来以及中断服务程序有没有进。没达到预期就排查,包括IPC基地址和中断号等是否正确等。

2,  audio DMA & bus

audio DMA & bus(I2S 、PCM等)是连接ADSP和外设(codec芯片等)的纽带,即ADSP和外设通过它们来采集和播放音频数据。示意如下图中的蓝圈处:

对于audio DMA,主要是配置descriptor(buffer长度(它决定audio DMA中断间隔)、源地址、目的地址)等。对于audio bus,主要是配置bus的属性,包括左对齐还是右对齐以及一次采样多少比特等。验证时主要看audio DMA中断有没有等间隔(比如10ms)来以及中断服务程序有没有进。一些场景下(比如用扬声器播放音乐)整个音频系统就是靠这个中断来驱动的。

3,  memory & cache

音频中会用到各种memory,包括片内的(ITCM, DTCM)以及片外的(DDR, SRAM, ROM等)。验证memory主要是看在地址范围内是否可读写等,ROM是可读,其他是可读可写。片外的memory可以分成不同的功能块。 有的是用于存放code和data,因此要配成cacheable,在程序执行时能加快运行。有的是作为share memory用于交互音频数据(比如播放音乐时AP给ADSP发音频数据就放在share memory里),则要配成uncacheable,让收方能立刻拿到正确的数据。需要注意的是片内的memory不需要配置cache属性。

4,  低功耗模式

低功耗模式(low power mode, LPM)就是让ADSP睡下去来节省功耗。有三种低功耗模式,按睡的程度从浅到深分别是CLOCK _GATING,PLL_OFF,POWER_OFF。CLOCK _GATING就是关掉clock,睡的程度最浅,功耗相对大些。PLL_OFF就是关掉PLL(锁相环),睡的程度次之,功耗也居中。POWER_OFF就是给ADSP下电,基本没功耗了。在POWER_OFF模式下,如果把memory配成retention(保持,即ADSP下电了,memory里的内容没丢)模式,其他核把ADSP唤醒还可以继续工作。如果把memory配成shutdown模式,即ADSP下电了,memory里的内容也丢了,其他核把ADSP唤醒就相当于重新boot ADSP了。 ADSP进LPM后,其他核通过IPC或者内部TIMER等可以唤醒ADSP。要验的是ADSP能够被唤醒且进入相应的中断服务程序。

还有一些跟平台相关的,比如TIMER,这里就不细述了。

二,怎么验

芯片验证有专门的平台(基于FPGA )。我们主要在两种平台上做验证,分别是Synopsys的HAPS以及Cadence的PZ1。这两个平台上的运行都很慢,在HAPS上跑一次要十几分钟,在PZ1上跑一次则需要半个多小时。所以在平台上跑之前要做好各种充分的准备,跑一次像一次,得到想要的结果,不然会很浪费时间的。PZ1相对HAPS优势是可以抓波形。一般的(比如IPC等)为了节省时间可以在HAPS上验,有特殊要求的(比如LPM)则要在PZ1上验。需要在PZ1上验的ASIC会指出来。 在HAPS上验遇到疑难问题时,就需要在PZ1上复现,并抓波形给ASIC分析,帮助找到root cause。

通常验时需要不同核之间配合的。下面就以验AP和ADSP之间的IPC为例来看看是怎么验的。

1,  AP把ADSP boot起来。ADSP起来后给ADSP发一个IPC,告诉AP ADSP已经起来了。

2,  在AP上去看有没有收到IPC中断(读相关的寄存器)。如果没有收到,相应的bit为0, 这种情况下大概率是发送端有问题。如果收到,相应的bit为1,这时再去检查有没有进中断服务程序,如果进了,说明ADSP给AP的IPC是好的。如果没进中断服务程序, 很大可能是中断号不对,需要进一步调查。

3,  ADSP给AP的IPC验好后,再来验AP给ADSP的IPC。类似的AP给ADSP发个IPC,在ADSP上看有没有收到中断以及有没有进中断服务程序等。

两个方向上的IPC都验好后,AP和ADSP的中断就算验好了。

http://www.lryc.cn/news/473578.html

相关文章:

  • 【C/C++】函数的递归
  • 《链表篇》---两两交换链表中的节点(中等)
  • Fakelocation 步道乐跑(Root真机篇)
  • PyEcharts | 全局配置项中初始配置项和区域缩放配置项的使用
  • 突破语言壁垒:Cohere 发布多语言大模型 Aya Expanse
  • 内容安全与系统构建加速,助力解决生成式AI时代的双重挑战
  • Scrapy源码解析:DownloadHandlers设计与解析
  • shell基础-awk
  • @Controller 和 @RestController 区别
  • 【数据库设计】规范设计理论之数据依赖的公理系统(1)
  • Leetcode 合并两个数组
  • Native Crash 信号速查
  • 【工具变量】自由贸易试验区试点DID数据集(2003-2023年)
  • js-在数组中根据name查找出对应id(find与filter方法)
  • 推荐:自然语言处理方向的一些创新点
  • 成都睿明智科技有限公司抖音电商服务的领航者
  • 【大数据学习 | kafka】kafka的整体框架与数据结构
  • 隐私保护下的数据提取策略
  • vue 和 django 报 CORS(跨域资源共享,Cross-Origin Resource Sharing)是一种跨域访问的机制,
  • 「Mac畅玩鸿蒙与硬件3」鸿蒙开发环境配置篇3 - DevEco Studio 插件安装与配置
  • 【论文阅读】PGAN
  • 基于Unet卷积神经网络的脑肿瘤MRI分割
  • [java][基础]HTTPTomcatServlet
  • 【开源免费】基于SpringBoot+Vue.JS网上超市系统(JAVA毕业设计)
  • 【单片机】深入剖析USART与UART的区别
  • ‌Linux tac命令‌
  • 从简单的demo开始让您逐步了解GetX的用法
  • JAVA的动态代理
  • 「图文详解」Pycharm 远程服务器Debug
  • Golang反射在实际开发中的应用场景