首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于模拟的模块实例

用于模拟的模块实例
EN

Stack Overflow用户
提问于 2014-09-27 00:56:30
回答 1查看 119关注 0票数 1

我想模拟一个具有简单的Addr/Data接口的模块。我想创建一个单独的模块,它将充当此模块的事务处理者。例如,我可以简单地调用事务处理机模块中的一个任务,该任务将执行地址和数据的写入。例如:

代码语言:javascript
复制
Transactor.Write_Task(0, 123); //Writes 123 to Addr 0.

我的问题是,我是否应该做一个include来在测试台的顶部包含事务处理模块?或者,单独编译事务处理器并实例化它,然后将其连接起来,就像它是另一个正在测试的单元一样,这是一种更好的方法吗?例如:

代码语言:javascript
复制
\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一样实例化它,并将它连接起来,有更多的代码,但它更直接地了解正在发生的事情。

EN

回答 1

Stack Overflow用户

发布于 2014-10-11 05:10:00

经典的方法是将其视为任何其他模块,这意味着它作为自己的文件存在,您可以在顶级测试平台中一起实例化事务处理程序和DUT。这就是我工作过的大多数普通Verilog环境的编码方式。

该模块可以提供一个基于队列的接口以将事务排队到其中,也可以提供一个基于任务的接口,然后可以从测试中调用该接口,例如

代码语言:javascript
复制
  initial
    begin : test_block
      Transactor.Send(data1);
      ->stimulus_complete;
    end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26064601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档