- 博客(49)
- 收藏
- 关注
原创 【IC验证】UVM实验lab05
定义单个uvm_reg,各个域的确定,并利用configure函数来配置属性;继承于uvm_object类build()函数。field_name.configure( .parent ( this ), // 参数一是此域的父辈,也就是此域位于哪个寄存器中,即是this;.size ( 1 ), // 参数二是此域的宽度;
2024-06-29 22:44:54
818
原创 【IC验证】UVM实验lab04
一般在driver中利用get方法来得到req。如果需要发送返回值,则通过以下语句实现:注意第一个语句是为了确保当有多个sequence通过sequencer向driver时,driver返回的rsp必须与其sequence一一对应此时在sequence语句里面应该要有对应的接受rsp的语句,get_response(rsp)
2024-06-22 19:20:33
300
原创 【IC验证】UVM实验lab03
在mcdf_base_test里面调用cb_mcdf_base的cb_do_reg方法。相当于是在这里预留了一个修改入口,方便后续继承该类,并对callback里面的方法进行修改。对于后续继承于mcdf_base_test的所有子类,例如cb_mcdf_data_consistence_basic_test都不需要再做这个绑定了。
2024-06-22 12:12:21
470
原创 【IC验证】一文速通多通道数据整型器(MCDF)
设计模块的全称叫做multi-channel data formatter,他可以将上行多个数据通道的数据通过内部的SLAVE, FIFO给到仲裁器Arbiter, Arbiter选择从不同的FIFO中读取数据,给到下端的Formatter, 对数据进行整形,以数据包的形式送给下行的数据接收端。bit(5:3):数据包长度,解码对应表为, 0对应长度4,1对应长度8,2对应长度16,3对应长度32,其它数值(4-7)均暂时对应长度32。CHx_VALID(0):通道数据有效标志信号,高位有效。
2024-06-02 21:19:09
1100
原创 【IC验证】随机约束相关问题
类中的结构体变量为非组合型时(默认为此),需要对该结构体变量及其内部成员分别添加rand,结构体变量为组合型时,仅需要对改结构体变量添加rand修饰符(并且不支持对内部变量添加rand修饰符)当子类约束和父类约束同名时,是覆盖,以子类的约束为准。当子类约束和父类约束不同名,是继承,约束里面的相同变量要同同时满足子类和父类的约束。换句话说,它生成的随机值不会与上一个生成的随机值相同。随机化解决软约束冲突,遵循后置约束覆盖前置约束,子类约束覆盖父类约束,内嵌约束覆盖类内部约束。但是这样仿真速度太低了。
2024-04-18 18:29:03
411
原创 【IC验证】SV中语句的执行顺序
在begin-end语句块中,begin-end和fork-join块可以相互嵌套,也可以自我嵌套。当遇到disable时,或者时间延迟最长的语句执行完时,跳出该语句块。多个initial块之间是并行执行的,initial块内部是按照顺序执行的。包内的各个类的执行顺序是动态确定的,取决于代码中的实际使用情况和依赖关系。多个begin...end块之间是并行执行的,内部是顺序执行的。直到最后一条语句执行完,程序流程控制才跳出该语句块。
2024-04-14 19:14:44
313
原创 【IC验证】fork...join
这是由于fork...join_none块后面没有任何阻塞语句,而join_none不会阻塞下一条阻塞语句之前的所有进程。由于三个线程的print中都添加了延时,所以第三行和第九行被首先打印,然后才轮到三个线程print的输出。如果任何一个子线程完成,则程序允许执行fork...join_any块外面接下来的语句,而fok...join_any剩余的子线程将在后台继续执行。各线程并行执行,当耗时最长的线程执行完后,跳出该语句块。如果任何一个子线程无法结束,则整个fork...join将被挂起。
2024-04-14 19:13:05
177
原创 【IC验证】类的一些问题
因为类的对象是动态的,当没有任何一个句柄指向该对象时,该对象所占据的空间就被回收了(自动回收)43行虽然还没有例化c1,c2两个对象,但是可以找到data的值,因为data是静态变量,他的空间开辟在类下面,而不是某个变量下面。子类句柄复制给父类句柄,经过复制后父类的句柄指向子类的对象,但是其能够访问的范围只有父类的范围。但是,类里面的对象,成员变量和方法默认都是动态的,例化的模块(module)是静态的。子类既继承父类的变量,也继承父类的方法,所以下属程序运行结果,p.i和 lp.i都是2。
2024-04-10 10:41:27
482
原创 【IC验证】接口、采样、驱动、测试、调试
关于数据采样中的竞争问题,在波形窗口看到的数据是在t时刻一个delta-cycle以后的数据。但实际上在t时刻数据为。
2024-03-31 22:45:27
118
原创 【IC验证】数组
队列类似于一个一维的非压缩数组,它可以自动地增长和缩减。0 代表第一个 元素,$代表最后一个元素对于处理成员数目会动态改变的连续变量集合而言,动态数组非常有用。然而,当集合的尺寸是未知的或者数据存储空间比较有限的时候,联合数组则是更好的选择。联合数组在使用之前不会分配任何存储空间,并且索引表达式不再被限制成 integral 表达式,而是可以具有任何数据类型。在对一个非常大的地址空间进行寻址时,SV只为实际写入的元素分配空间。
2024-03-12 19:19:17
880
原创 GVIM常见命令
在有些时候,只希望一些字符串被替换,而一些字符串不需要被替换,这时可以在命令最后加一个c,去confirm一下这个字符串是否要替换。替换单个的字符,在命令模式下敲r, 替换光标所在的字符串,shift+r,然后输入要替换的内容,如果要退出替换模式,按esc键。方法二:在命令模式下输入”/需要查找的内容“即可进行查找。若要如果查找下⼀个,按“n”即可。方法一:在命令模式下将光标移动到需要查找的那个字符串的任一个字母上,然后按shift和*取消查找:输入:nohl或者直接查找一个不存在的东西,也可以退出查找。
2024-03-03 09:55:10
1033
原创 【IC验证】数据类型
字符串的结尾不带空标识符null,\0。是动态存储方式,因此不用担心存储空间被用完。编辑.SV文件使用gvim 文件名运行仿真使用如果是字符串,则从低位开始赋值。测试代码测试结果:可以看到strl[0]="pan"是把pan的低位n给到了strl的高位。
2024-02-29 20:53:26
305
原创 git命令整理
Git 是为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。分布式管理系统,可以快速的查看文件各个版本的改动。比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥是不知道的Git 本地数据管理,大概可以分为三个区:工作区、暂存区和版本库。
2024-02-26 14:30:45
700
1
原创 Linux基本命令
rm 是强大的删除命令,它可以永久性地删除文件系统中指定的文件或目录。命令后面加目录名称即可,但命令执行成功与否,取决于要删除目录是否是空目录,因为 rmdir 命令。#代表切换到 vbird 这个用户的主目录,亦即 /home/vbird。#表示回到自己的主目录,对于 root 用户,其主目录为 /root。#没有加上任何路径,也代表回到当前登录用户的主目录。相对路径:相对路径是从当前所在的工作目录开始的。目录,亦即是 /root 的上一级目录的意思;#表示回到刚刚的那个目录。
2024-02-24 14:57:04
368
原创 LCD彩条显示与字符图片显示
液晶是一种介于液体和固体之间的有机化合物。液晶分子在不同电场作用下能够改变其排列状态,进而影响光的透过程度。典型的LCD由两片玻璃之间夹着一层液晶材料构成。这两片玻璃上涂有透明导电层,形成了像素。每个像素由三个互补色的次像素(红、绿、蓝)组成。当电场施加在液晶上时,液晶分子重新排列,使光无法通过。这种状态称为“散射状态”或“阻挡状态”。通过在液晶屏上对每个像素的电场进行调控,可以控制像素的透明度,形成图像。Pixel,是图像的最小单位,由图像的小方格组成的,这些小方块都有一个明确的位置和被分配的色彩数值。
2024-01-04 19:20:44
1114
1
原创 AXI接口简介
(1)时钟采用全局时钟,上升沿采样(2)复位信号低电平有效,此时主机的ARVALID,AWVALID和WVALID信号为低电平,从机的RVALID和BVALID为低电平,其他信号可以为任意值(3)握手处理。只有当VALID和READY都为高电平时,信号才可以传输。
2024-01-02 20:32:30
2499
原创 RS485接口
由于FPGA端口TX和RX都是单端信号,而RS485的输入输出都是差分信号。RS422是4线全双工,RS485是2线半双工,因此RS485更加使用与点对多通信。B—驱动器输出/接收器输入(反相)。使用两块FPGA板A和B,两者之间使用RS485通信,通过按板A的按键来控制板B的LED灯亮灭,按板B来控制板A LED的亮灭。RS485是在RS422上演化来的,两者都是采用差分平衡方式传输,抗干扰能力高,传输距离长,传输速率快。R4是终端电阻,典型值为120Ω,目的是为了消除干扰,使差分信号更加稳定。
2024-01-01 19:08:31
983
原创 UART串口通信
UART ( universal asynchronous receiver-transmitter )是一种采用异步串行通信方式的通用异步收发传输器。它在发送数据时将并行数据转换成串行数据来传输,在接收数据时将接收到的串行数据转换成并行数据。不知不觉已经到了2023年的尾声了,先在这里祝各位朋友新年快乐。我现在坐在日本北九州市早稻田IPS的宿舍里面敲下这段话。
2023-12-31 22:57:44
2816
1
原创 FIFO
FIFO(First In, First Out)是一种数据结构和算法原则,最早进入的元素最先被处理或者移除。这种原则通常应用于队列(Queue)的管理,其中新元素被添加到队列的尾部,而从队列中取出元素则是从队列的头部开始。FIFO 常用于处理按照时间顺序到达或产生的数据。
2023-12-29 22:21:07
1072
1
原创 单端口RAM IP核
单端口模式支持从单一地址上的异时读写操作。下图显示了 Cyclone IV 器件 M9K 存储器模块的单端口存储器配置。写操作期间,RAM 输出行为是可以配置的。如果在写操作期间激活 rden 信号,则 RAM 输出端会显示相应地址上正在写入的新数据,或者原有的旧数据。如果在 rden 信号未激活的情况下执行写操作,那么 RAM 输出端将保留它们在最近的 rden 信号有效期间所保持的值。
2023-12-29 10:04:28
1097
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人