自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 ACE协议介绍(四):ace协议在哪些场景下会进行snoop操作?

摘要:ACE协议的Snoop操作用于维护多核系统缓存一致性,仅在共享内存(Shareable)内由相干主设备发起一致性事务时触发。主要场景包括:读共享数据(ReadShared)、获取独占权限(ReadUnique)、写操作(WriteUnique)和缓存维护(CleanInvalid)。触发条件包括:共享内存属性、相干主设备、一致性事务类型及互连判断需求。不触发Snoop的情况包括:非共享内存、非一致性事务、非相干主设备及SnoopFilter优化判定。Snoop操作通过广播请求确保各主设备缓存状态一致。

2026-03-05 16:30:02 406

原创 关于sv中this的使用介绍,以及与super的区别

本文阐述了面向对象编程中this关键字的核心作用,即明确引用当前类实例的成员(属性和方法),解决命名冲突和区分作用域。文章通过验证场景案例拆解了this的四大使用场景:1)解决成员变量与局部变量命名冲突;2)显式调用当前实例方法提升可读性;3)在构造函数中传递当前实例;4)配合super区分父子类成员。同时指出了this的使用限制:不能在静态方法和类外部使用。最后对比了this与super的区别,强调this的核心价值在于明确作用域,在验证中常用于事务类构造、参考模型方法调用和组件注册等场景。

2026-02-14 10:55:57 530

原创 ACE协议介绍(三):ace协议中的make和clean操作

在 ACE(AXI Coherency Extensions)协议中,和是两类核心的缓存一致性操作,用于管理缓存行的状态和权限,确保多核系统中数据的一致性。

2026-02-12 14:13:58 645

原创 uvm_analysis_imp_decl的使用及举例说明

摘要: uvm_analysis_imp_decl宏是UVM中实现多端口分析通信的关键工具,允许一个组件(如Scoreboard)同时接收多个Monitor的事务。核心流程:1)通过宏定义自定义后缀(如_icache、_axi);2)在组件中声明对应的uvm_analysis_imp_后缀端口;3)实现write_后缀()方法处理事务;4)在Env中绑定生产者的analysis_port到消费者的analysis_imp。注意事项:宏需在组件前声明,方法名严格匹配后缀,事务类型一致。

2026-02-12 10:42:27 574

原创 cpu的fetch/prefetch

它们都是核心工作。

2026-02-10 19:53:43 404

原创 关于systemverilog中的随机化的使用

只能在 class 中使用- 可以在任何地方使用。

2026-02-01 17:16:40 295 1

原创 关于typedef和enum枚举的配合使用介绍

代码简洁:避免重复写冗长的enum定义,提升代码可读性。强类型检查:使用别名声明的变量只能接受枚举中的合法值,编译器会自动检查类型错误,减少 bug。可维护性高:枚举定义集中在一处,修改时只需改一次,所有引用都会同步更新。跨模块复用:通过包(package)导出typedef后的枚举,可以在整个项目中复用,确保一致性。先在项目的公共 UVM 包中定义 AXI 响应类型枚举,通过typedef创建别名,供整个验证环境复用:// 文件:axi_defines_pkg.sv(公共枚举/参数定义包)

2026-01-30 14:24:53 883

原创 关于CPU的介绍(四)----CMO(Cache Maintenance Operations)

摘要:CMO(缓存维护操作)是管理缓存状态的关键机制,包含两类核心操作:Cache cleaning(将脏数据写回主存,使外设可见)和Cache invalidation(使缓存行失效,强制重新加载)。前者用于数据同步,后者用于数据更新。两者常配合使用,如DMA操作时先清理确保数据可见,再失效使CPU获取最新数据。这些操作解决了缓存一致性问题,是多核系统和外设交互的重要保障。

2026-01-28 17:36:49 385

原创 ACE协议介绍(二):ace协议为什么增加AC/CR/CD这三个通道?

ACE 新增 AC/CR/CD 通道的本质,是将缓存一致性的监听机制从 AXI 的点对点模型中剥离,用独立通道承载 “反向地址 + 响应 + 数据”,解决 AXI 无法支撑的全局一致性问题。这三个通道不仅是协议层面的扩展,更是硬件设计中 “时序隔离、带宽优化、状态同步” 的关键保障,是 ACE 能够实现多主设备缓存一致性的底层基石。

