【问题标题】:How do I pass multiple clocking blocks with different polariy from an system verilog interface?如何从系统 Verilog 接口传递多个具有不同极性的时钟块?
【发布时间】:2021-02-03 02:28:46
【问题描述】:

我有一个系统verilog界面

interface XZY(input clk, input reset, input a, output b);
    clocking cb @(posedge clk);
        input a;
        output b;
    endclocking: cb

   modport master(clocking cb, input reset);


endinterface: XYZ

我将接口作为virtual interface 传递给我的驱动程序。

驱动程序正在使用moport(master)。

现在我需要访问驱动程序中时钟的posedgenegedge

我可以通过@cb 轻松访问posedge

如何访问negedge

我是否需要为negedge 创建另一个modport/clocking block 并将其单独传递给驱动程序?

【问题讨论】:

  • 在这种情况下,您可以通过 modport 传递 'clk' 并使用它的边缘。

标签: system-verilog uvm


【解决方案1】:

我会推荐一个时钟块用于正边沿和负边沿时钟。您可以在 modport 中列出这两个时钟模块。在驱动程序/监视器中时,您不需要 modport。

如果您想动态选择具有相同时钟模块的极性,请在此处查看我的答案:Changing clocking block clock polarity on the fly。这适用于极性模式开关;如果在同一个事务中需要两条边,我不会推荐它。

【讨论】:

    【解决方案2】:

    如果您选择使用时钟块作为访问接口中信号的唯一机制,那么您必须创建另一个时钟块。我通常不会在验证界面中使用 modport,但您必须将时钟模块添加到现有的 modport 或添加另一个。

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多