- 博客(17)
- 收藏
- 关注
原创 介绍下宏的字符串化和连接特性
摘要:字符串化(#)和连接(`)是C/Verilog/SystemVerilog宏定义的核心特性。字符串化将宏参数转化为带引号的字符串,便于打印变量名;连接则实现参数与文本的拼接,生成动态标识符。关键点包括:字符串化自动处理引号但不展开嵌套宏;连接需确保无空格且生成合法标识符。典型应用包括调试打印、参数化命名和代码生成,能显著提升代码复用性。使用时需注意语法细节,如连接符位置和宏展开顺序。(149字)
2025-11-14 15:57:22
826
原创 批量替换文本内容和批量重命名文件的操作
第一条命令用于批量修改文件内容(替换文本)。第二条命令用于批量重命名文件(修改文件名)。两者结合了grepfind(查找目标)、sedrename(执行操作)和xargs(传递参数),是 Linux 下高效的批量操作工具链。
2025-09-21 13:09:27
369
原创 关于makefile中通配符*和%的介绍
是文件通配符,用于匹配当前目录中已存在的文件,适合获取文件列表。是模式匹配符,用于定义通用规则(如所有.o依赖.c),不依赖文件是否存在,是 Makefile 实现 “批量处理” 的核心机制。灵活运用两者可以大幅简化 Makefile 的编写,尤其是模式规则,能显著减少重复代码,提高可维护性。
2025-09-20 20:57:10
747
原创 clocking的输入与输出是相对验证环境tb还是dut的?
在 SystemVerilog 中,clocking块的input和output方向是而言的,用于定义测试平台与 DUT(RTL)之间的信号交互方向及时序。
2025-09-19 10:32:07
217
原创 关于systemverilog中find在队列及关联数组中的使用
在 SystemVerilog(SV)中,find是,用于从集合中筛选出满足指定条件的元素,并返回一个包含这些元素的。它是数据筛选的核心工具,语法简洁且支持灵活的条件判断,广泛用于验证中对事务、信号等数据的快速过滤。
2025-09-17 23:04:37
488
原创 关于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
413
2
原创 芯片验证环境中,使用 Makefile中的mode 和 SystemVerilog中的$value$plusargs 来控制仿真条件,两种常见的参数传递方式介绍
摘要:本文对比了Makefile模式(编译时控制)与SystemVerilog的$value$plusargs(运行时控制)两种参数传递方式。Makefile通过宏定义在编译时固定条件,适合性能敏感场景但缺乏灵活性;$value$plusargs支持动态调整参数,便于调试但存在运行时开销。关键差异体现在控制阶段(静态/动态)、修改成本、性能及适用场景:Makefile模式适合固定配置(如芯片模式选择),而$value$plusargs更适用于需频繁调整的测试验证。选择时需权衡性能需求与调试灵活性,二者可互补
2025-08-05 15:29:15
359
原创 sram进入deepsleep和shutdown是如何实现低功耗的?
SRAM(静态随机存取存储器)中的shutdown和deepsleep是两种重要的低功耗技术,用于降低静态功耗。下面我将详细介绍这两种技术的原理和实现方式。
2025-07-15 11:25:56
507
原创 为什么interface声明句柄要用virtual
/ 通过虚接口驱动信号。虚接口不占用额外内存,仅存储对物理接口的引用,实际信号仍由物理接口维护。// 实例化物理接口。是静态绑定的,必须在编译时确定连接的物理接口实例,导致代码僵化。操作信号,无需知道接口在Testbench中的具体路径。允许在运行时动态绑定到不同的接口实例,实现灵活性。,同一组件可以适配多个接口实例,无需修改内部代码。:类中只能声明虚接口,实例化需在模块中完成。:它只是对物理接口的引用,不包含实际信号。// 动态绑定虚接口到物理接口。
2025-07-10 18:20:24
1045
原创 关于 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
1288
原创 在芯片验证过程中如何进行有效的缺陷定位和分析
4、仿真挂死一般也都是验证环境的问题,检查初始化正否正确配置,变量传递config_db,接口连接正常(TLM通信),forever,while循环语句是否耗时,是否存在退出条件。3、数据比较不一致,违反协议,一般都是rtl的问题,解决此类问题,就是把rtl内部整个数据通路都熟悉了,分断选取几个关键节点信号查看是否符合预期,然后再定位到具体的问题。2、问题分类:数据比较不一致,违反协议,仿真挂死,验证环境问题;1、首先是自己对整个功能模块足够熟悉;
2025-07-05 16:43:39
105
原创 芯片验证如何保证验证的完备性
明确覆盖率目标:功能覆盖率100%、断言覆盖率达100%、代码覆盖率达100%提取测试点的过程中要完备,尤其要考虑到边界、异常、多功能点的cross测试;过程:1、使用约束随机验证,生成多样化激励,覆盖未知场景;:针对特定功能设计确定性测试用例;
2025-07-05 15:55:58
381
原创 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
132
原创 关于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
318
【计算机体系结构】基于RISC-V开放指令集的模块化架构设计:面向嵌入式与高性能计算的可扩展处理器方案
2025-10-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