SV
文章平均质量分 92
我是小曹
Bunny9__
我是小曹
展开
-
interface中的clocking
重新写一下之前的例子,以前记录的,好多细节不太清楚,重新复习,还是一位加法器代码如下:2.2. 激励的产生2.3. 加法器3.4. 监测器3.5. 顶层文件3. 分析仿真结果上述代码直接仿真,可以看到监测器实在时钟下降沿触发打印的,也就是下面这段代码;在实际电路中,组合逻辑都会有延迟,但是我们的仿真器不能够直接在波形上看到这个延迟时间,所有的信号都会在@(posedge clk)的时间变化,真是电路信号的变化都会在@(posedge clk)的前一点或者后一点;vld是我原创 2022-09-04 22:59:14 · 2353 阅读 · 0 评论 -
线程的控制与同步
线程即独立运行的程序;线程需要被触发,可以结束或者不结束;在module中的initial和always,都可以看做独立的线程,它们会在仿真0时刻开始,而选择结束或者不结束;硬件模型中由于都是always语句块,所以可以看成是多个独立运行的线程,而这些线程会一直占用仿真资源,因为他们并不会结束;软件测试平台中的验证环境都需要有initial语句块去创建,而在仿真过程中,验证环境中的对象可以创建和销毁,因此在软件测试端的资源占用是动态的;选择题1:下面关于仿真时程序和模块的说法哪些是正确的?.........原创 2022-08-07 00:38:26 · 415 阅读 · 0 评论 -
SV 类的虚方法 多态
类的成员方法可以加修饰词virtual(虚方法)虚方法是一种基本的多态结构一个虚方法可以覆盖基类的同名方法在父类和子类中声明虚方法,其方法名、参数名、参数方向都应该保持一致在调用虚方法时,它将调用句柄指向对象的方法,而不受句柄类型的影响endclassendclassmodule tb;// 子类句柄赋值给父类,父类句柄指向子类的对象 P1 . printA;endmodule。............原创 2022-08-04 21:00:11 · 2492 阅读 · 2 评论 -
线程间同步和通信,event semaphore mailbox
线程间同步和通信,event semaphore mailbox1. 概述2. 事件event3. wait_order()4. 旗语(semaphore)5. semaphore::get();6. semaphore::try_get()7. 信箱mailbox7.1. 信箱的内建方法7.2. mailbox::new()7.3. mailbox::num()7.4. 参数化信箱1. 概述测试平台中的所有线程都需要同步并交换数据一个线程等待另外一个,例如验证环境需要等待所有激励结束、比较结束才可原创 2022-04-16 22:39:17 · 1158 阅读 · 1 评论 -
线程控制 fork
线程控制、同步与通信1. 线程控制1.1. 并行线程1.2. 一些代码示例1.2.1. 多个initial并行执行1.2.2. 单个initial内串行执行1.2.3. fork...join内并行执行1.2.4. join_any和join_none1.2.5. wait fork1.2.6. disable fork1.2. 时序控制1. 线程控制1.1. 并行线程fork...join需要所有的并行的线程都结束以后才会继续执行fork...join_any则会等到任何一个线程结束以后就继续执原创 2022-04-16 20:06:50 · 1051 阅读 · 1 评论 -
SV学习(9)——随机函数、数组约束、随机控制
SV学习(9)——随机函数、数组约束、随机控制1. 随机函数2. 数组约束3. 随即控制1. 随机函数2. 数组约束3. 随即控制原创 2022-03-21 20:32:38 · 5451 阅读 · 2 评论 -
SV学习(8)——随机约束和分布、约束块控制
SV学习(8)——随机约束和分布1. 随即约束和分布1.1. 为什么需要随机?1.2. 要随机做什么?1.3. 声明随机变量的类1.4. 什么是约束1.5. 权重分布1.6. 集合成员和inside运算符1.7. 条件约束1.8. 双向约束2. 约束块控制2.1. 打开或关闭约束2.2. 内嵌约束1. 随即约束和分布1.1. 为什么需要随机?芯片体积增大,复杂度日渐提高,传统定向测试已经无法满足验证的需求,而随机测试的比例逐渐提高;定向测试能找到你认为可能存在缺陷,而随机测试可以找到连你都没想想到原创 2022-03-20 18:41:50 · 7771 阅读 · 4 评论 -
SV学习(7)——包的使用
bunny原创 2022-03-16 11:23:05 · 1314 阅读 · 0 评论 -
SV学习(6)——类的继承、句柄的使用
1. 类的成员访问类型public:如果没有指明访问类型,默认是public,子类和外部均可以访问成员protected:只有该类或者子类可以访问成员,外部不可访问local:只有该类可以访问成员,子类和外部均无法访问2. 类的继承 extendsclass cat; protected color_t color; // 类和子类可以访问 local bit is_good; // 类可以访问 function set_good(bit s); this.is_good =原创 2022-03-12 16:59:10 · 5377 阅读 · 1 评论 -
SV学习(5)——类和对象、类的成员
1. 类和对象概述class类:包含成员变量和方法,是软件盒子object对象:类的实例handle句柄(指针):用来指向对象的指针property属性(变量):在类中声明的存储数据的变量method方法:类中使用task或function定义方法,处理自身或外部传入的数据2. 声明类并创建对象class Transaction; bit [31: 0] addr, crc, data[8]; function void display; $display ("Transact原创 2022-03-12 10:33:19 · 2192 阅读 · 2 评论 -
Vim编辑器常用命令
Vim编辑器常用命令Vim三种工作模式(命令模式、输入模式和编辑模式)Vim打开文件Vim快捷方向键和以单词为单位移动Vim插入文本Vim查找文本Vim替换文本Vim删除文本vim复制和粘贴文本Vim保存退出文本Vim光标移动Vim三种工作模式(命令模式、输入模式和编辑模式)使用Vim编辑文件时,默认处于命令模式。此模式下,可使用方向键(上、下、左、右)或k、j、h、i移动光标位置,还可以对文件内容进行复制、粘贴、替换、删除等操作;在输入模式下,Vim可以对文件执行写操作,类似于在Windows系统原创 2022-03-08 15:14:16 · 24877 阅读 · 2 评论 -
SV数组的方法——缩减、定位、排序
数组定位方法:min、max、uniquemin和max可以返回数组中的最小值和最大值,返回的是一个队列而非标量,这些方法也适用于关联数组。方法unique返回的是数组中具有唯一值的队列,即排除掉重复的数值,顺带排序;module min_max_unique ; int f[6] = '{1, 6, 8, 6, 2, 6}; // 定宽数组 int d[ ] = '{2, 4, 6, 8, 10}; // 动态数组 int q[$] = {1, 3, 5, 7}; // 队原创 2022-02-21 15:29:09 · 10852 阅读 · 1 评论 -
SV学习(4)——数据作用域和类型转换 $cast()
SV学习(4)1. 数据作用域2. 数据类型转换2.1. 静态类型转换2.2. 动态类型转换1. 数据作用域在一个静态任务、函数或者块内声明的变量默认情况下具有静态的生命周期并具有本地的作用范围。Verilog允许将函数和任务声明成自动的(automatic),这使得任务或函数内的所有存储空间都是自动的。SV允许一个静态的任务或函数内的特定数据被显式地声明成自动地(automatic)。声明成自动的变量具有调用块内的生命周期,并且在每次进入调用或者块内的时候i女性初始化。SV也允许变量被显式地声明原创 2022-01-23 20:31:36 · 5482 阅读 · 0 评论 -
SV学习(3)——接口interface、modport、时钟块clocking
接口interface、modport、时钟块clocking原创 2022-01-23 16:14:09 · 18667 阅读 · 8 评论 -
SV学习(2)——过程语句、函数和任务、变量声明周期
4. 字符串SV引入了一个字符串类型(string),他是一个大小可变、动态分配的字节数组。在Verilog中,字符串文本为一个具有宽度为8的整数倍的压缩数组。当一个字符串文本被赋值到一个大小不同、整型压缩数组变量的时候,它或者被截短到变量的大小或者在左侧填补0.SV中,字符串文本的表现行为与Verilog相同,但是SV还支持字符串类型,可以将一个字符串文本赋值到这种数据类型。当使用字符串元类型来代替一个整型变量的时候,字符串可以具有任意的长度并且不会发生截短现象。当字符串文本赋值到一个字符串类型或者在原创 2022-01-20 17:08:48 · 6350 阅读 · 0 评论 -
SV学习(1)——数据类型
SV语法(1)——数据类型1. 两态数据类型2. 枚举类型和用户自定义类型2.1. 枚举类型2.2. 用户自定义3. 数组与队列3.1. 静态数组与压缩数组3.2. 动态数组3.3. 关联数组3.4. 队列4. 字符串5. 结构体和联合体6. 常量7. 文本表示8. 操作符和表达式1. 两态数据类型SV引入了两态的数据类型(1/ 0 )来减少仿真器对内存的使用和提高仿真的运行效率,其中bit是无符号数,其他四个是有符号数:shortint、int、longint、byte bit a ;原创 2022-01-14 22:20:03 · 8119 阅读 · 1 评论