在优化OOP的代码过程中,要紧紧结合OOP的三大特点:封装、继承和多态。
- 采用local定义局部变量。将只有driver中才能用到的中间变量封装在class内。
- 可以在ahb_trans中新定义各种变量,非常容易维护。
使用time类型定义时间类型的变量:start_time end_time
在ahb_trans里面定义一个function—print,调用时可以将所有信息打印出来。
将function放在class外面的方法:在class内部声明一个function,此时不要定义;再在class外面写该funcion时在返回值的后面写上方法名字,并加上双冒号::(指明定义域),指明该function归属于那个class。
- 将driver中决定什么时候该停止的问题交给generator
用que_q.size()判断该不该发数据,判断该不该把slave的slex信号拉低。把跳出循环终止循环的问题交给generator来做。
在env_top中将其定义为全局变量,就可以在上面generator的末尾访问master_driver,将master_driver里面产生的计数交给generator。
但仍然存在一个问题,不能够想什么时候产生激励就什么时候产生激励。
于是,去掉了全局变量sim_trans_q,将产生的激励直接放入到driver中,但这样看来,其实driver和generator不是完全独立的,两者之间有着联系,这就要靠后面进程之间的通信来解决了,可以用一个mailbox来让两个进程之间产生通信。
最终的代码就如下所示: