- 博客(8)
- 收藏
- 关注
原创 SV随机和约束
随机化前的回调方法,常用于初始化或条件设置。随机化后的回调方法,常用于结果验证或后处理。使用->或if-else实现条件逻辑。临时附加约束,常用于随机函数调用时。全局随机化函数,可直接对变量操作。改变约束求解顺序以优化分布。通过概率分布控制值的选择。运行时启用/禁用特定约束。对动态或固定数组的约束。生成周期性的不重复随机值(类似洗牌)。返回1表示成功,0表示失败。定义随机变量的合法值范围。生成均匀分布的随机值,而。函数随机化对象中的所有。方法随机打乱数组顺序。关键字声明随机变量。
2025-06-06 09:34:21
66
原创 SV中定宽数组、动态数组、队列
特性定宽数组动态数组队列关联数组声明方法赋值内置函数// 插入末尾// 取出头部//第一个索引值//下一个索引值//删除当前索引值大小固定是否否否内存分配编译时运行时运行时运行时索引类型整数整数整数任意类型初始化.delete()特殊操作切片动态调整大小FIFO/LIFO键值对查询。
2025-05-28 18:32:29
202
原创 功能覆盖率
下表列出了实例特定的covergroup选项及其描述。covergroup的每个实例都可以将实例特定选项初始化为不同的值。初始化的选项值只影响该实例。示例: 示例:在en的posedge处采集覆盖率:通过 显式指定不需要收集的仓范围,结合 和 精确筛选目标仓。示例:排除 值为 或 的覆盖仓covergroup cov; coverpoint port { ignore_bins invalid = {0, 7}; // 排除 port=0 和 port=7 的仓
2025-05-27 10:31:31
473
原创 systemverilog 中force语句的用法
1.直接force某个值,比如0/1/a之类的,可以在class中直接force2.force某个变量的值,比如 force dut.timer=timer, 如果timer是一个动态变量的话,编译会报错“ Class data is not allowed in non-procedural context.”,简单的解法是把timer定义成类型3.如果2中不能简单定义成static类型的话,可以借用interface/bind。
2025-05-27 10:30:49
384
1
原创 IC验证--日常SV&UVM知识小结
子类通过super.new()确保父类的构造函数被优先执行,从而完成父类属性的初始化。// 输出: a=20, b=10。// 输出: a=20, b=10。若父类存在无参构造函数,子类可不写super.new()(编译器自动插入调用)。参数引用的变量必须在任务/函数调用期间保持有效(例如,不能是临时变量)。// 输出到 x_out。
2025-05-27 10:05:19
175
原创 UVM寄存器及模型
而不同的域,对于外部的读写而言,可分为WO(write-only,只写),RO(read-only,只读)、RW(read and write,读写)、读后擦除模式(clean-on-read,RC),只写一次模式(write-one-to-set,W1S)等操作属性。//域配置属性值为(此域的父辈(即该域位于哪个寄存器中),此域的宽度,此域最低位起始位置在该reg中,此域的存取权限,是否易失,复位值,是否可复位,是否可随机化,是否可单独存取)//实例化my_adapter。//实例化reg_agent。
2024-03-13 17:06:09
1519
1
原创 task与function的区别
函数可以包含范围声明、返回类型声明、参数声明、输入参数声明、寄存器声明和事件声明。与任务一样,函数分为静态的和动态的。//仿真结果是:Value of x = 15。(1)在函数名的括号内部声明参数。(2)带return关键字的函数。(3) Void 函数,无返回值。
2023-08-24 16:06:53
398
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人