【芯片设计- RTL 数字逻辑设计入门 4 - 第一个 RTL Bug 分析之路 】

news2024/12/27 1:11:22

文章目录

    • 1.1 Veloce 验证
      • 1.1.1 问题背景
      • 1.1.2 问题分析
      • 1.1.3 调试小技巧

1.1 Veloce 验证

本文是基于veloce验证平台进行的,关于veloce的介绍如下:

传统的验证技术中,主要采用两种手段。

  • 一种是基于EDA工具(Simulator)的仿真验证。这种验证方式是基于软件平台的,优点是使用方便,便于问题定
    位和调试。但是当被验证的设计的规模变得很大,到达上百万门甚至上千万门的时候,仿真速度将会急剧下降,
    已经不再满足芯片开发时间上的需求。
  • 另外一种是基于FPGA(Emulator)的仿真验证。这种验证方式是基于硬件的,优点是速度快,可以进行长时间测
    试向量的测试,还可以测试芯片的一些性能参数。但是FPGA仿真需要事先定制相应的FPGA板,并且由于FPGA
    的规模有限,对于超大规模,尤其是多核的SOC系统,FPGA已经无法胜任
    在传统的芯片系统开发流程中,软件总是在芯片流片回来后才完成开发或者测试的,这将极大的延迟芯片投放市
    场的时间,影响产品的竞争力。

Veloce 硬件加速仿真平台综合了传统的EDA仿真和FPGA仿真的优点,可以实现像EDA工具一样的debug同时
也具备较高的仿真速度。其大容量和通用性成功的解决了千万门级的多核系统的验证问题,同时Veloce 硬件加
速ICE模式可以和JTAG调试工具联合使用,实现软硬件联合仿真和并行开发

1.1.1 问题背景

该问题是在做 SOC-600 DFD 验证trace data 数据通路时遇到的:
使用 ARM Star(cortex-m33 core)的 ITM/ETM feature 输出 trace data 到 SoC 上的 DDR中需要经过以下路径:

  • ITM/ETM->Cortem33 ATB Port(8bits)
  • ATB Port-> Star Funnel_1 Slave Port
  • Star Funnel_1 Master Port -> Star ETF_1 Slave Port
  • Star ETF_1 Master Port-> SoC Funnel Slave Port
  • SoC Funnel Master Port->SoC ETF Slave Port
  • SoC ETF Master Port -> ETR Slave Port
  • ETR AXI Master Port -> CATU Slave Port
  • CATU AXI Master Port -> CI700 Port

在验证 SoC ETF 数据通路到 ETR 模块的时候发现 SoC ETF Module 上的 atdata_s(input type) 上有数据,但是它的 atdata_m(output type) 上没有数据,ETF atdata_m 用于将数据送给 ETR,所以这个时候数据通路就断了,接下来就是调查分析过程。

ETF 中有三个模式设置:
1)将上一级来的数据存放在circular buffer中;
2)将上一级来的数据先存放在circular buffer中,并等待软件来读取(通过APB总线);
3)将上一级来的数据先存放在circular buffer中,硬件直接将数据通过ATB总线送到下一级

1.1.2 问题分析

1)通过veloce 抓取现场波形,并分析波形;
2)找到 soc etf module的实现,并检查其 atdata_m 的连线:
在这里插入图片描述

上图双击之后进入:
在这里插入图片描述

  • 先查看 clk 信号和 reset_n 信号,其中clk 没有信号,reset_n 信号看起来正确;
  • 由上图中的 if ... else... 分支,我们知道抓波形的时候走的是 else 分支,所以需要查看 local_cg_enatb_clken 信号,结果 local_cg_en 信号正常,但是 atb_clken 信号却一直为底,很不正常,从图中可以知道 atb_clken 信号 由 itcrl_ime | ~atvalid_m | atready_m 决定的。 其中 atvalid_m 是 发送端的信号(高有效), atready_m 是接收端的信号(高有效)。通过波形查到 atvalid_m 确实是为高,但是 atready_m 却为低。
  • 继续跟踪 atready_m 信号的连线:
    在这里插入图片描述
  • 继续跟踪 atready_s_init 的连线:在这里插入图片描述
    可以看到 atready_s_int 是在另外一个时序逻辑电路中产生的,那就要继续跟踪该逻辑的 clkreset_n 信号,查看波形后发现 clkreset_n 信号都为底,那接下来就需要继续跟踪 reset_n 的接线:
    在这里插入图片描述
    从上图可以看到 reset_n 信号是由 soc_etr_s_wakeup_ARESETn 接入的,然而下图可以看到RTL 中会对 soc_etr_s_wakeup_ARESETn一直接入低电平(赋值为1b0),所以这就是问题所在。
    在这里插入图片描述
    后面经过和 Design 的确认之后,该问题被修复。

