Я отправил по электронной почте список рассылки 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
Здравствуйте,
Проблема заключается в том, что компилятор не излучающие эти значения в свалку файл. Вам нужно будет связаться с разработчиками iverilog . Я вижу ту же проблему, если я запускаю sim и сравниваю с еще один симулятор, такой как CVC с включенным + dump_arrays, который делает сбрасывает массивы, и они видны в gtkwave.
http://iverilog.wikia.com/wiki/Release_Notes_Icarus_Verilog_0_9_2 | Разрешить $ dumpvars принять член массива для захоронения,
... похоже во время «начального» времени вам может понадобиться добавить заявление $ dumpvars для каждого массив элемента вы хотите сбрасывали. Я не знаю, если имя массива само по себе работает. Присвоение каждому элементу «провод» тоже может работать.
Я никогда не пробовал эту функцию в iverilog, поэтому я не знаю, работает ли . Возможно, вам придется экспериментировать или спрашивать разработчиков.
-Тони