我想模拟一个具有简单的Addr/Data接口的模块。我想创建一个单独的模块,它将充当此模块的事务处理者。例如,我可以简单地调用事务处理机模块中的一个任务,该任务将执行地址和数据的写入。例如:
Transactor.Write_Task(0, 123); //Writes 123 to Addr 0.我的问题是,我是否应该做一个include来在测试台的顶部包含事务处理模块?或者,单独编译事务处理器并实例化它,然后将其连接起来,就像它是另一个正在测试的单元一样,这是一种更好的方法吗?例如:
\lib_Local_Bus.Local_Bus_Transactor Transactor
(
.i_LB_Clk(w_LB_Clk),
.o_LB_CS(w_LB_CS),
.o_LB_Wr_Rd_n(w_LB_Wr_Rd_n),
.o_LB_Addr8(w_LB_Addr8),
.o_LB_Wr_Data(w_LB_Wr_Data),
.i_LB_Rd_Data(w_LB_Rd_Data),
.i_LB_Rd_DV(w_LB_Rd_DV)
);我觉得简单地将它包含在include中会更容易,但是我需要正确地指出它,这可能是一个问题。通过预编译它,像UUT一样实例化它,并将它连接起来,有更多的代码,但它更直接地了解正在发生的事情。
发布于 2014-10-11 05:10:00
经典的方法是将其视为任何其他模块,这意味着它作为自己的文件存在,您可以在顶级测试平台中一起实例化事务处理程序和DUT。这就是我工作过的大多数普通Verilog环境的编码方式。
该模块可以提供一个基于队列的接口以将事务排队到其中,也可以提供一个基于任务的接口,然后可以从测试中调用该接口,例如
initial
begin : test_block
Transactor.Send(data1);
->stimulus_complete;
endhttps://stackoverflow.com/questions/26064601
复制相似问题