1.1.3 调试小技巧

通过show drivers 可以找到当前信号的上一级接线,也就是谁驱动了它;
通过show receivers 可以找到当前信号的下一级连线,也就是谁接收它的驱动。
在这里插入图片描述

推荐阅读
https://www.wenmi.com/article/pw74ss00mott.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1066611.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谈谈你对 finalize 方法的理解,该怎样回答才能体现出高水平?浮于表面的答案永远不行!

目录 1. finalize 方法是什么? 2. finalize 方法的作用? 3. 为什么强烈不建议在 finalize 方法中进行资源的释放和清理工作 1. finalize 方法是什么? 首先要知道,finalize 方法是 Object 类中的一个方法,从源码中叶…

ES6 class类的静态方法static有什么用

在项目中,工具类的封装经常使用静态方法。 // amap.jsimport AMapLoader from amap/amap-jsapi-loader; import { promiseLock } from triascloud/utils; /*** 高德地图初始化工具*/ class AMapHelper {static getAMap window.AMap? window.AMap: promiseLock(AM…

[PyTorch][chapter 56][GAN 代码实现]

前言: 整个工程分为两个文件: gan.py: 网络模型搭建 main.py: 数据集生成,模型训练 目录: GAN 网络结构 gan.py main.py 一 GAN 网络结构 1.1 训练D 最大化V 1.2 训练G 固定G, 最小化 二 gan.py 功能: 实现 鉴别器D …

vue3+elementPlus el-input的type=“number“时去除右边的上下箭头

改成 代码如下 <script lang"ts" setup> import {ref} from vue const inputBtn ref() </script> <template><el-input type"number" v-model"inputBtn" style"width: 80px;" class"no_number">…

超长表单分页校验,下一页和上一页功能

父组件(最外层) <template><xx-layout title"练习"><divslot"content"class"hierarchy-tag-main"><el-steps:space"200":active"currentComponentIndex 1"align-centerstyle"margin-bottom: 30…

Flutter横屏实践

1、Flutter设置横屏 // 强制横屏 SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft,DeviceOrientation.landscapeRight ]); // 强制竖屏 SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]);另…

【虹科分享】什么是Redis数据集成(RDI)?

大量的应用程序、日益增长的用户规模、不断扩展的技术需求&#xff0c;以及对即时响应的持续追求。想想这些是否正是你在经历的。也许你尝试过自己构建工具来应对这些需求&#xff0c;但是大量的编码和集成工作使你焦头烂额。那你是否知道&#xff0c;有这样一个工具可以帮助你…

数据结构-图-最小生成树问题

最小生成树 并查集定义举例说明查找某个元素属于哪个集合代码实现路径压缩 Kruskal算法原理代码实现 Prim算法原理代码实现 并查集 定义 &#x1f680;在一些应用问题中&#xff0c;需要将n个不同的元素分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合&…

小商品公众号微信店铺搭建的作用是什么

小商品顾名思义就是价格低、需求广且数量多的日用产品&#xff0c;覆盖人群非常广&#xff0c;无论线上还是线下总能找到目标客户&#xff0c;铅笔、削皮刀、晾衣架等各式产品琳琅满目&#xff0c;不少商家也是热衷于小商品的售卖。 从整体来看&#xff0c;小商品商家也可线上…

tomcat整体架构

