首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将modport接口连接到最初未使用modport声明的模块

如何将modport接口连接到最初未使用modport声明的模块
EN

Stack Overflow用户
提问于 2022-06-24 14:06:55
回答 2查看 171关注 0票数 0

我有一个模块,我最初写的如下:

代码语言:javascript
运行
复制
module design_name #(
  parameter AWIDTH = 32,
  parameter DWIDTH = 32,
  ...
  ) (
  input wire clk,
  input wire rst,
  input wire [AWIDTH-1:0] write_addr,
  ...
);
// logic, etc.
endmodule

当然,我现在想在一个测试平台上测试这个块。我想要使用一个接口,所以我创建了这样一个接口:

代码语言:javascript
运行
复制
interface design_name_if #(
  parameter AWIDTH = 32,
  ...
) (
  input clk
);
  logic rst;
  logic [AWIDTH-1:0] write_addr;
  ...
  
  modport des (
    input rst,
    input write_addr,
    ...
  );
endinterface

我想我的问题现在开始了;我如何在我的测试平台中使用这个接口?我目前有:

代码语言:javascript
运行
复制
module tb;

  reg clk;

  design_name_if intf (clk);

  design_name dut (
    .clk        (intf.clk),
    .rst        (intf.ndm.rst),
    .write_addr (intf.ndm.write_addr),
    ...
// I don't think the above is correct

  initial begin
    clk = 0; // or intf.clk = 0; ?
    rst = 0;
    forever #1 clk = ~clk;
    #10
    rst = 1;
  end
endmodule

我还尝试过其他一些简单的逻辑,比如尝试断言某些信号和其他东西,但我甚至无法让clk启动,在运行模拟时我也无法得到rst断言。如果这很重要,接口将在相同的文件中在tb上面声明。显然,我正在测试的模块位于另一个文件中。我可以通过在测试台内声明所有信号为reg和连线来使测试台不需要接口工作,但是我想使用一个带有任务、功能等的接口。任何帮助都很感谢,谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-26 16:42:44

你们很亲密。只需去掉引用中的modport -- modport不是作用域,它是端口连接或虚拟接口引用的一组访问权限。

代码语言:javascript
运行
复制
 design_name dut (
    .clk        (intf.clk),
    .rst        (intf.rst),
    .write_addr (intf.write_addr),
    ...
票数 0
EN

Stack Overflow用户

发布于 2022-06-24 14:37:22

有几个问题:

  1. 从结构的角度来看,一个接口只是一堆电线。线材intf.clk不同于线材clk。发布的代码使用永久循环驱动clk,但是testbench将intf.clk连接到dut,dut没有被驱动,因此dut不会看到任何时钟(驱动dut clk输入引脚的电线没有驱动程序)。此模式也存在于信号/线/变量rst上。

  1. 在测试工作台中的状态

永远#1 clk = ~clk;

语句位于初始块的中间。这将阻止同一初始块中的所有其他语句执行。例如,它永远不会执行#10或rst =1语句。解决方案是使用不同的初始块或始终块驱动时钟(无论您选择何种时钟来使用接口或本地声明)。

  1. 没有$finish在初始刺激块结束时停止测试。这个测试平台将在一个无限循环中运行模拟器。初始块需要模板:

初始begin $finish;end

这样,测试就不会使模拟器陷入循环。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72745305

复制
相关文章

相似问题

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