Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Post-PAR симуляция ISE + Modelsim
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Intekus
Симулирую post-PAR в Modelsim проект ISE. Наблюдаю воспроизводимый эффект: при выборе опции "keep hierarchy: yes" при симуляции полученных нетлистов выводы, на которые поданы VCC и GND находятся в "x" (в том числе входы сброс PLL, соответственно тактовые не генерируются). Наблюдал ли кто подобный эффект? Чем вызвано и как обходится?
Post-MAP даёт тот же результат, симуляция со стадий synthesis / translate - всё нормально.
По результатам экспериментов значение netlist_hierarchy (Rebuilt или As Optimized) на результат не влияло.
keep hierarchy: soft пока не пробовал.
UPD: на "soft" всё нормально (как на "No").
Boris_TS
Пожалуйста, по конкретнее:
какой ISE вы пользуетесь, и какие ISE еще стоят на Вашей машине ?
какая именно FPGA ?
какой именно Modelsim Вы используете, и какие еще стоят симуляторы ?
откуда взяты библиотеки ?

У меня были подобные проблемы на AHDL 7.3 с CoolRunner 1 (только у меня не VCC/GND, а BUF (на которых собирались задержки) глючили - т.е. имели всегда X на выходе) - если вкратце, то были проблемы с библиотеками.
Intekus
Спасибо за отклик!
Цитата(Boris_TS @ Nov 4 2010, 19:11) *
какой ISE вы пользуетесь, и какие ISE еще стоят на Вашей машине ?

ISE 11.1 установка чистая (11.1->11.3). Сейчас проверяю на второй машине, где раньше стоял 9.2 - всё так же.
Цитата(Boris_TS @ Nov 4 2010, 19:11) *
какая именно FPGA ?
какой именно Modelsim Вы используете, и какие еще стоят симуляторы ?
откуда взяты библиотеки ?

Virtex5. Modelsim SE 6.5b, других - никаких. Собраны из ISE (на второй машине - прямот только что первый раз для этой машины).
Сейчас попробую создать ещё один проект с нуля - может, всё наладится (тогда следует детально сличать настройки проектов).
Boris_TS
Цитата(Intekus @ Nov 5 2010, 15:56) *
ISE 11.1 установка чистая (11.1->11.3). Сейчас проверяю на второй машине, где раньше стоял 9.2 - всё так же.

Virtex5. Modelsim SE 6.5b, других - никаких. Собраны из ISE (на второй машине - прямот только что первый раз для этой машины).
Сейчас попробую создать ещё один проект с нуля - может, всё наладится (тогда следует детально сличать настройки проектов).

Хорошо, можно считать, что у Вас не может быть проблем от перечечений версий ISE и ModelSim. Надеюсь, у Вас нет и пересечения Modelsim и Active HDL, т.к. про последний Вы не упомянули. Если Active HDL всё-таки стоит, но Вы не используете его для симуляции - то выкиньте из переменной окружения Path все записи связанные с AHDL.

Я делал временное моделирование для V-5LXT, но на ISE 10.1SP3 и Modelsim SE 6.2f - всё было успешно.
А вот с ISE 10.1SP3 и Modelsim SE 6.4b - даже при функциональном моделировании возникали проблемы.
Вы указали Modelsim SE 6.5b, в местных закромах лежит Modelsim SE 6.5d. Попробуйте взять его - c Modelsim SE 6.5d у меня не было проблем с функциональным моделированием (возникавшие, с Modelsim SE 6.4b) ни с ISE 10.1SP3, ни с ISE 11.5. Может переход от B к D решит ваши проблемы. Также, у Вас используется ISE 11.3 - может быть, 11.4/11.5 смогут Вам помочь. Обратите внимание, есть known isues для 11.5 и V5xxT, которых не было в 11.4 (видать напортачили с V-5xxT, когда улучшали поддержку V-6).
Intekus
Модели VCС и GND я проверил, вручную редактируя post-map netlist и подключая их к отдельным проводникам - всё корректно, на выходах "1" и "0" соответственно. Стал разбираться, дальше комментируя куски и переименовывая сигналы; в итоге пришёл к вопросу-просьбе обладателям Modelsim: попробовать просимулировать присоединённые файлы.
Скрипты make.do и make2.do запускают 2 файла, отличающихся одной (5256-ой) строчкой - в одном она раскомментирована. Строка - присваивание по assign. Причём из результатов make.do видно, что оба сигнала висят в "1" всю симуляцию. Но make2.do показывает, что при раскомментировании этого присваивания - они оба становятся "x", "утягивая" за собой в него ещё много что в схеме. Пробовал в Modelsim SE 6.5b; интересно было бы узнать результаты в других версиях - или услышать (допускаю, что простое и очевидное blush.gif ) объяснение, почему так происходит.
CaPpuCcino
Цитата(Intekus @ Nov 6 2010, 17:45) *
Модели VCС и GND я проверил, вручную редактируя post-map netlist и подключая их к отдельным проводникам - всё корректно, на выходах "1" и "0" соответственно. Стал разбираться, дальше комментируя куски и переименовывая сигналы; в итоге пришёл к вопросу-просьбе обладателям Modelsim: попробовать просимулировать присоединённые файлы.
Скрипты make.do и make2.do запускают 2 файла, отличающихся одной (5256-ой) строчкой - в одном она раскомментирована. Строка - присваивание по assign. Причём из результатов make.do видно, что оба сигнала висят в "1" всю симуляцию. Но make2.do показывает, что при раскомментировании этого присваивания - они оба становятся "x", "утягивая" за собой в него ещё много что в схеме. Пробовал в Modelsim SE 6.5b; интересно было бы узнать результаты в других версиях - или услышать (допускаю, что простое и очевидное blush.gif ) объяснение, почему так происходит.

