2015-07-16 7 views
1

Я использую Cadence по Ethernet EVC, в котором монитор агента сливают на следующих сигналов:Проблема синхронизации симулятора Specman?

.   ____________     _____ 
.clk _____|   |__________________| 
.  ________ _______ ________________ _________ 
.data __0a____X___07__X_______0b_______X_________ 
.     ^^ 

It данных образцов при возрастающих и спадающих фронтов тактового сигнала. В приведенном выше примере данные 0x07 являются данными мусора, а допустимыми значениями являются 0xa (повышение clk) и 0xb (clk fall). Тем не менее, монитор является выборкой (для clk fall) 0x7!

Я подозреваю, что это проблема синхронизации синхронного симулятора. Как это можно решить, если это так?

  • Simulator - IES 13.10
  • Ирун 13.10 варианты - (я включу здесь только те, которые я думаю, что может иметь отношение к данному вопросу, а также те, которые я понятия не имею, но то, что их цель)

    -nomxindr 
    -vhdlsync 
    +neg_tchk 
    -nontcglitch 
    +transport_path_delays 
    -notimezeroasrtmsg 
    -pli_export 
    -snstubelab 
    
  • Языки - VHDL (верхний испытательный стенд), Verilog (ИУ), Specman (виртуальная последовательность, Enet и ОСР eVCs)

  • времени между 0x07 (слева^в приведенной выше формы сигнала), и задний фронт часы (справа ^) = 0.098ns

Один коллега предложил использовать -sntimescale, но я до сих пор не могу представить, как это вызывает/будет решать проблему. Любая из этих строк поиска не показывала полезных подсказок, даже те статьи из Cadence: «точность тайм-тайма синхронизации таймера синхронизации»

+0

Удостоверьтесь, что временные рамки и точность одинаковы для ваших VHDL, Verilog, e и т. Д.? '-sntimescale' может помочь, однако я считаю, что этот вариант предназначен только для specman e; вам может потребоваться найти эквивалентный вариант компилятора для VHDL и Verilog.Большинство симуляторов Verilog/SystemVerilog по умолчанию равны 1ns/1ns, поэтому 0.098ns будет округлено до 0. Также могут быть задержки синхронизации в testbench/DUT или возможное неправильное использование блокировки/неблокирования. – Greg

+0

Как создаются ваши события часов Specman? Связаны ли они с той же сетью часов? –

+0

@RossRogers Поскольку это Enet eVC, который собирает информацию о пакете, я предполагаю, что он также использует событие выборки '@ driver.clock'. Эти часы - это те же часы в форме волны. – renvill

ответ

2

Это действительно может быть проблемой временного масштаба. Существует всеобъемлющая поваренная книга, в которой рассказывается об устранении проблем синхронизации интерфейса симулятора specman. пожалуйста, посмотрите here.

Чтобы проверить, что такое временная шкала, используемая в симуляции, вы можете добавить опцию irun для печати точности для иерархии VHDL: -print_hdl_precision. Для Verilog он будет напечатан автоматически, если он установлен либо в коде, либо через опции irun. информация будет напечатана во время разработки.

Чтобы проверить временную шкалу, используемую Specman, вы можете выполнить следующую команду из Specman строки:
SN> печать get_timescale()

Другой вариант, чтобы попробовать (только после того, как вариант шкалы времени не помогает) - удалить флаг -vhdlsync. Действительно, в большинстве смешанных сред вы должны добавить этот флаг. Но есть редкие случаи, когда окружающая среда работает без нее. Если вы попытаетесь удалить этот флаг, просто не забудьте пересмотреть его.

Если вы не нашли решения для своей проблемы в кулинарной книге, необходимо провести более глубокое расследование. например, как specman производит выборку сигнала. это простой_порт, event_port, доступ к тику и т. д. Также могут быть полезны некоторые команды трассировки и зондирования. В таком случае я предлагаю обратиться в службу поддержки Cadence.

Удачи!
Semadar

+0

Ссылка «cookbook» нарушена. Можете ли вы его обновить? – Zvika

+0

Я обновил ссылку. но вы также можете перейти в онлайн-службу Cadence (COS) и выполнить поиск, поскольку ссылка может снова измениться в будущем. – Semadar