首页 > 其他分享 >如何让ALG、FPGA、EMU、SOC、SubIp实现驱动复用

如何让ALG、FPGA、EMU、SOC、SubIp实现驱动复用

时间:2024-05-25 18:59:55浏览次数:18  
标签:SOC SubIp FPGA 验证 alg 寄存器 team flow cfg

     摘要

         在芯片验证场景中,我们通常涉及到算法team、fpga测试team、EMU team、SOC验证和Subip验证如何对芯片的完备性测试的探讨。由于各个team都是相互独立的,很多flow都是独立开发出来,对于交互的文件也是五花八门,这些文件各team协助起来很不方便,如何打通各个team之间的快速协助以及保证各team提供的文件彼此能快速复用起来成为了一个需要解决的问题。

       本文以多媒体isp/vpu为例,介绍一种flow: auto_gen_reg_cfg。该flow可以不受验证平台和上下级复用的束缚可以快速实现alg、fpga、emu、subip和soc验证解耦且达到并行验证目的,驱动可以相互复用。

     算法team是一般是独立的部门,往往在芯片前端走在最前面,所以相关的flow也是自己独立的。一般算法的flow都是提供alg_cfg文件(里面包含各个算法模块C参数配置)、图像源和算法打包的可执行文件(xxx.exe)就可以吐出RefCmodule的输出文件。

     Fpga team往往可以通过python script产生丰富的alg_cfg文件,通过编写c结构体来将硬件的寄存器和算法的C参数进行一 一映射,当寄存器变动比较大的时候又是需要重新做映射。       

     Emu team往往是覆盖一些大的分辨率,需要的配置往往需要soc/subip dv team来提供。

      DV team一般在sv中通过随机约束register的random value 再通过regmodule配置给rtl,同时在产生一份alg cfg给RefCmodule的可执行文件生成exp data。如果现在fpga出现跑出来一个错误,提供了一个alg_cfg文件和图像源需要验证快速复现问题,你需要如何操作呢?

        soc验证一般需要集成subip的验证平台和驱动,这两个耦合性太强了需要确保subip的tb没有问题才能工作,每一次subip改动必然会拖累soc的验证,解耦且能并行验证才是重中之重。

    AUTO_GEN_REG_FLOW:

  ​​​

       在图中我们可以将算法的alg_cfg作为源端的文件,这样在fpga、emu、alg、SubIp、Soc上如果需要相互复现问题只需要提供一份图像源和alg的配置文件。这样彼此之间交付源就可以确定是唯一的。

       唯一的源有了但是如何让alg_cfg文件在各个team之间能够简单使用起来,这边我们就需要借助寄存器的excel文件了,设计交付的文件中有一个excel用来描述模块的寄存器的相关行为,例如下表:

RegNameoffset(H)attrbuteBitsFieldnameDefaultValueDescriptionCmodel_key
REGA0RW[31:16]c16'h0alg_cfg valuealg_c
RW[15:11]b5'h8alg_cfg valuealg_b
RW[10:0]a11'hfalg_cfg valuealg_a
REGB4RW[31:16]ctrl mode16'h777mode ctrl 
RW[15:0]address16'h8898hd address

       注意表中有一列是Cmodel_key,这是将alg_cfg文件中算法C的配置参数和硬件的寄存器的field进行了映射。但是我们在REGB中发现Cmodel_key是空着的,这是因为在isp/vpu中寄存器也包含了响应的控制信号、中断、地址、模式等非算法模块有的配置,对于这些信号可以通过脚本进行筛选出来生成一个hw_cfg文件,用来进行专属的硬件配置cfg。

         通过脚本我们可以将alg.cfg + hw.cfg + register exlcel文件作为script的输入,可以产生寄存器配置。       

   通过上述flow我们可以生成寄存器配置信息,如何验证正确性呢?

   在DV侧我们可以通过编写sequence来实现,在vsequence中set  regmodule和生成的reg_cfg.txt到mm_auto_gen_reg_flow_base_reg_seq中,在check_auto_genreg_flow_cfg_seq中进行配置驱动。

    FPGA team可以通过excel、alg_cfg、hw_cfg进行配置寄存器映射成结构体进行驱动,同时fpga也可以运行生成的reg.txt文件进行驱动配置。

    对于EMU 来说生成的reg.txt文件可以直接进行驱动。

    基于该flow我们可以实现各team之间进行配置交叉验证,数据源头可以是同一源,生成的寄存器配置文件可以直接在FPGA、EMU、SOC、SubIp之间进行流转和复现错误问题。 在SOC层和EMU层可以自己产生测试激励,不在依赖于subip提供验证平台和配置,这样验证过程中subip、SOC、EMU可以并行验证,大大提高收敛时间。

    在后面的章节中我们会重点介绍该flow是如何开发,以及通过json进行文件库管理提高flow的复用性。