ну, так и не в симуляции дело, а в том что у вас на одном проводе(NlwRenamedSignal_GLOBAL_LOGIC1) висят 3 источника, хоть один и константа, но 2 других-то не константа, а входы to_bank_i[61], [68]
чем вы их грузите в тестбенче?
на первый взгляд это ошибка Layout-а.

UPD а что за библиотека secureip? как её генерить?
Boris_TS
Цитата(CaPpuCcino @ Nov 8 2010, 18:28) *
а что за библиотека secureip? как её генерить?

Если ничего не путаю, то 'та библиотека содержит Xilinx Hardware IPCores simulation model, соответственно Xilinx аж весь дрожит, чтоб никто не узнал, как оно на cаом деле коряво внутри работает. Mentor предлагает сторонним разработчикам (Aletra, Xilinx и пр.) определённый програмный интерфейс, при помощи которого можно подключать внешние симуляционные модули (DLL). Это всё интегрируется/компилируется вызовом из ISE фрагментов ModelSim.
CaPpuCcino
Цитата(Boris_TS @ Nov 8 2010, 19:25) *
Если ничего не путаю, то 'та библиотека содержит Xilinx Hardware IPCores simulation model, соответственно Xilinx аж весь дрожит, чтоб никто не узнал, как оно на cаом деле коряво внутри работает. Mentor предлагает сторонним разработчикам (Aletra, Xilinx и пр.) определённый програмный интерфейс, при помощи которого можно подключать внешние симуляционные модули (DLL). Это всё интегрируется/компилируется вызовом из ISE фрагментов ModelSim.

спасибо, это понятно (ЗЫ кстати, не DLL, а объектники в скомпилинованных библиотеках). не понятно где их генерить, там же где и всякие simprim, или где-то отдельно в коргене? кстати, а библиотека эта действительно нужна для симуляции, а то меня терзают смутные сомнения - мутным взором углядел только примитив встроенной памяти(если не ошибся), а для неё вроде более unisim/simprim ничего не требуется?
Intekus
Цитата(CaPpuCcino @ Nov 8 2010, 18:28) *
ну, так и не в симуляции дело, а в том что у вас на одном проводе(NlwRenamedSignal_GLOBAL_LOGIC1) висят 3 источника, хоть один и константа, но 2 других-то не константа, а входы to_bank_i[61], [68]
чем вы их грузите в тестбенче?

to_bank_i[61], [68] подключены к той же константе 1, что и видно по результатам первой симуляции.
Вообще, по нетлисту получалось, что ВЫХОДЫ модулей, уже подключённые внутри них к каким-то входам, в свою очередь заведённым где-то раньше на VCC / GND, ISE подключил не к выделенным соединительным проводникам, а к прямо общим шинам VCC / GND (GLOBAL_LOGIC1 и GLOBAL_LOGIC0) соответственно. Но, по логике, "кольца" проводников (когда между 2 точками есть несколько путей - по соединениям внутри модуля и по VCC /GND "в обход") - вполне допустимое явление (или нет?), и не должны "обваливать" сигналы на них в "x", если единственный подключённый к такому кольцу источник - константа 1 или 0.
Цитата(CaPpuCcino @ Nov 8 2010, 18:28) *
на первый взгляд это ошибка Layout-а.

В смысле - создаваемой для симуляции модели? Без сохранения иерархии всё симулилось корректно. Более того, аналогичные странности наблюдались и для версии проекта, работавшей "в железе".
des00
скрипты запустить не могу, т.к. нет хилых либ. Если сделать модель того что происходит
Код
module subtb (input a, b);

  reg c;

  wire   one = a;
  assign one = b;
  assign one = c;

  initial begin
    #10ns;
    c = 1'b1;
  end
endmodule

module tb;

  reg a;
  initial begin
    #10ns;
    a = 1'b1;
  end

  subtb uut (a, a);

endmodule

то всё работает, но видно что в начальный момент пролетают 'x' из-за инициализации reg. Может этот пичек попадает на какой либо аккумулятор и выносит вашу логику? попробуйте использовать ключ +initireg+0 при комплиции и моделировании .
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.