- 博客(18)
- 收藏
- 关注
原创 AXI-Stream第二章
数据字节(TKEEP=1,TSTRB=1):必须完整透传,不能删减、移位;位置字节(TKEEP=1,TSTRB=0):占位标记,相对顺序不能改动;Null 空字节(TKEEP=0):无信息,互联器可随意增删。(第二章理论转工程)握手层:永远遵循 TVALID 保持规则,背压依靠 TREADY 实现;数据层:稀疏数据流必须带 TKEEP,区分空字节;包处理必须使用 TLAST;扩展层:多路流添加 TID/TDEST;自定义同步 / 标志使用 TUSER;
2026-08-11 12:00:14
322
原创 AXI-Stream协议学习重点总结
数据字节:必须完整透传,不可删减移位位置字节:占位标记相对位置,不能删除Null 空字节:无有效信息,互联器可自由增删(TKEEP=0 标识)底层核心:吃透TVALID/TREADY 非对称握手,是所有流式模块设计基础功能扩展:TKEEP/TSTRB 处理稀疏非对齐数据,TLAST/TID/TDEST 支撑多包、多路流版本选型:普通音视频 / 数据采集选用 AXI4-Stream;低功耗、高可靠安全场景选用 AXI5-Stream设计原则:全程保序、禁止乱序;
2026-08-11 11:14:10
450
原创 【UVM 实战】第五章 UVM 验证平台的运行
如果 base_test 重写 connect/main 并写入业务逻辑,子类必须调用,否则父类逻辑丢失。objection 直译:异议、运行占用标记;:计数器 + 1,标记当前存在未完成业务,禁止切换下一阶段;:计数器 - 1,业务执行完毕释放占用;核心规则:当前 domain 该 phase 总计数 = 0 时,自动结束本 phase,进入下一阶段。当 phase 所有 objection 计数器归零后,UVM 额外等待指定时长,再关闭当前 phase,用于接收 DUT 滞后输出数据。
2026-08-06 15:10:22
325
原创 【UVM实战】第四章 UVM中的TLM1.0通信
定义:将同一功能场景下一组相关信息封装成的自定义类(如 MAC 帧、AXI 数据包、总线指令),是 TLM 传输的最小数据单元,例。通信动作发起方组件内声明,拥有调用 connect () 发起连接的权限,用于 put/get/transport 主动发起传输。仅作为层级转发中间层,无发起传输权限,仅被动接收上游 PORT/EXPORT 连接,再向下转发至 IMP;常用于 agent 内部封装,把 monitor 端口对外暴露到 env 层级。TLM 通信的逻辑终点。
2026-08-04 17:38:47
297
原创 【UVM实战】第三章 UVM基础
uvm_object:UVM 最顶层通用基类,无层级、无自动 phase 调度,仅提供拷贝 / 打印 / 打包基础能力,是所有非组件类父类。:直接继承 uvm_object,新增两大独有核心能力:new 函数携带parent参数,自动构建 UVM 树形层级;内置全套 phase 生命周期,仿真时框架自动按顺序执行各个阶段。uvm_root全局单例,句柄别名uvm_top;顶层 test 实例名字固定为,所有组件全部挂载在 test 下方;层次路径规则:父子组件名称用拼接,格式;
2026-08-03 17:58:06
329
原创 【UVM实战】一个简单的UVM验证平台
继承uvm_object,是 sequence 和 driver 之间传递数据包的载体,俗称 transaction 事务。继承,是专门用来接收 sequence 发来 transaction,把信号驱动到 DUT 的组件。继承,负责监视 DUT 接口信号。uvm_agent是容器组件,把 driver、monitor、sequencer 打包在一起。uvm_env继承,整个验证环境的大容器。UVM 预先定义一套分阶段执行的回调函数,所有自动执行这套 phase,用户不需要手动调用。
2026-07-31 10:37:49
250
原创 【SystemVerilog 验证】第八章 面向对象编程的高级技巧指南
extends继承复用代码,super访问父类成员,构造函数固定执行顺序。virtual虚方法实现运行多态,抽象纯虚类统一标准化接口。Callback 回调实现插件式扩展,驱动 / 监视器零侵入新增功能。Scoreboard 记分板完成 DUT 事务自动比对,是功能校验核心模块。参数化泛型类实现多宽度事务复用,减少重复编码。工厂 Factory、static 单例实现组件动态替换、全局唯一资源管理。严格区分深浅拷贝,规范对象内存隔离,规避多线程数据错乱。
2026-07-22 15:46:35
345
原创 【SystemVerilog 验证】第七章 线程以及线程间的通信
4 类 fork 并行块区分使用场景,join_any 做超时、join_none 做后台监测、join 等待全部任务;automatic 自动变量解决循环 fork 变量共享漏洞;wait fork、disable 系列完成线程生命周期管控;三大 IPC 通信组件分工明确:event 做线程同步握手、semaphore 做共享资源互斥锁、mailbox 做事务数据包传输;event 区分边沿 @与电平 triggered (),规避零延时竞争;
2026-07-21 17:41:40
301
原创 【SystemVerilog 验证】第六章 随机化
本章是 SystemVerilog 约束随机测试完整核心章节,全书共 45 张配图分层讲解随机语法、约束、回调、内联随机、软硬约束、数组随机、种子管理、工程架构,承接第五章面向对象类基础,是 UVM 激励生成底层核心。
2026-07-21 15:59:19
348
原创 【SystemVerilog 验证】第五章 面向对象编程(oop)基础
SystemVerilog 中每一段独立代码块都会生成独立命名空间(作用域),不同域可定义完全同名变量,内层变量会屏蔽外层同名变量。顶层程序块class类内部函数任务形参域begin-end顺序块、fork-join并行块循环(循环变量为局部域)名字作用域:代码分层隔离命名,变量查找由内向外,同名变量互相屏蔽;$root全局绝对路径跨层级访问,%m打印层级用于调试;static 静态成员:属于类而非对象,全实例共享,用于全局统计、全局配置;静态方法仅能操作静态变量;
2026-07-20 00:00:58
353
原创 【SystemVerilog 验证】第四章 连接设计和测试平台
program是 SV 专门划分纯仿真测试逻辑的代码块,和硬件module严格隔离,不可综合,仅用于激励、监测、日志统计。// 激励生成、时序等待end// 仿真收尾统计endendprogram仿真所有 initial、fork 线程全部执行完毕后自动触发,不受finish/exit 影响,无延时、无时序等待,仅做日志统计。$display("总错误数:%0d,总警告:%0d", err_cnt, warn_cnt);end。
2026-07-17 10:44:42
394
原创 【SystemVerilog 验证】第一章 验证导论
芯片开发流程中功能验证占据核心地位,SV 是工业验证标准语言;核心准则:硬件 DUT(可综合 module)与测试平台(纯仿真 program)代码严格分离;logic 统一数据类型简化传统 Verilog reg/wire 语法;仿真五大调度分区是时序 bug 底层根源,竞争冒险的本质是区域执行冲突;传统 Verilog 测试平台存在端口、时序、校验多重硬伤,SV 四层标准化架构完美解决;掌握display、finish、$dumpvars 等基础仿真系统任务,能独立运行最小仿真工程。
2026-07-17 10:44:22
381
原创 【SystemVerilog 验证】第三章 过程语句和子程序
ref 参数必须搭配 automatic,静态任务使用 ref 直接编译报错;无默认值参数必须写在参数列表最前方;静态局部变量声明赋值会提前初始化,多线程数值错乱;function 不能包含 @、wait、# 延时等时序阻塞语句;void 函数仅打印无返回;大型数组传递必须用 ref,否则大量内存拷贝导致仿真速度暴跌;$time丢失小数时序,打印仿真时间统一使用$realtime;break仅跳出当前内层循环,多层嵌套无法一次性退出;
2026-07-16 16:57:23
353
原创 【SystemVerilog 验证】第二章 数据类型
1.1 2-state 两态类型定义:变量仅存在逻辑 0、逻辑 1 两种数值,不存在硬件未知态 X、高阻态 Z。特点:仅 0/1,无 X/Z,仿真速度快、内存占用低,验证优先使用1.2 4-state 四态类型定义:完整复刻硬件真实四种电平状态:0/1/X/Z,贴合芯片 RTL 实际信号行为。特点:0/1/X/Z,兼容硬件未知、高阻态,RTL 设计必用状态硬件含义仿真含义0低电平、逻辑假确定 01高电平、逻辑真确定 1X未知态未初始化、冲突、不确定Z高阻态。
2026-07-16 16:25:46
402
原创 [Verilog HDL]第十四章 深入理解阻塞赋值与非阻塞赋值全解
1. 误区:时序块内中间临时变量用,寄存器输出用<=危害:动态队列立刻更新中间变量,寄存器读取本周期新值,移位 / 反馈逻辑错乱解决:时序块全部统一<=2. 误区:多 always 块阻塞赋值同一变量危害:仿真块调度顺序随机,输出不稳定,产生竞争冒险解决:同一变量仅在一个 always 块赋值,时序逻辑统一<=3. 误区:自振荡时钟使用阻塞赋值危害:敏感事件无法二次触发,仿真波形卡死解决:仿真时钟激励用<=4. 误区:组合逻辑块使用非阻塞赋值,中间变量未加入敏感列表。
2026-07-09 10:37:42
383
原创 [Verilog HDL]第七章 调试用系统任务和常用编译预处理语句
define 宏名 替换字符串;调用`宏名。特性:单纯文本替换,无语法检查,编译报错在展开后才出现。支持层叠嵌套宏,宏名区分大小写,建议大写区分变量。易错坑:宏末尾不能加分号,分号会一同带入替换产生语法错误;运算类宏不加括号,运算优先级错乱。
2026-07-08 18:10:31
360
原创 [Verilog HDL]第六章 结构语句,系统任务,函数语句和显示系统任务
initial仅仿真 0 时刻执行一次,不可综合,用于初始化、产生测试激励;always循环触发,分边沿时序逻辑、@(*)组合逻辑,组合逻辑必须完整赋值防止锁存;敏感列表支持边沿、or多信号、wait电平等待、@(*)自动敏感。
2026-07-08 10:20:41
241
原创 [Verilog HDL]第五章 条件语句、循环语句、块语句、生成语句
对比项if-elsecase优先级自上而下,上层优先所有分支平等无优先级适用电路优先级控制、中断判断多路选择器、译码器不定态处理仅判断 0/1,无法屏蔽 x/z支持 casez/casex 处理无关位锁存器风险漏 else 产生锁存器缺少 default 产生锁存器语句分层:可综合语句(if/case/generate)、仿真专用循环(forever/for/repeat/while);锁存器两大来源:组合逻辑 if 无 else、case 无 default;
2026-07-07 16:39:54
519
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