systemverilog验证学习笔记_第1页
systemverilog验证学习笔记_第2页
systemverilog验证学习笔记_第3页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、二阻塞串行<=非阻塞并行1)时序逻辑一-使用非阻塞赋值2)锁存器一一使用非阻塞赋值3 )用always块生成的组合逻辑-一用阻塞赋值4)在同一个always块中既有时序逻辑又有组合逻辑-一用非阻塞赋值5)在同一个always块中不要既用阻塞赋值又用非阻塞赋值6)不要在一个以上的always块中对同一个变量赋值7)用$strobe显示用非阻塞赋值指定的变量值8)不要用#0过程性赋值Modport将信号分组并指明方向函数不能消耗时间,不能有#100(posedge clk)wait之类的阻塞语 句Interface arb_if(input bit elk);Logic 1:0 a, b;L

2、ogic rst;Modport test (output a, rst,Input b,elk);EndinterfaceModule arb arbif);Endmodule数组定位Int tq$,d二'9,1,8, 3,4, 4;Tq=(x) with (item>3);Endmodule断言Al: assert $error( grant not assertedv ;四种有输出消息的函数可在断言内部使用$info$waring$error$fatal要验证这样一个属性:“当信号a在某一个时钟周期为高电平时,那 么在接下来的24个时钟周期内,信号b应该为高电平”。用Ved

3、log 语言描述这样一个属性需要一大段代码,而用SVA描述就只需要几行 代码。下而的代码为SVA。例1:propertya2b_p;©(posedge sclk) $rose (a) -> 2:4 $rose (b);endpropertya2b_a: assert property(a2b_p); a2b_c: cover property (a2b_p);并发断言并发断言的计算基于时钟周期,在时钟边沿根据变量的采样值计算表 达式。它可以放在过程块(procedural block)、模块(module)、 接口(interface)或一个程序块(program)的定义中。并

4、发断言可 以在静态(形式化)验证工具和动态(仿真)验证工具中使用。上面 的例子就是并发断言SVA提供了 3个内嵌函数,用于检查信号的边沿变化。$rose(布尔表达式或信号名)当信号/表达式的最低位由0或x变为1时返回真值。$fell(布尔表达式或信号名)当信号/表达式的最低位由1变为0或x时返回真值。$stable(布尔表达式或信号名)当信号/表达式的最低位不发生变化时返回真值。断言的建立过程"编写布尔表达式一 编写序列(sequence) 编写属性(property) 一 编写断言(assert property)和覆盖语句 (cover property)”唯一性和优先级决定语句

5、在Verilog中,如果没有遵循严格的编码风格,它的if-else和case 语句会在RTL仿真和RTL综合间具有不一致的结果。如果没有正确使 用full_case和parallel_case综合指令还会引起一些其它的错误。 SystemVerilog能够显式地指明什么时候一条决定语句的分支是唯一 的,或者什么时候需要计算优先级。我们可以在辻或case关键字之 前使用unique或requires关键字。这些关键字可以向仿真器、综合 编译器、以及其它工具指示我们期望的硬件类型。工具使用这些信息 来检查辻或case语句是否正确建模了期望的逻辑。例如,如果使用 unique限定了一个决定语句,那么

6、在不希望的case值出现的时候仿 真器就能够发布一个警告信息bit 2:0 a;unique if (a=0)|(a=l) y = ini;else if(8=2) y = in2;else if(8=4) y = in3; .join 语句。如果always_comb过程内的行为没有代表组合逻辑,例如推断出了锁 存器,软件工具执行额外的检查来发布警告信息。Forkjoin所有并行语句执行完毕才执行后续Fork.join_none执行块儿内语句的同时父线程后而的程序继续 进行Fork-. . join_any当块内第一个语句完成后,父线程才继续执行。 停止单个线程Parameter timeo

7、ut=1000;Task check(trans tr);ForkbeginFork: check_stopBeginWait $display ( “ ”);Endtimeout $display( “ ”);Join_anyDisable check_stop;EndJoin_noneEndtask事件信箱扩展的类Class badtr extands transaetion;Rand bit bad_crc;Virtual function void calc_crc;0;EndfunctionEndclass:badtr回调测试程序在不修改原始累得情况下注入新代码可以用来注入错误放弃事

8、务延迟事务将事务放入记分板收集功能覆盖率等等记分板保存期望事务,找出测试平台接收到的实际事务相匹配的期望事务。Class scorebroad;Transaction scb$;Function void save_expect(transaction tr);(tr);EndfunctionFunction void compare_actual(transation tr);Int b$;B=(x) with =;Case ()0:$display( "no match find");Il:(q0);Default:display ( uerror, multiple

9、matches foundv ;EndcaseEndfunction: compare_actualEndclass功能覆盖率Program automatic test transaction;Rand bit 31:0data;Rand bit 2:0port;EndclassCovergroup covport;Coverpoint ;EndgroupInitial beginTransaction tr;Covport ck;Tr=new();Ck=new (); Repeat(32)beginAssert;();Auto_bin_max=2;Coverpoint ;Endgroup分

10、成两个仓bit 2:0portauto 0:3 auto 4:7两个仓Covergroup Covport;Kind: Coverpoint bins zero二0;Bins lo=l:3,5;misc=deflaut;Bins=gen2drv;=drv2gen;=ncell;Blueprint=new();Endfunction:newTask run();UNI_cell cell;Repeat(ncells)beginAssert ();$cast (cell, () ;re_tx (this, cell, drop);If (drop) disable tx; ost_tx(this,

11、 cell, drop);End: tx(cell);EndtaskU VMFactory 机制uvm_componet_utiIs (my_driver);Run_test( umy_driver v ;Factory 集中在一个宏 uvm_componet_utils 中这个宏将类my_driver登记在uvm内部一张表中,在定义一个新的类 时使用这个宏,就相当于把这个类注册到了这张表中。Run_test语句会创建一个my_driver实例,然后自动调用其中的 main_phase.4 uvm_ob j ec t_ut i1s(my_transact ion);My_transaction

12、 有生命周期,用'uvm_object_utils 实现 factory 机制。而整个仿真中一直存在的用uvm_componet_uti 1 s注册只有用uvm_componet才能成为uvm树的结点,而uvm_object不能。为了使用factory机制的重载功能S验证平台的组件在实例化是都应该使用type_name:type_id:createMy_driver div;Virtual function void build_phase(uvm_phase phase);Super build_phase(phase);Drvmy-driver::type_id::create(

13、adrvM , this)Endfuntion实例化传递两个参数,一个名字,一个是是parent最为父结点,通iS parent的形式建立了 uvm的树形结构env建立一个容器类,在这个容器类中实例化 driver, monitor, reference model 和 scoreboard验证平台实时监测dut行为的组件monitor,收集端口数据转刷成 transaction交给后续组件处理。Objection在每个phase中,uvm会见啥是否有objection被提起 (raise_objection ),如果有,那么等待这个objection被撤销 (drop_objection)后停止仿真。如果没有,则马上结束

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论