- 博客(17)
- 资源 (5)
- 收藏
- 关注
原创 IC验证必备技能——python/C API 基础教程
if (!// 解析参数 ([Python documentation](https://docs.python.org/3/extending/extending.html?// 返回新引用 ([Python documentation](https://docs.python.org/3/extending/extending.html?{"system", spam_system, METH_VARARGS, "执行系统命令"},"spam", "示例模块", -1, SpamMethods。
2025-04-17 11:38:25
934
原创 深入解析 UVM 寄存器模型 —— 从实例到实战
在复杂的 SoC 设计中,寄存器往往承载着控制和状态反馈功能。传统的寄存器访问方式通常依赖于低层的总线协议(如 APB、AXI 等),这会使验证代码和测试用例冗长且难以维护。而 UVM 寄存器模型通过对寄存器进行抽象化建模,将硬件寄存器映射为软件对象,使得:抽象访问:用户可以直接通过对象方法来读写寄存器,不必关心总线的时序与协议细节。自动化验证:通过寄存器模型可以自动生成访问序列、检查覆盖率并实现镜像值预测,从而提高验证效率。模块化管理:寄存器模型便于复用与维护,尤其在 IP 级验证中更显优势。
2025-04-09 11:04:18
912
原创 【UVM技巧与踩坑总结】为何你的Coverage总是收到相同的数据包?
问题结论多次发送同一个对象会造成覆盖、内容更新TLM分析链是传引用接收端共享数据地址使用成员变量做拷贝对象依然是同一个对象的引用UVM开发中牢记:要发送不同数据,就必须创建不同的对象!UVM是强大但“坑”也多的验证平台,理解其底层对象机制与TLM传递行为,是写出稳定可靠环境的基础。希望本文能帮你少走一些弯路,写出更优雅的UVM测试平台。欢迎留言讨论你在项目中遇到的类似问题,我们一起踩坑,一起成长!
2025-04-08 11:44:58
494
原创 使用PyTorch搭建Transformer神经网络:入门篇
criterion = nn.CrossEntropyLoss(ignore_index=0) # 假设0是padding token。
2024-10-11 22:52:58
1162
原创 机器学习与神经网络的崛起:从诺贝尔物理学奖谈起
然而,我认为,这样的转型并不意味着物理学“背离”了其核心追求,而是拓宽了物理学的边界——现代科学的问题越来越复杂,往往需要跨学科的解决方案。此外,随着量子计算的发展,机器学习与物理学的交叉领域将愈发重要。然而,2024年的诺贝尔物理学奖首次将机器学习与神经网络领域的研究者推上了舞台,这不仅是对这一新兴科技的肯定,也标志着物理学研究范畴的扩展,体现了物理学与计算科学之间日益紧密的联系。此次诺贝尔物理学奖的颁发,不仅展示了机器学习和神经网络在现代科学中的广泛应用,也为未来科技的发展提供了新的启示。
2024-10-11 22:33:03
528
原创 从零开始:搭建Python调用Design Ware的IP的验证环境
本文介绍了如何通过 SystemVerilog 调用 Synopsys DesignWare 加法器 IP,并通过 DPI 将其导出到 C 语言,最终在 Python 中调用。这一跨语言的验证过程,结合硬件设计与高级编程语言,增强了验证过程的灵活性。
2024-10-09 21:19:03
548
1
原创 从零开始:搭建SystemVerilog调用C并通过C调用Python的跨语言验证环境
通过本文的教程,你已经学会了如何在SystemVerilog中调用C函数,并在C中进一步调用Python函数。SystemVerilog通过DPI调用C代码的基本流程。编写C代码并生成共享库。在C中调用Python代码,配置Python环境。配置仿真器,使其能够连接SystemVerilog和C/Python代码。这个过程虽然涉及多个工具和语言,但一旦理解了基本原理,你可以轻松在验证环境中集成强大的跨语言功能,极大提升验证的灵活性和效率。
2024-10-09 20:57:17
1003
原创 UVM寄存器模型(一)
以上function都是虚函数,也就意味着用户可以根据待测寄存器的特别进行重定义,比如有些寄存器的读写属性是寄存器模型中没有的,则可以通过扩展uvm_reg或uvm_reg_field类来重定义寄存器模型中相关function的方式实现想要的读写属性。首先理解一下寄存器的结构,如下图所示,一个寄存器通常是32bit,这32bit由一个或多个域段组成,不同的域段又有各自的位宽和读写属性,写属性即每个域段的属性包括只读,只写,可读可写等等特性。get_fields:获取寄存器的域段。get:获取寄存器期望值。
2023-09-09 13:27:10
2103
原创 低功耗验证入门——PTPX功耗分析脚本介绍
设置基于时钟周期的毛刺功耗分析:power_enable_clock_cycle_based_glitch。设置基于时钟域的毛刺功耗分析:power_enable_clock_cycle_based_glitch。多轨道分析:power_enable_multi_rail_analysis。设置精度:report_default_significant_digits。使能功耗分析:power_enable_analysis。设置功耗分析模式:power_analysis_mode。
2023-08-08 13:46:44
3459
2
原创 `uvm_do_with中约束无法生效解决方案
在项目中遇到过明明在uvm_do_with中对transaction的域段做了约束,但在driver获取到seq时却无法生效约束的问题。最后排查发现是变量名的问题,如下约束值的名称var和req的var字段一致时,因为在`uvm_do_with()中,指定的作用域首先找到的是req,如果变量名一致,则会被当成是req的字段,会导致无法识别这个var是外部传入的变量,出现约束失效的情况。
2022-09-07 23:33:24
2083
原创 CAN总线ACK响应问题
并不是只有和发送ID匹配的节点才会返回ACK,其实总线上的任意一个节点都可以接收到master节点发送的数据并返回ACK,这是在底层完成的,还没有到达ID号过滤这层操作。
2022-08-29 20:25:11
6899
原创 UE重建简介
RRC 重建目的是恢复RRC信令连接,减少掉线。重建都是UE发起的,UE发起RRC重建的条件是:1)完成安全模式建立;2)处于RRC连接态UE发起RRC重建的原因有三种,分别是重配失败,切换失败、无线链路失败、完整性保护失败、RRC重配置失败。重配失败触发的重建:即UE在安全模式激活的状态下,如果收到了重配置消息后对于重配置消息内的信元无法匹配/兼容,则发起原因值为“reconfiguration failure”的重建。切换失败触发的重建:即UE在切换流程中,在收到了切换的重配置消息之后,
2021-09-04 21:35:50
1424
原创 5G随机接入及入网相关信令简介
5G信令按承载类型可分为SRB0/1/2/3、NSA,SBR0是用户在接入过程中的信令承载,包括msg1、2、3、4,msg4以后就建立了RRC连接,所以msg4也叫RRC建立,直到msg5之后,RRC建立完成,此时也建立SRB1承载,后续的RRC重配消息都将在SRB1上跑,msg5之后就是安全模式鉴定、UE能力查询、UE上下文的建立,如果UE已经在核心网attach则直接会在建立上下文消息的时候建立DRB承载,否则在上下文建立期间不会建立DRB承载,也就是会分成2条重配消息建立DRB和上下文建立。...
2021-07-25 22:09:34
7960
原创 mysql无法启动问题解决方法
从官网下载免安装版 https://dev.mysql.com/downloads/file/?id=476233安装完成后却无法启动,出现以下错误信息在启动前输入mysqld --initialize 进行初始化后即可成功启动...
2018-06-23 16:42:34
449
快速熟悉CAN总线协议(含CAN 2.0和CAN FD)
2023-11-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人