标签:SOC,SubIp,FPGA,验证,alg,寄存器,team,flow,cfg
From: https://blog.csdn.net/weixin_36352835/article/details/139091654

相关文章

  • Star CCM+在电池热管理中SOC计算、充电Map调用、电池内阻调用的方法
     前言众所周知电池充电电流是随着电池温度与容量变化查表获得(形式见下表),其中电池的充电倍率(电流)是阶梯变化的,而内阻是线型变化的。因此为了仿真的准确定,需要在软件中实现数据的调用,计算电池的发热量。电池内阻/充电倍率表 一SOC计算SOC的估算方法有开路电......
  • WinSock 的多线程编程
    目录概述Winsock为什么需要多线程阻塞模式和非阻塞模式单线程和多线程的优缺点Win32系统下的多进程多线程机制进程和线程线程创建线程同步线程通信  VC++对多线程网络编程的支持MFC中的多线程支持ATL中的多线程支持多线程FTP客户端实例头文件包含线......
  • Winsock I/O 模型:性能和可扩展性的关键
    目录引言Select模型简介主要特点优点缺点工作原理示例用法WSAAsyncSelect异步I/O模型简介工作原理主要步骤优点缺点示例代码WSAEventSelect事件选择模型简介工作原理主要步骤优点缺点示例代码重叠I/O模型简介工作原理主要优势应用场景示例代码完......
  • OFDM 802.11a的FPGA实现(二十二)DAC模块(含代码)
    目录1.前言2.实现思路3.verilog代码4.MoselSim仿真完整工程链接(含verilog和Matlab代码):OFDM802.11a的xilinxFPGA实现1.前言上一节完成了MUC模块,实现了对MAC层进行数据交互,以及控制物理层各个模块的工作。现在还剩下最后一个DAC模块,作用是将时域的输出按照前导码、sig......
  • NRF52833是一款通用多协议SoC蓝牙芯片内置M4内核超低功耗
    NRF52833是一款通用多协议SoC,具有蓝牙测向无线电,可在-40°C至105°C的扩展温度范围内工作。它是业界领先的nRF52系列的第5款产品,围绕带FPU的64MHzArmCortex-M4构建,具有512KB闪存和128KBRAM内存,可用于高价值应用。nRF52833可在105°C运行,加上大量内存和动态多......
  • vue + websocket + speak-tts 实现推送的告警消息弹框显示在右下角并语音播报出内容
    最近接了个项目需求,给设备配置语音加弹框告警。用户登录项目后不管在哪个页面,有告警就全局在右下角消息弹框加语音播报,下面浅介绍下我在开发中的流程以及遇到的坑!!!1、首先项目中安装speak-tts语音播报插件。npminstallspeak-tts2、创建一个全局的speech.js文件,文件中引入插......
  • 基于webapi的websocket聊天室(番外二)
    我比较好奇的是webapi服务器怎么处理http请求和websocket请求。有了上一篇番外的研究,这里就可以试着自己写个非常简易的webapi服务器来接收这两种请求。效果http请求消息打印响应解析websocket请求消息打印使用聊天室测试其实两种请求差不多,就只是一些头部字段......
  • [Java]Socket套接字(网络编程入门)
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18032037出自【进步*于辰的博客】参考笔记二,P61。注:“一对一”、“多对多”是相对于Socket而言,而非服务端/客户端类的个数。目录1、概述2、二种聊天模式2.1“一对一......
  • websocket和http的区别
    1、websocket1.1介绍WebSocket是一种实时通信协议,它允许客户端和服务器之间进行双向通信,而不需要每次请求都重新建立连接。WebSocket是HTML5中的新功能,它建立在HTTP协议之上,通过握手协议来建立持久化的连接。WebSocket的握手协议比HTTP的握手协议更简单,因为WebSocket......
  • socketserver模块、操作系统、操作系统的发展史
    【一】socketserver模块【1】简介socketserver中包含了两种类,一种为服务类(serverclass):前者提供了许多方法像绑定,监听,运行……(也就是建立连接的过程)。一种为请求处理类(requesthandleclass)专注于如何处理用户所发送的数据(也就是事务逻辑)。......