system verilog for verification:

  1. 类中的方法默认使用自动存储;
  2. 程序中的任务的局部变量会使用共享的静态存储区,若在程序的多个地方调用同一任务,不同线程之间会窜用这些局部变量;
  3. 全局变量($root)-程序变量-类变量-方法变量;
  4. 类应当在program或者module外的定义;
  5. 模块和程序块中的子程序缺省情况下仍然使用静态存储;
  6. 局部变量在仿真开始前就被赋了初值,当试图在声明中初始化局部变量时会出现问题,解决方法是避免在变量声明中赋予除常数以外的任何值;
  7. 在并发进程中务必使用自动变量来保存数值;
  8. 事件可以成为同步对象的句柄传递给子程序,最常见的方式是把事件传递到一个对象的构造器中;
  9. 将类中的子程序定义成虚拟的,这样它们就可在扩展类中定义;
  10. 如果你的基类构造函数有参数,那么扩展类必须有一个构造函数而且必须在其构造函数的第一行调用基类的构造函数;
  11. 若对其类中的方法使用virtual修饰符,SV会根据句柄所指向对象的类型,决定调用的是其类中的还是扩展类中的方法;若没使用virtual,则根据句柄的类型作出判断;
  12. 两种创建共享的基类:抽象类,可被扩展,但不能直接例化的类;纯虚方法,没有实体的方法原型;
  13. 一个抽象类扩展而来的类只有在所有虚方法都有实体时才能被例化,纯虚方法只能在抽象类中定义;
  14. 缺省情况下,byte shortint int integer longint是有符号的,bit reg logic以及其数组在缺省情况下是无符号的;
  15. 任何数据类型都可以声明成一个类成员;
  16. 类是一种数据类型,但没有直接的类变量或表达式,而仅仅存在类对象的句柄,并且类对象的句柄为单一值;
  17. continue和break语句不能在fork...join语句中用来控制位于fork...join块之外的循环;
  18. final块中可以使用的语句就是那些允许在一个函数声明中使用的语句。这就可以保证它们在一个仿真周期内执行。与initial块不同,final块不会作为一个单独的进程执行;相反,它的执行时间为0,与函数调用相同;
  19. Verilog-2001中的disable可以用来中断或继续一个循环,但不如SV中的break/continue好用,disable也可以用来关闭一个命名的未包含disable语句的块。如果那个块当前正在执行,会立即跳转到块之后的语句。如果块是一个循环体,那么它与continue起相同的作用。如果块当前没有执行,那么disable没有任何效果;  未完待续~~~