System verilog SystemVerilog接口输入信号定时

System verilog SystemVerilog接口输入信号定时,system-verilog,System Verilog,我正在尝试为具有有效/就绪握手的模块开发一个测试台驱动程序。 但是,来自接口(就绪信号)的输入值显示其时钟的不确定性行为 在大多数上升沿上,它提供上升沿前的值,但在其他情况下,它提供上升沿后的值。 我正在使用QuestaSim 64位10.5c运行模拟 下面是接口声明 // interface interface mem_intf(input logic clk, reset); logic req_valid; logic

我正在尝试为具有有效/就绪握手的模块开发一个测试台驱动程序。 但是,来自接口(就绪信号)的输入值显示其时钟的不确定性行为

在大多数上升沿上,它提供上升沿前的值,但在其他情况下,它提供上升沿后的值。 我正在使用QuestaSim 64位10.5c运行模拟

下面是接口声明

// interface
interface mem_intf(input logic clk, reset);
    logic               req_valid;
    logic               req_ready;

    // driver clocking block
    clocking driver_cb @(posedge clk);
        default input #1 output #0;
        output req_valid;
        input  req_ready;
    endclocking

    // driver modport
    modport DRIVER  (clocking driver_cb, input clk, reset);

endinterface
这是一项驱动/监控信号的任务

`define DRIV_IF mem_vif.DRIVER.driver_cb

class driver;
    ...
    // creating virtual interface handle
    virtual mem_intf mem_vif;

    // constructor
    function new(virtual mem_intf mem_vif, ...);
        // getting the interface
        this.mem_vif = mem_vif;
        ...
    endfunction

    task run();
        fork
            drive_req();
            ...
        join
    endtask;

    task drive_req;
        // initial values
        `DRIV_IF.req_valid  <= 0;

        // wait for the completion of reset
        wait(!mem_vif.reset);
        @(mem_vif.DRIVER.driver_cb);

        forever begin
            @(mem_vif.DRIVER.driver_cb);
            $display("%d %d %d", $time, mem_vif.DRIVER.req_valid, mem_vif.DRIVER.req_ready);
        end
    endtask
`如果mem_vif.DRIVER.DRIVER_cb定义DRIV_
类驱动程序;
...
//创建虚拟接口句柄
虚拟内存intf mem_vif;
//建造师
新功能(虚拟内存intf内存vif等);
//获取接口
this.mem_vif=mem_vif;
...
端功能
任务运行();
叉
驱动器_req();
...
参加
结束任务;
任务驱动需求;
//初始值

`DRIV\u IF.req\u有效您将显示
mem\u vif.driver\u cb.req\u ready
<代码>驱动程序
不是层次范围,它是一个modport。@非常感谢dave_59。它解决了我的问题,如果没有你,我要花几个星期才能发现我的错误!您将显示
mem\u vif.driver\u cb.req\u ready
<代码>驱动程序不是层次范围,它是一个modport。@非常感谢dave_59。它解决了我的问题,如果没有你,我要花几个星期才能发现我的错误!