Те же самые TCM с другим событием выборки
Я написал TCM для некоторых расчетов на интерфейсах AXI. Тело TCM полностью одинаково для каждого интерфейса, но событие выборки отличается.
Можно ли создать один TCM и запустить его несколько раз с разными событиями выборки (тактовыми генераторами)?
1 ответ
Каждый TCM, который вы запускаете, создает свой собственный поток. Вы можете работать с различными событиями выборки, изменяя событие выборки на основе экземпляра. Например, у вас есть 2 экземпляра монитора с TCM, запущенным при событии выборки @sample. Вы можете изменить событие, используя аспектную ориентацию (здесь, используя имя аспекта).
<'
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;
};
'>