2026-01-23 17:38:11 590

原创 ACE协议介绍(一):ace协议为什么增加RACK/WACK这两个通道?

ACE协议在AXI基础上扩展了RACK/WACK通道,解决了多主设备缓存一致性的核心问题。传统AXI的RESP机制只能实现单向响应,而ACE通过独立确认通道实现了事务生命周期的闭环管理、全局操作排序、资源释放和状态同步。RACK/WACK作为事务终点锚点,确保主设备完成数据处理后通知互联更新全局状态,避免资源泄漏和一致性错误。这种设计解耦了数据传输与一致性控制的时序,为ACE实现多主设备共享缓存提供了关键机制,是其区别于AXI点对点传输的本质特征之一。

2026-01-22 16:57:37 622

原创 RISC-V(四):RV32F(RISC-V 32 位单精度浮点扩展指令集)

RV32F 是 RISC-V RV32 架构的单精度浮点核心扩展独立浮点寄存器:f0~f31 专门存储浮点数,与整数寄存器分离,简化硬件设计;灵活的控制机制:通过 fcsr 寄存器配置舍入模式、记录浮点异常,适配不同应用场景;高效的融合乘加:FMA 指令减少运算延迟和精度损失,是浮点计算的性能关键;与整数指令的无缝交互:支持浮点与整数的双向转换和数据移动,兼容原有整数指令集。

2026-01-12 20:14:50 809

原创 RISC-V(三):RV32M(RISC-V 32 位乘法 / 除法扩展指令集)

RV32M 是 RISC-V RV32 架构的核心算术扩展,通过 10 条 R 型指令实现了 32 位有符号 / 无符号的乘法、除法、取余操作,解决了 RV32I 仅支持基础运算的局限。其设计遵循 RISC-V 的模块化、精简性乘法指令拆分高低位结果,适配 32 位寄存器的限制;除法 / 取余指令明确向零取整和余数符号规则,保证跨平台兼容性;可选实现的特性,让处理器可在性能和面积 / 功耗之间做权衡。

2026-01-12 20:01:36 811

原创 RISC-V(一):RV32I(RISC-V 32 位基础整数指令集)

RV32I 是 RISC-V 32 位架构的 “最小核心”,通过固定指令格式、正交寄存器设计、精简指令集,实现了 “低硬件复杂度 + 高兼容性” 的平衡。它不仅是所有 32 位 RISC-V 处理器的必备基础,也是理解 RISC-V 模块化设计思想的核心 —— 在此基础上,可通过叠加 M/C/A 等扩展适配不同场景,同时保持指令集的简洁性和可实现性。

2025-12-30 14:17:39 1011

原创 RISC-V(二):RV32E(RISC-V 32 位嵌入式精简扩展)

RV32E 是 RISC-V 架构对 “极致精简嵌入式场景” 的定制化优化,核心通过裁剪通用寄存器数量实现硬件面积和功耗的降低,同时保持与 RV32I 的指令集兼容,是物联网、超低功耗传感器、微型 MCU 的理想选择。其设计体现了 RISC-V “模块化、可裁剪” 的核心优势 —— 既保留架构统一性,又适配细分场景的极致需求。

2025-12-30 14:11:12 1139

原创 关于CPU的介绍(三)----MMU(内存管理单元)

CPU是否包含MMU取决于应用场景需求。带MMU的CPU(如x86、ARMCortex-A)支持虚拟内存、多任务隔离和权限控制,适用于复杂系统如服务器和智能手机;无MMU架构(如Cortex-M、8051)则简化设计、降低功耗,适合实时嵌入式系统和物联网设备。MMU提供地址转换和内存保护,而无MMU架构直接访问物理地址,确保实时性和低延迟。RISC-V等模块化架构可根据需求灵活选择是否集成MMU。

2025-12-26 14:09:31 511

原创 关于CPU的介绍(二)----DTLB(数据转址旁路缓存)

是 CPU 中用于的高速缓存,是内存管理单元(MMU)的关键组件。以下从。

