教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 建筑文档 >

systemverilog验证学习笔记(2)

来源:网络收集 时间:2026-03-30
导读: 真器就能够发布一个警告信息 bit [2:0] a; unique if ((a==0) || (a==1)) y = in1; else if (a==2) y = in2; else if (a==4) y = in3; // 值3、5、6、7会引起一个警告 priority if (a[2:1]==0) y = in1; // a是0或1

真器就能够发布一个警告信息 bit [2:0] a;

unique if ((a==0) || (a==1)) y = in1; else if (a==2) y = in2;

else if (a==4) y = in3; // 值3、5、6、7会引起一个警告 priority if (a[2:1]==0) y = in1; // a是0或1 else if (a[2]==0) y = in2; // a是2或3 else y = in3; // 如果a为其他的值

unique case (a) 0, 1: y = in1; 2: y = in2; 4: y = in3; endcase // 值3、5、6、7会引起一个警告

Class trans; ………… Endclass

trans a;声明一个句柄(指针) a=new();//为一个trans对象分配空间 用户定义的new()函数 Class trans;

Logic [31:0] addr,crc,data[8]; Function new;

Addr=3; Foreach (data[i]) Data[i]=5; Endfunction Endclass

随机化

Class packet

Rand bit [31:0] a,b,c[8]; Randc bit[7:0] k; Constraint d{a>10; a<15;} endclass packet p; initial begin p=new();

assert (p.randomize()); transmit(p); end

指示通过引用传递的参数,参数声明需要以ref关键字开始

线程

always_comb过程来建模组合逻辑行为 在0时刻结束时自动触发一次

always_latch过程来建模锁存逻辑行为

always_ff过程可以用来建模可综合的时序逻辑行为 它仅能包含一个事件控制过程并且没有阻塞定时控制 always_comb过程提供了不同于正常always过程的功能:

? ? ?

具有一个推断的敏感列表

赋值语句左侧的变量不应该被任何其它进程写入。

在所有的initial和always块被启动以后,过程在时间0处被自动地触发一次,因此过程的输出与输入一致。

SystemVerilog的always_comb过程在下述几个方面上不同于Verilog-2001的always @*:

?

always_comb在时间0处自动执行,而always @*直到推断的敏感列表中的一个信号发生变化的时候才会执行。

?

always_comb敏感于一个函数内容内部的改变,而always @*仅敏感于一个函数自变量的改变。

?

在always_comb内部赋值左侧的变量(包括来自被调用函数内容中的变量)不应该被其它进程写入,而always @*则允许多个进程写入相同的变量。

?

always_comb中的语句不应该包含阻塞语句、具有阻塞定时或事件控制的语句,或者fork...join语句。

如果always_comb过程内的行为没有代表组合逻辑,例如推断出了锁存器,软件工具执行额外的检查来发布警告信息。

Fork……join所有并行语句执行完毕才执行后续

Fork…….join_none 执行块儿内语句的同时父线程后面的程序继续进行

Fork…..join_any当块内第一个语句完成后,父线程才继续执行。 停止单个线程

Parameter timeout=1000; Task check(trans tr); Fork begin Fork: check_stop Begin

Wait(tbus.cb.addr==tr.addr); $display(“……….”); End

#timeout $display(“……….”); Join_any

Disable check_stop; End Join_none

Endtask

事件 信箱 扩展的类

Class badtr extands transaction; Rand bit bad_crc;

Virtual function void calc_crc;

Super.calc_crc();//super调用基类里面的函数 ……….. Endfunction Endclass:badtr

回调

测试程序在不修改原始累得情况下注入新代码 可以用来 注入错误 放弃事务 延迟事务 将事务放入记分板 收集功能覆盖率等等

systemverilog验证学习笔记(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/438758.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)