结构建立:注意一定要有接口,否则无法发送激励和监测激励
验证环境建立的三个步骤
1.结构
2.接口传递、组件连接
3.运行
在类里面,声明接口的指针一定要用virtual关键词
没有延迟
上升沿后1ns驱动
-
fork join相关知识。首先fork join内部语句时并行执行。
1.fork join:当fork join内部全部执行完之后,才会继续往下顺序执行;
2.fork join_none:fork join_none语句块执行的同时,父线程会继续执行,即全部并行执行;
3.fork join_any:执行到fork join_any内部语句时,当有任意一个语句执行完,那么后续的父类线程也会继续顺序执行。
直接调用task定义的test
-
首先在外部声明了句柄t,没有创建对象,开辟内存空间,在function new(int n)中,this.num和this.id是初始化外部的变量。在new函数里,不需要开辟内存空间。
-
而function chnl_trans get_trans();创建了一个chnl_trans类型的函数,可以看到该函数中t.data等,已经开辟了内存空间给t指向的对象。但是在该函数中并没有出现开辟函数内存空间的语句,因此会报错,t.data、t.id、t.num是引用chnl_trans类中的变量,需要实现开辟内存空间,因此需要在引用前先创建对象,如图修改。
-
首先,trans[$]用于存放句柄。在function new(int n)中创建实例,三个chnl在初始化时只创建一个实例,而在get_trans()函数中只有一个实例的话,不论data产生了多少,最终句柄都指向一个对象,只有一个数字,如果repeat(100),那么会产生1个句柄和第一百个数据,因为数据不断被覆盖直至最后一个。在function chnl_trans get_trans()内创建实例,每次调用产生数据都会创建一个对象,并将句柄保存至trans[$]中,如果repeat(100),那么会产生100个句柄和100个不同的数据。
tb4与tb3的不同在于,tb4把以下图的例化,放与chnl_agent类中进行例化。
chnl_agent agent[3];//例化三个agent,也就是例化了三个generator和initiator
在tb4模块里引入chnl_pkg包中的所有类。