Interface 相同的TCMs具有不同的采样事件

Interface 相同的TCMs具有不同的采样事件,interface,clock,verification,specman,tcm,Interface,Clock,Verification,Specman,Tcm,我写了TCM来计算AXI接口。每个接口的TCM主体完全相同,但采样事件不同 是否可以创建一个TCM并使用不同的采样事件(时钟)运行多次?您启动的每个TCM都会创建自己的线程。 通过在实例基础上更改采样事件,可以使用不同的采样事件运行。 例如,您有两个监视器实例,其中TCM在采样事件@sample上运行。可以使用aspect orientation(此处使用aspect名称)修改事件 这是一个完美的解决方案。extend mon1'name mon和extend mon1 mon之间有什么区别吗

我写了TCM来计算AXI接口。每个接口的TCM主体完全相同,但采样事件不同


是否可以创建一个TCM并使用不同的采样事件(时钟)运行多次?

您启动的每个TCM都会创建自己的线程。 通过在实例基础上更改采样事件,可以使用不同的采样事件运行。 例如,您有两个监视器实例,其中TCM在采样事件@sample上运行。可以使用aspect orientation(此处使用aspect名称)修改事件



这是一个完美的解决方案。extend mon1'name mon和extend mon1 mon之间有什么区别吗?没有区别,mon1'mon只是更明确,因为它命名了要区分的行列式字段。
<'
type m_name : [mon1, mon2];
unit mon {
  name : m_name;  // using this aspect to distinguish instances
  event sample;
  tcm()@sample is {
    while (TRUE) {
      message(LOW, "TCM running in " , me);
      wait;
    };
  };
  run() is also {
    start tcm();
  };
};

extend sys {
  // create an event running at half sys.any speed
  !flag: bool;
  on sys.any { flag = not flag;}; 
  event clk is true(flag)@sys.any;

  // 2 mon instances with different names
  m1 : mon is instance;
    keep m1.name == mon1;
  m2 : mon is instance;
    keep m2.name == mon2;
};

// change sampling events per instance
extend mon1'name mon {
  event sample is only @sys.any;
};
extend mon2'name mon {
  event sample is only @get_enclosing_unit(sys).clk;
};
'>