SV中的随机化】的更多相关文章

SV搭建testbench的关键概念:CRT(constraint random test),测试集的随机化. 由于对象class由数据和操作组成,所以对数据的随机化一般放在一个class内.(对环境或环境的配置也可以反映在配置参数的随机化上) 一个constraint包括两部分:rand/randc变量声明,constraint约束块.其中randc会在重复之前,周期性取值,constraint约束块中的变量至少有一个rand/randc 变量,constraint约束块必须在{}内,用:来表…
Verilog-1995中规定的数据类型有:变量(reg), 线网(wire), 32位有符号数(integer), 64位无符号数(time), 浮点数(real). SV扩展了reg类型为logic,除了reg类型的功能外,可以用在连续赋值,门单元和模块所驱动.但是不能用在双向总线建模,不能有多点驱动. 其他数据类型:无符号双状态  bit, 有符号双状态32位   int, 有符号双状态8位     byte,                            //可以用内置函数  $…
SV中线程之间的通信可以让验证组件之间更好的传递transaction. SV对verilog建模方式的扩展:1) fork.....join 必须等到块内的所有线程都执行结束后,才能继续执行块后的语句.(所以使用的很少) 2) fork.....join_none 先执行块后的线程,而后再执行块内的线程.不会产生块后的线程必须等块内线程的情形. 3) fork.....join_any 只要块内的线程有一个执行结束,就执行块之后的线程. 需要说明一下,begin.....end之间的顺序操作,…
Interface:SV中新定义的接口方式,用来简化接口连接,使用时注意在module或program之外定义interface,然后通过'include来添加进工程. interface  arb_if(input bit clk);              //clk信号,一般单独拿出来 logic [1:0]grant, request;       //只定义信号类型.类型在不同的modport中分别定义. logic rst; clocking cb @(posedge clk); …
SV中class的properties和methods默认都是public的,但是可以声明为local和protected. 一个properties声明为local类型的,则只在该class中的methods可以调用该变量.即使subclass也不可以调用. local interger i; 一个properties或者methods声明为protected,与local类似,但是在subclass中可见. extern protected virtual automatic task_na…
OOP:Object-Oriented Programming,有两点个人认为适合验证环境的搭建:1)Property(变量)和Method(function/task)的封装,其实是BFM模型更方便的应 用.2)继承(Inheritance)与合成(Composition)非常适合一个架构的搭建. 在SV中,类可以定义在program, module, package中,但是一般一个类或几个相关的类会单独写在一个文件中.最终在program中调用.而且在SV中,所有成员 默认都是public类…
SV采用CRT的激励形式,而判断验证进度的标准也就是覆盖率(coverage). 覆盖率的两种指定形式:显式的,直接通过SV来指定出的,如SVA,covergroup. 隐式的,在验证过程中,随"register move"就可以由simulator得到的,如代码覆盖率等. 覆盖率类型:代码覆盖率---由仿真器直接提供,只能表示设计的冗余度,与spec关系不大.(toggle/expression/block) 功能覆盖率---与spec比较来发现,design是否行为正确,需要按ve…
1.受约束的随机测试法(CRT) 随着设计变得越来越大,要产生一个完整的激励集来测试设计的功能变得越来越困难.解决的办法是采用受约束的随机测试法自动产生测试集.CRT环境比定向测试的环境复杂,不仅需要产生激励,还需要通过参考模型.传输函数或其他方法预测输出结果.然而只要准备好了这个环境,就可以运行上百次的仿真而无需手工检查结果,从而提高工作效率,这也是CRT的优势:用CPU时间来换取人工检查的时间. 2.SV中的随机化 rand修饰符:表示每次堆积化这个类时,这些变量都会赋一个值. randc修…
randomize中的变量只支持2-state的values,不支持4-states. randc类型的变量不能被约束在solve------before的语句中. constraint可以被定义在class外: class  C: rand int x: constraint protol:    //隐式的 extern constraint protol2:    //显式的 endclass constraint C::protol { x inside {-4, 5, 7}; } co…
UVM中的类包括:基类(base)------------uvm_void/uvm_object/uvm_transaction/uvm_root/uvm_phase/uvm_port_base 报告(reporting)--------uvm_report_object/uvm_report_handler/uvm_report_server/uvm_report_catcher Factory---------uvm_*_register/uvm_factory 配置(config)----…