- 博客(24)
- 收藏
- 关注
原创 【UVM】寄存器模型
从uvm_reg派生一个寄存器类:声明build函数,并在其实例化uvm_reg_field类;build函数负责所有uvm_reg_field的实例化调用configure函数,配置上述域参数一,是此域的父辈,也就是此域位于哪个寄存器中,即是 this;参数二,是此域的宽度;参数三,是此域的最低位在整个寄存器的位置,从0开始计数;参数四,表示此字段的存取方式,共支持25种;参数五,表示是否是易失的(volatile),这个参数一般不会使用;
2025-02-10 21:34:08
2237
3
原创 【UVM】搭建一个验证平台
scoreboard/checker:判断DUT的行为是否与预期相符合 monitor:收集DUT的输出并把它们传递给scoreboard 一个用于监测DUT的输入口,一个用于监测DUT的输出口 reference model:验证平台给出的预期结果 env:实例化上述组件 agent:
2024-12-31 17:56:35
731
原创 【UVM】sequence
将不同类型transaction在同个sequencer上启动:将sequencer和driver能够接受的数据类型设置为uvm_sequence_item,然后需要在driver中用cast转换成员类型。原理:是driver将rsp推送给sequencer,而sequencer内部维持一个队列,当有新的response进入时,就推入此队列,队列默认大小为8。uvm_send系列宏的意义:可以使发送的transaction都使用同一块内存,只是其中的内容可以不同,这样可以节省内存。
2024-12-11 17:09:09
1038
原创 【System Verilog】OOP面向对象
如果不使用virtual,直接例化,所有非virtual例化的interface值都会发生改变,使用了virtual例化,则每个例化是独立的,改变的只是当前的vif接口的值。利用类的多态,将父类方法声明为virtual时,可以将子类对象直接赋值给父类句柄,并直接使用父类句柄来调用子类的方法,而无需句柄类型。重载的最大优势是使得一个子类的指针以父类的类型传递时, 其表现出的行为依然是子类的行为。虚类一般用来定义类的格式,、类的成员、类的参数等。的本质是让父类句柄使用子类对象的。
2024-12-05 19:55:55
497
原创 【UVM】objection机制
用法:一个phase对应一个drain_time,并不是所有的phase共享一个drain_time。在没有设置的情况下,drain_time的默认值为0。作用:检查到所有objection 被撤销后,会检查是否设置drain_time,如果有,则延迟drain_time。
2024-12-02 14:40:44
1047
原创 【System Verilog】随机与约束
而x=1,y可取0,1,2,3四种组合,所以共有5种组合,每种组合概率相同,均为1/5;可以给每个分支指定不同的权重(权重值可以为非负整数、非负表达式),一条分支的概率为该分支的权重值除以所有分支的权重值之和。,静态约束在所有类的对象之间共享,也就是说如果某个对象关闭了静态约束,那么其他对象的静态约束也被关闭。附加约束:允许在调用随机函数的时候添加约束,此时要将定义在类中的约束也与添加约束一起考虑。外部约束块:约束可以像方法一样,在类的内部声明,而在类的外部定义,要使用作用域操作符。约束必须写在约束块中,
2024-11-21 11:46:15
2081
1
原创 【System Verilog】package用法
不在unit空间进行任何声明,所有共享的声明都要在 package中。需要时,可以将package 导入到 unit空间进行任何声明,所有共享的声明都要在package中。需要时,可以将package导入到unit空间进行任何声明,所有共享的声明都要在package中。不允许访问定义在unit编译单元里的item(即定义在全局空间的类型在package内无法访问,但interface编译后在package内的class里是可以识别的)std是sv内部自定义的package(eg:std::method)
2024-07-11 18:09:40
1222
原创 【ARM】汇编语言结构
ld文件是作用在链接过程bss段:Block Started by Symbol,存放程序中未初始化的全局变量和静态局部变量,通常这些变量会被操作系统或链接器初始化为0bss 段,不为数据分配空间,只是记录数据所需空间的大小;data段:data segment,存放程序中已初始化的全局变量和静态局部变量、非const的全局变量的一块内存区域const全局变量一般放到了rodata段,初始化为零的全局变量可能被编译器优化到 bss段。
2024-06-06 15:27:38
1419
原创 【VCS】Verdi常用指令
ctrl+w:将鼠标指向需要添加到波形上的信号名,通过该快捷键将该信号添加到波形上;shift+l:当鼠标指向波形区时刷新波形,当鼠标指向代码区(src1)时刷新代码;z:缩小波形,显示更长时间的波形;Z:放大波形,显示更短时间内的波形;f:显示全局的波形;shift+s:将当前存在于到波形区的信号保存为.rc后缀的信号列表;shift+m:波形区快捷添加标记时刻;ctrl+d:删除所有信号列表;x:在代码区快捷查看所有信号的当前状态;
2024-05-07 10:45:12
8065
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