对外开放的公共成员:
class_name_channel out_chan; //output channel
int unsigned stop_after_n_inst; //仅仅生成n个产品,并放入out_chan中
class_name randomized_obj; //由blueprint拷贝生成的对象
两个事件,GENERATED和DONE //GENERATED表示产品拷贝生成,DONE表示生产成品全部送入out_chan
inject(class_name obj, ref bit dropped) 函数 // 通常不使用,只有在direct测试时,不start
// atomic_gen 时,即不让其main 函数执行时,
// 才会通过直接调用inject task 往 out_chan
// 发送transaction
在产品拷贝生产之后,放入out_chan之前,可以通过callback的方式,修改产品。我们只需要在
Packet_atomic_gen_callbacks 的扩展类中重新定义
virtual task post_inst_gen(Packet_atomic_gen gen, Packet obj, ref bit drop);
inject 函数欣赏:
viruta