2025-12-25 21:25:51 787

原创 关于CPU的介绍(一)----IFU取指单元

IFU 是 CPU 的 “指令供应中心”,核心任务是高效、连续地从内存中获取指令,并通过预取、分支预测、缓存等技术,为后续流水线阶段提供稳定的指令流。其设计复杂度随 CPU 架构和性能需求提升,是衡量 CPU 性能的关键指标之一。

2025-12-25 19:56:43 535

原创 哪些属性的请求会经过L1D Cache?

只有 **Cacheable写回 / 写透、写分配 / 写不分配等组合的写请求;读分配的读请求;带共享 / 唯一属性的一致性请求。非 Cacheable 的请求(如设备寄存器访问)会直接绕过 L1D Cache 的缓存流程。

2025-12-04 11:52:21 293

原创 systemverilog 如何在子类中修改父类中声明的变量

/ 父类配置类:base_cfg// 声明可被子类修改的变量(protected:子类可访问,外部不可改)// 默认突发长度// 默认开启覆盖率// 默认基地址// 可选:父类提供修改变量的方法(推荐,封装逻辑)if (len > 0 && len <= 64) begin // 合法性检查`uvm_error("BASE_CFG_ERR", $sformatf("burst_len=%0d 超出范围", len))endendclass。

2025-12-03 16:30:49 271

原创 uvm_config_db的使用说明

摘要:在UVM验证环境中,test与寄存器模型(rm)之间通过uvm_config_db传递配置对象(cfg)句柄。核心流程包括:1)定义包含寄存器参数的cfg类和rm类;2)在test的build_phase中实例化cfg并调用uvm_config_db::set写入;3)在rm的build函数中使用uvm_config_db::get读取。关键要点包括:路径匹配原则(set路径需指向rm实例)、类型严格一致、确保先set后get的执行顺序。扩展场景支持rm在env中的跨层级传递,并通过日志打印和断言验证

2025-12-03 11:28:19 332

原创 功能覆盖率--数组型bin和单bin的区别

SystemVerilog中coverpoint的两种bin定义方式存在本质差异:带方括号bins all_vals[]={[0:63]}会创建64个独立bin(0-63各一个),要求所有值都被触发才能100%覆盖;不带方括号bins all_vals={[0:63]}则合并为1个bin,只要触发区间内任意值即视为完全覆盖。前者适用于需要验证0-63每个数值都被覆盖的场景,后者仅验证数值是否落在0-63范围内。关键区别在于方括号控制bin的拆分方式,直接影响覆盖率统计的精确度。

2025-12-02 19:29:55 352

原创 关于uvm_tlm_analysis_fifo中used函数的介绍

摘要:used()是uvm_tlm_analysis_fifo中用于查询当前FIFO事务数量的成员函数,继承自父类uvm_tlm_fifo_base。该函数为非阻塞查询操作,返回已存储的事务总数,常用于监控FIFO负载状态、调试拥塞情况及条件性读取事务。在有限深度FIFO中,返回值范围为0至最大深度,且线程安全。典型应用场景包括结合is_empty()检查待处理事务、批量读取判断等,是验证环境中调试和状态管理的重要工具。

2025-11-27 20:26:21 320

原创 介绍下宏的字符串化和连接特性

