代码之家  ›  专栏  ›  技术社区  ›  Halona

如何从序列中锁定驱动程序项队列?

  •  0
  • Halona  · 技术社区  · 7 年前

    在我的验证环境中,在同一个驱动程序上几乎没有同时运行的序列(无论一个项何时获得与其他序列项相关的总线)。

    但是,现在我需要添加额外的序列,它将同时运行到执行原子读修改写的其他序列。 我的新序列如下:

    // Atomic READ-MODIFY-WRITE
    body() @driver.clock is only {
    
        do read_item keeping {
            .cmd                == RD; 
            .addr               == addr;
        };
    
        // Wait random time;
    
        do write_item keeping {
            .cmd                == WR;
            .addr               == addr;
            .data               == data;  
        };
    };
    

    问题是 read_item write_item ,其他序列中的项获取总线。您知道如何从序列中锁定驱动程序的项队列吗?所以我可以阻止其他序列在我的读写项之间添加它们的项?

    谢谢你的帮助

    1 回复  |  直到 7 年前
        1
  •  1
  •   Tudor Timi    7 年前

    你可以使用 grab(...) ungrab(...) 方法 any_sequence 要独占访问序列驱动程序:

    // Atomic READ-MODIFY-WRITE
    body() @driver.clock is only {
    
        grab(driver);
    
        do read_item keeping {
            .cmd                == RD; 
            .addr               == addr;
        };
    
        // Wait random time;
    
        do write_item keeping {
            .cmd                == WR;
            .addr               == addr;
            .data               == data;  
        };
    
        ungrab(driver);
    };