2014-10-20 3 views
0

Это более объективный вопрос. Что лучше всего проверить тактовую частоту? (В основном при работе с моделированием RTL, Gate моделирование уровня следует отключить эти проверки)Как проверить частоту с помощью UVM/Systemverilog

Раньше я делал это с утверждениями, но я хотел бы получить мнение, так как я столкнулся некоторыми из следующих вопросов:

  1. Рассмотрите протокол SPI, часы действительны только тогда, когда CS действительна, поэтому проверка должна быть только тогда, когда CS отменяется, это не превращается в прямое утверждение, так как конфигурация пэда изменяет сроки и функциональность CS.

  2. Часы, которые не имеют точного периода даже при моделировании RTL, в зависимости от логических часов имеет +/- диапазон.

ответ

0

Если вы хотите, чтобы проверить частоту часов, я думаю, вы знаете, когда часы действует, а затем вы можете запустить моделирование в течение некоторого времени и поддерживать тактовый счетчик, то вы получите $ времени и счетчик, частота = $ время/счетчик. Примерно вы можете получить частоту.

Если вы хотите проверить точность или рабочий цикл, я думаю, что это связано с особенностью часов, должно принадлежать к категории аналогового дизайна, такой как PLL, Oscillators. Аналоговый инженер должен доказать правильность. Они могут использовать симуляцию специй.

Да, это хорошая тема для обсуждения не только для SV/UVM.

Пожалуйста, исправьте меня, если мое понимание неверно. :-)

+0

Спасибо, Вопрос ориентирован на часы, порождаемых цифровой логики (для, например, периодического запуска, но в зависимости от занятого начала сигнала может иметь 10% погрешность) – wisemonkey

0

Привет вы можете использовать утверждение проверить период тактового/частота здесь один пример:

Часы с 50% рабочего цикла и частотой 1 МГц

property p_clk_hi; 
     time v; 
     @(posedge clk) (1, v=$time) |-> @(negedge clk) ($time-v)==500ns; 
    endproperty 
    ap_clk_hi: assert property(p_clk_hi); 

property p_clk_lo; 
    time v; 
    @(negedge clk) (1, v=$time) |-> @(posedge clk) ($time-v)==500ns; 
endproperty 
ap_clk_lo: assert property(p_clk_lo); 

endmodule

+0

Это точно, как Я закодировал свои утверждения, я надеялся увидеть, есть ли другие способы/способы. Это утверждение должно заботиться о +/- 10 (скажем)% допустимой погрешности. (например, при периодическом запуске, но в зависимости от запуска занятого сигнала может иметь 10% от поля ошибки) – wisemonkey

0

В вашем RTL if, количество часов меньше, тогда утверждения были бы лучшим выбором, но если у вас будет огромное количество часов, то реализация «Clock Checker» будет лучшим вариантом.

Часы проверки обеспечивает различные преимущества по сравнению с СВА, как

  • повторного использования
  • Лучше Конфигурируемость
  • легко реализовать дополнительные функции, такие как нагрузочный цикл, Ton, измерения TOFF и т.д.
  • Все преимущества УФМ

Обзор внедрения:

Как показано на блок-диаграмме ниже, нам необходимо создать простой агент проверки чек с созданным в нем экземпляром, интерфейсом и конфигурационным классом, а также создать тестовый файл, который позволяет проверять с помощью дескриптора конфигурации. Implementation Overview Nikunj Hinsu

Две проблемы, которые Вы сталкиваетесь можно просто решить с помощью этой проверки

  1. Через интерфейс, вы можете также передать сотовую немного, чтобы шашка, и все тактовые SPI может быть отключена во время низкого состояния CS.
  2. С помощью тестовой панели вы можете передать поле допуска (то есть + -5%, 10%), которое будет контролировать контрольную логику проверки &.

В дополнение к этому шашка становится спасителем, если у вас есть сверхскоростные IP-адреса, такие как PCIe, где частота часов изменяется в соответствии с Gen1, Gen2, Gen3 во время моделирования.

Надеюсь, это решает вашу проблему !!

  • Nikunj Hinsu