摘要:字符串化(#)和连接(`)是C/Verilog/SystemVerilog宏定义的核心特性。字符串化将宏参数转化为带引号的字符串,便于打印变量名;连接则实现参数与文本的拼接,生成动态标识符。关键点包括:字符串化自动处理引号但不展开嵌套宏;连接需确保无空格且生成合法标识符。典型应用包括调试打印、参数化命名和代码生成,能显著提升代码复用性。使用时需注意语法细节,如连接符位置和宏展开顺序。(149字)

2025-11-14 15:57:22 928

原创 批量替换文本内容和批量重命名文件的操作

第一条命令用于批量修改文件内容(替换文本)。第二条命令用于批量重命名文件(修改文件名)。两者结合了grepfind(查找目标)、sedrename(执行操作)和xargs(传递参数),是 Linux 下高效的批量操作工具链。

2025-09-21 13:09:27 419

原创 关于makefile中通配符*和%的介绍

是文件通配符,用于匹配当前目录中已存在的文件,适合获取文件列表。是模式匹配符,用于定义通用规则(如所有.o依赖.c),不依赖文件是否存在,是 Makefile 实现 “批量处理” 的核心机制。灵活运用两者可以大幅简化 Makefile 的编写,尤其是模式规则,能显著减少重复代码,提高可维护性。

2025-09-20 20:57:10 854

原创 clocking的输入与输出是相对验证环境tb还是dut的?

在 SystemVerilog 中,clocking块的input和output方向是而言的,用于定义测试平台与 DUT(RTL)之间的信号交互方向及时序。

2025-09-19 10:32:07 257

原创 关于systemverilog中find在队列及关联数组中的使用

在 SystemVerilog(SV)中,find是,用于从集合中筛选出满足指定条件的元素,并返回一个包含这些元素的。它是数据筛选的核心工具,语法简洁且支持灵活的条件判断,广泛用于验证中对事务、信号等数据的快速过滤。

2025-09-17 23:04:37 774

原创 关于uvm_top.print_topology()的介绍

摘要:UVM中的uvm_top.print_topology()方法用于打印测试平台的组件层次结构,包括组件名称、类型及父子关系,便于调试和环境验证。该方法通常在end_of_elaboration_phase或run_phase中调用,输出树状结构显示uvm_test_top及其子组件(如env、agent等),是UVM调试的核心工具,能有效提升验证效率,特别适用于复杂项目的环境正确性检查。

2025-08-06 15:53:49 566 2

原创 芯片验证环境中,使用 Makefile中的mode 和 SystemVerilog中的$value$plusargs 来控制仿真条件,两种常见的参数传递方式介绍

摘要:本文对比了Makefile模式(编译时控制)与SystemVerilog的$value$plusargs(运行时控制)两种参数传递方式。Makefile通过宏定义在编译时固定条件,适合性能敏感场景但缺乏灵活性;$value$plusargs支持动态调整参数,便于调试但存在运行时开销。关键差异体现在控制阶段(静态/动态)、修改成本、性能及适用场景:Makefile模式适合固定配置(如芯片模式选择),而$value$plusargs更适用于需频繁调整的测试验证。选择时需权衡性能需求与调试灵活性,二者可互补

2025-08-05 15:29:15 453

原创 sram进入deepsleep和shutdown是如何实现低功耗的?

SRAM(静态随机存取存储器)中的shutdown和deepsleep是两种重要的低功耗技术,用于降低静态功耗。下面我将详细介绍这两种技术的原理和实现方式。

2025-07-15 11:25:56 735

原创 seq挂载到sequencer的方式以及set_sequencer的介绍

start()

2025-07-11 12:05:31 753

原创 为什么interface声明句柄要用virtual

/ 通过虚接口驱动信号。虚接口不占用额外内存,仅存储对物理接口的引用,实际信号仍由物理接口维护。// 实例化物理接口。是静态绑定的,必须在编译时确定连接的物理接口实例,导致代码僵化。操作信号,无需知道接口在Testbench中的具体路径。允许在运行时动态绑定到不同的接口实例,实现灵活性。,同一组件可以适配多个接口实例,无需修改内部代码。:类中只能声明虚接口,实例化需在模块中完成。:它只是对物理接口的引用,不包含实际信号。// 动态绑定虚接口到物理接口。

2025-07-10 18:20:24 1165

原创 关于 arm 核 MPU中cacheable bufferable、shareable的理解

(如 Snoop Control Unit, SCU)或软件管理(如 Clean/Invalidate Cache)确保多核/外设看到的数据一致。,写操作可以缓存在总线写缓冲区(Write Buffer)中,无需等待从设备(Slave)立即完成。(以及 ARMv7-M/v8-M 架构)中,内存属性(Memory Attributes)如。:外设寄存器(如 GPIO)、DMA 缓冲区(避免 Cache 一致性问题)。:普通内存(如 SRAM),允许写合并(Write Merging)优化。

2025-07-07 16:56:10 1563

原创 在芯片验证过程中如何进行有效的缺陷定位和分析

4、仿真挂死一般也都是验证环境的问题,检查初始化正否正确配置,变量传递config_db,接口连接正常(TLM通信),forever,while循环语句是否耗时,是否存在退出条件。3、数据比较不一致,违反协议,一般都是rtl的问题,解决此类问题,就是把rtl内部整个数据通路都熟悉了,分断选取几个关键节点信号查看是否符合预期,然后再定位到具体的问题。2、问题分类:数据比较不一致,违反协议,仿真挂死,验证环境问题;1、首先是自己对整个功能模块足够熟悉;

2025-07-05 16:43:39 146

原创 芯片验证如何保证验证的完备性

明确覆盖率目标:功能覆盖率100%、断言覆盖率达100%、代码覆盖率达100%提取测试点的过程中要完备,尤其要考虑到边界、异常、多功能点的cross测试;过程:1、使用约束随机验证,生成多样化激励,覆盖未知场景;:针对特定功能设计确定性测试用例;

2025-07-05 15:55:58 445

原创 driver和sequencer之间的连接

这类端口的功能主要是用来实现driver和sequencer的request获取和response返回。如:drv.seq_item_port.connect(sqr.seq_item_export);seq_item_port和seq_item_export。

2025-07-02 23:32:58 155

原创 关于uvm_subscriber的介绍

/一个write函数,供initiator端使用uvm_analysis_port端口时。使用方式如:class xxx_axi_transform extends uvm_subscriber#(svt_axi_transaction);是 UVM 库中的一个预定义类,属于 uvm_analysis_port。的订阅(Subscriber)模式的一部分,用于接收和分析通过。// 例如:打印事务信息、转换数据格式、检查协议规则。// 处理接收到的 AXI 事务。

2025-07-02 17:00:58 460

原创 关于C语言的学习

2023-12-09 13:08:01 59 1

原创 ram_cov

【代码】ram_cov。

2023-09-24 15:49:11 85 1

【计算机体系结构】基于RISC-V开放指令集的模块化架构设计:面向嵌入式与高性能计算的可扩展处理器方案

【计算机体系结构】基于RISC-V开放指令集的模块化架构设计:面向嵌入式与高性能计算的可扩展处理器方案

2025-10-31

snipaste截图工具

snipaste截图工具

2025-08-12

cortex-M7 NVIC中断图解

cortex-M7 NVIC中断图解

2024-01-16

MPU的知识点总结记录

MPU的知识点总结记录

2023-12-24

xtrans翻译安装包

xtrans翻译安装包

2023-12-09

axi协议关于乱序和交织理解

axi协议关于乱序和交织理解

2023-12-05

关于AXI协议的知识点

关于AXI协议的知识点

2023-12-03

DW-axi-dmac

关于DW_AXI_DMAC的重要知识点记录

2023-11-26

AMBA-AXI_full Specification.pdf

AMBA-AXI_full Specification.pdf

2023-11-16

阅读ahb协议-个人总结

关于ahb协议个人的理解

2023-10-29

lvc-ahb-agent-configuration

lvc-ahb-agent-configuration

2023-09-11

lvc-ahb-agent-configuration

lvc-ahb-agent-configuration

2023-09-11

lvc-ahb-agent-configuration

lvc-ahb-agent-configuration

2023-09-11

lvc-ahb-agent-configuration

lvc-ahb-agent-configuration

2023-09-11

lvc-ahb-agent-configuration

lvc-ahb-agent-configuration

2023-09-11

lvc-ahb-agent-configuration

lvc-ahb-agent-configuration

2023-09-11

lvc-ahb-agent-configuration

lvc-ahb-agent-configuration

2023-09-11

lvc-ahb-agent-configuration

lvc-ahb-agent-configuration

2023-09-11

lvc-ahb-agent-configuration

lvc-ahb-agent-configuration

2023-09-11

lvc-ahb-agent-configuration

lvc-ahb-agent-configuration

2023-09-11

lvc-ahb-agent-configuration

lvc-ahb-agent-configuration

2023-09-11

lvc-ahb-agent-configuration

lvc-ahb-agent-configuration

2023-09-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除