Tomcat介绍 Tomcat是Apache Software Foundation&#xff08;Apache软件基金会&#xff09;开发的一款开源的Java Servlet 容器。它是一种Web服务器&#xff0c;用于在服务器端运行Java Servlet和JavaServer Pages (JSP)技术。它可 以为Java Web应用程序提供运行环境&#x…

刚入职字节外包一个月,我却离职了...

有一种打工人的羡慕&#xff0c;叫做“大厂”。 真是年少不知大厂香&#xff0c;错把青春插稻秧。 但是&#xff0c;在深圳有一群比大厂员工更庞大的群体&#xff0c;他们顶着大厂的“名”&#xff0c;做着大厂的工作&#xff0c;还可以享受大厂的伙食&#xff0c;却没有大厂…

新手选MT4还是MT5,anzo capital昂首资本建议选择MT4,一个原因

在交易中就订单执行策略而言&#xff0c;MT4和MT5哪个更好&#xff0c;相信很多交易者和&#xff0c;anzo capital昂首资本一样很难做出判断。在MT5中&#xff0c;虽然开发人员对发送订单的流程进行了额外的复杂化&#xff0c;同时MT5在订单执行政策方面的优势在于其能够调整全…

告警繁杂迷人眼,多源分析见月明

随着数字化浪潮的蓬勃兴起&#xff0c;网络安全问题日趋凸显&#xff0c;面对指数级增长的威胁和告警&#xff0c;传统的安全防御往往力不从心。网内业务逻辑不规范、安全设备技术不成熟都会导致安全设备触发告警。如何在海量众多安全告警中识别出真正的网络安全攻击事件成为安…

Vue3项目使用Stimulsoft.Reports.js【项目实战】

Vue3项目使用Stimulsoft.Reports.js【项目实战】 相关阅读&#xff1a;vue-cli使用stimulsoft.reports.js&#xff08;保姆级教程&#xff09;_stimulsoft vue-CSDN博客 前言 在BS的项目中我们时常会用到报表打印、标签打印、单据打印&#xff0c;可是BS的通用打印解决方案又…

【JavaEE初阶】 多线程(初阶)——壹

文章目录 &#x1f332;线程的概念&#x1f6a9;线程是什么&#x1f6a9;为啥要有线程&#x1f6a9;进程和线程的区别&#x1f6a9;Java 的线程 和 操作系统线程 的关系 &#x1f60e;第一个多线程程序&#x1f6a9;使用 jconsole 命令观察线程 &#x1f38d;创建线程&#x1f…

字段位置顺序对值的影响

Unity中验证AB加载场景时报错&#xff1a; Cannot load scene: Invalid scene name (empty string) and invalid build index -1 报错原因是因为把字段放在了Start函数后面(图一)改成(图二)就好了。图一中协程使用的sceneBName字段值为null。 图一&#xff1a; 图二&#xff1a…

【C++】List -- 详解

一、list的介绍及使用 https://cplusplus.com/reference/list/list/?kwlist list 是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 list 的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&…

Windows10点击开始菜单没反应的四种解决方法

在Windows10电脑中&#xff0c;用户点击开始菜单却出现了没反映的情况&#xff0c;这样用户就无法通过开始菜单来展开操作哦&#xff0c;会给用户的正常操作带来一定程序的影响&#xff0c;下面小编给大家带来四种简单的解决方法&#xff0c;帮助大家轻松恢复Windows10电脑开始…

Selenium 高级定位 CSS

一、CSS选择器概念 CSS拥有自己的语法规则和表达式 CSS通常分为相对定位和绝对定位 CSS常和XPATH一起用于UI自动化测试 二、CSS相对定位使用场景 支持web场景支持app端的webview 三、CSS语法实战 3.1、CSS相对定位的优点 可维护性强语法简洁可以解决各种复杂的定位场景 # …

ARMv7-A 那些事 - 6.常用汇编指令

By: Ailson Jack Date: 2023.10.07 个人博客&#xff1a;http://www.only2fire.com/ 本文在我博客的地址是&#xff1a;http://www.only2fire.com/archives/158.html&#xff0c;排版更好&#xff0c;便于学习&#xff0c;也可以去我博客逛逛&#xff0c;兴许有你想要的内容呢。…