本文的目的在于总结,总结在应用中可以不注意的点,导致出现意想不到的错误,下面暂时给出下面几条总结
(1)TLM 端口的参数类型必须一致才可以试下连接,两边类型不一样,即使是一边是parent_class,一边是child_class,发生连接时也会报错
(2)sequencer和driver的参数类型必须一致,本质上是TLM端口的连接
(3)sequence和sequencer的参数类型可以出现不一致的情况,但是要满足parent_class,child_class的关系,因为在sequencer中将sequence发过来的transaction存放至内部的参数化类的FIFO中前,会进行$cast转换,在RAL模型就有使用场景中,uvm_reg_map中进行do_bus_write时,调用的sequence是默认是sequence,默认的参数类型是uvm_seqeunce_item,而sequencer的参数类型是bus_item.
(4)当sequence和sequencer的参数类型不一致时,可能需要在driver中取得item的时候,先进行处理,比如动态转化,再去驱动interafce或者做别的操作。
先总结到这,后续有相关总结的也会放在这篇文章中。