Как положить конец всем остающимся возражениям в OVM - PullRequest
0 голосов
/ 01 марта 2019

Я нахожусь в фазе пробега и допустим, я поднял 20 возраженийЯ хочу закончить все эти 20 возражений, уже поднятых и поднять 20 новых возражений в той же фазе, не переходя к следующей фазе.Может кто-нибудь подсказать, пожалуйста, как этого добиться?

1 Ответ

0 голосов
/ 01 апреля 2019

Вот первый метод (вы не знаете, сколько возражений было подано):

  phase.raise_objection(this);
  phase.raise_objection(this);
  //your code here
  m_phase.drop_objection(this, "", m_phase.get_objection_count(this));

Вот тот же метод (если вы знаете, сколько возражений было подано):

  phase.raise_objection(this, "raise 3 objections", 3);
  //your code here
  m_phase.drop_objection(this, "drop 3 objections", 3);
  end

Менее умный метод, но стоит упомянуть:

  `uvm_info(get_type_name(), $sformatf("Dropping all objections now"), UVM_MEDIUM)  
  for (int i=0 ; m_phase.get_objection_count(this) > 0; i++) begin
    `uvm_info(get_type_name(), $sformatf("Dropping objection #%d", i), UVM_MEDIUM)
    m_phase.drop_objection(this);
  end

Более подробную информацию о классе uvm_phase вы можете найти здесь: https://verificationacademy.com/verification-methodology-reference/uvm/docs_1.2/html/files/base/uvm_phase-svh.html

Я также написал эти примеры, чтобы вы могли попробовать их здесь:https://www.edaplayground.com/x/2KLd

...