在SystemVerilog中,是否可以使用属性打印整个对象? (这里我不知道在我的父类中声明了多少变量 . )
虽然LRM没有提到它,但是一些模拟器允许你使用 $display("%p", object_handle); .
$display("%p", object_handle);
这很可能是对象的浅色打印,这意味着它不会打印对象包含的任何类对象 . 它也不允许您格式化单个属性,例如radix . 出于这些原因,您应该只使用它来进行快速调试 .
大多数方法,如UVM,都要求您在所有类中提供一组虚拟方法,例如convert2string()或print() . 这样,您可以在类的print()方法中调用 super.print() 来打印基类中的所有属性,并且可以类 property_handle.print() 来打印包含的类的所有成员 .
super.print()
property_handle.print()
1 回答
虽然LRM没有提到它,但是一些模拟器允许你使用
$display("%p", object_handle);
.这很可能是对象的浅色打印,这意味着它不会打印对象包含的任何类对象 . 它也不允许您格式化单个属性,例如radix . 出于这些原因,您应该只使用它来进行快速调试 .
大多数方法,如UVM,都要求您在所有类中提供一组虚拟方法,例如convert2string()或print() . 这样,您可以在类的print()方法中调用
super.print()
来打印基类中的所有属性,并且可以类property_handle.print()
来打印包含的类的所有成员 .