2013-12-01 2 views
3

Я пытаюсь сбросить массив (рег [31: 0] данных [31: 0]), но я не могу сделать это успешно. Я пробовал так, что находится в iverilog вики:

integer idx; 
for (idx = 0; idx < 32; idx = idx + 1) 
    $dumpvars(0,cpu_tb.cpu0.cpu_dp.cpu_regs.data[idx]); 

Он работает, но 2 вещи случаются.

  1. предупреждение появляется: предупреждение VCD: массив слова cpu_tb.cpu0.cpu_dp.cpu_regs.data [0] будет конфликтовать с беглым идентификатором.
  2. В GTKWave у меня есть что-то вроде этого в окне SST: \ Data [0] [31: 0]

Есть ли решение по этому поводу?

Заранее благодарим за мой английский.

ответ

0

Я отправил по электронной почте список рассылки Icarus Verilog. Вот некоторые ответы:

Чтобы дамп слово массива Икар нужно бежать имя так совместим с форматом VCD дампа. Вот что такое \ data [0] [31: 0]. Это - это 32-битное слово массива данных. Поскольку экранированное имя и имя массива теперь могут конфликтовать, Icarus выдает предупреждение. Это было бы лучше, если бы он мог проверить конфликт с экранированным идентификатором и только распечатать сообщение, когда есть проблема, но, как я помню, это не удалось.

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

Я согласен, что было бы неплохо, если бы мы могли сделать предупреждение более точным, , но мы, как правило, заняты работой над другими вещами, так немного раздражали , которые кажутся сложными, чтобы исправить не часто исправляются. Как я писал , и это было несколько лет, проблема заключается в том, что вы ищете для экранированного идентификатора найденный элемент массива и там никак не в VPI, чтобы искать следующее вхождение. Возможно, , что поиск элемента массива в поиске Icarus по имени реализация является ошибкой.

Cary


«Для того, чтобы дамп слово массива Икар нужно бежать имя так совместим с форматом VCD дампа Вот что \ данные [0] [31: 0].. Это Это 32-разрядное слово в массиве данных. Поскольку имя экранированного и имя массива теперь могут быть конфликтующими, Icarus выдает предупреждение . Было бы лучше, если бы он мог проверить конфликт с экранированным идентификатором и только распечатать сообщение, когда есть проблема, но, как я знаю, это было невозможно ».

... Я не думаю, что есть необходимость избежать имен. Как VCS (за которым следует fsdb2vcd), так и CVC испускают имя напрямую без проблем .Пример вырезания и вставки, показанный ниже:

$ var wire 5 `'IC_DrAd0 [3] [4: 0] $ end $ var wire 5 a' IC_DrAd0 [2] [4: 0] $ end $ var wire 5 b 'IC_DrAd0 [1] [4: 0] $ end $ var wire 5 c' IC_DrAd0 [0] [4: 0] $ end

Я понимаю, что спецификация VCD не определяет это, но я приходилось складывать в много таких расширений в gtkwave на протяжении многих лет, так как другие инструменты генерируют эти конструкции. Эскалаты могут привести к сохранению файла несовместимостей (отсутствующих сигналов) при попытке имитации на iverilog против VCS.

Со временем конструкции SV, вероятно, приведут к добавлению дополнительных вещей в файлы VCD . AFAIK, часть VCD спецификации 1364 совсем не обновлялась с Verilog-XL. CVC обходит возможные несовместимости по , добавляя + dump_arrays plusarg (и нет, вам не нужно зацикливать на каждый элемент массива ).

-Tony

Я также послал письмо к GTKWave создателя Тони Bybell:

Здравствуйте,

Проблема заключается в том, что компилятор не излучающие эти значения в свалку файл. Вам нужно будет связаться с разработчиками iverilog . Я вижу ту же проблему, если я запускаю sim и сравниваю с еще один симулятор, такой как CVC с включенным + dump_arrays, который делает сбрасывает массивы, и они видны в gtkwave.

http://iverilog.wikia.com/wiki/Release_Notes_Icarus_Verilog_0_9_2 | Разрешить $ dumpvars принять член массива для захоронения,

... похоже во время «начального» времени вам может понадобиться добавить заявление $ dumpvars для каждого массив элемента вы хотите сбрасывали. Я не знаю, если имя массива само по себе работает. Присвоение каждому элементу «провод» тоже может работать.

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

-Тони