system verilog
April ending
坚持
每天一个知识点打卡上传
展开
-
2020-0824system verilog学习笔记
4、连接设计和测试平台1、 测试平台模仿设计的整个运行环境。如处理器模型需要连接到不同的总线和器件,则总线和器件在测试平台中就被建模成总线功能模型。V端口繁琐需要一种更高层次的方法来和设计建立通信--接口。 需要可靠的时序方法在正确的时间点驱动和采样同步信号,避免竞争-----时钟块2/、接口信号必须使用非阻塞赋值来驱动3、 在模块和程序块之外声明接口变量,否则接口变化曾局部变量,对设计其他部分不可见4、 接口interface连接端口port,端口已定义方向信息。module top原创 2020-08-26 19:06:47 · 212 阅读 · 0 评论 -
2020-08-26 system verilog学习笔记
8 OOP技巧 1、 类的继承,如果父类构造函数无参数和返回类型,则子类扩展类不需要构造函数,如只继承变量类和方法2、 父类的方法定义成虚方法,这样就可以再扩展类中重定义3、 子程序的原型prototype是指明了参数列表和返回类型的第一行。4、 当启动扩展类的时候,构造函数new:如果基类里有参数,那么扩展类必须有一个构造函数new(var),并且必须再构造函数第一行调用基类的构造函数super.new(input int var);5、声明一个虚方法,这样svhi查看存储再tr中的对原创 2020-08-26 19:04:09 · 271 阅读 · 0 评论 -
SV线程及线程间通信
1、 在测试平台环境里,大多数语句块被模拟成事务处理器(transaction),运行在各自并发执行的线程里。2、 线程间通信:event、事件控制、wait语句、mailbox、旗语3、join none块后语句的执行早于块内的任何语句4、 构造函数new只对数值进行初始化,并不启动任何线程,二者分开允许在执行transaction之前修改任何变量。5、线程中的automatic变量。如果在for循环语句中使用了fork join none,程序program回使用tr来匹配即将到来的原创 2020-08-25 17:09:16 · 1465 阅读 · 0 评论 -
关于d触发器一些易混点和应用,以及校招笔试中的选择题应用
一、时序电路1.D触发器先来看一个最简单的时序电路:module D1(input D,input CLK,output reg Q);always@(posedge CLK) begin Q <= D; end endmodule 上面描述了一个最简单的边沿触发的D触发器:输入数据D,在下一时钟周期就输出Q。其中,数据的存储时刻是时钟信号的上升沿(跳变瞬间),即寄存器Q在时钟上升沿采样到数据D,并更新存储内容;除了时钟上升沿的其他时刻,无论D如何变化,原创 2020-08-03 20:18:53 · 2532 阅读 · 1 评论 -
sv中关于随机化和数组约束那些事儿----终于整理完了我认为的一些重点
一、为什么需要随机化?当一个项目的功能越来越复杂,功能项成倍增加时,依靠定向测试集的编写来检查功能点未免压力过大了;其次,各个功能点之间的关系才是大多数bug的来源,但这种bug很难用定向测试的编写来筛查。只使用定向测试对回归测试也没有意义。采用受约束的随机测试法(CRT)产生测试集是项目复杂化测试的解决办法,但是CRT的环境建立比普通定向测试环境建立要更加复杂,并且要通过参考模型的建立和线上比较的形式进行对比来验证设计的正确性。参考模型多采用matlab,c,或v语言编写。然而只要搭建好验证环原创 2020-07-27 18:39:29 · 5212 阅读 · 0 评论 -
随机化句柄数组
随机句柄数组的功能是在调用其所在的随机函数时,随机函数会随机化数组中的每一个句柄所指向的对象。因此随机句柄数组的声明一定要添加rand来表明其随机化的属性,同时在调用随机函数之前要保证句柄数组的每一个句柄元素都非悬空,这要保证在随机化之前为每一个句柄元素构建对象。如果要产生多个随即对象,则需要建立随机句柄数组。和整数数组不同,随机句柄数组需要在随机化之前分配所有的句柄元素,因为求解器是不会创建对象的。使用动态数组可以按照需要分配最大数量的元素,再使用约束减小数组的大小。在随机化时,动态句柄数组的大小可以原创 2020-07-23 19:38:18 · 1057 阅读 · 1 评论