Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: симулятор в quartus2
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
shf_05
есть некоторая схема, перенесенная из MAX2.
мне необходимо посимулировать ее работу на epm240, проект компилируется.
я создал vwf файл, подал на входы необходимые сигналы.
вижу, что происходит на портах output, а вот поглядеть результат на "промежуточных" шинах не знаю как.
вывести с этих шин сигнал через output порт не получается- все ножки ПЛИС заняты и fitter не дает поставить еще один порт на 16бит.
пробовал с virtual pin, но пока не разобрался.

подскажите как поглядеть на сигналы в симуляторе (simulation waveform), у которых нет выхода(входа).
sazh
Цитата(shf_05 @ Feb 19 2010, 14:10) *
есть некоторая схема, перенесенная из MAX2.
мне необходимо посимулировать ее работу на epm240, проект компилируется.
я создал vwf файл, подал на входы необходимые сигналы.
вижу, что происходит на портах output, а вот поглядеть результат на "промежуточных" шинах не знаю как.
вывести с этих шин сигнал через output порт не получается- все ножки ПЛИС заняты и fitter не дает поставить еще один порт на 16бит.
пробовал с virtual pin, но пока не разобрался.

подскажите как поглядеть на сигналы в симуляторе (simulation waveform), у которых нет выхода(входа).

Регистры модно посмотреть в post-compilation (пониже портов втой же вкладке).
Intekus
Ох навозился в своё время с этим... Перенимайте опыт smile.gif (пока не перешли на нормальные симуляторы)
Способ "в лоб" - найти нужный сигнал в отсинтезированном проекте и добавить в waveforms. Искать либо просто по иерархии (точно не помню уже - где-то там есть раскрывающееся дерево) , либо через RTL Viewer / TechMap Viewer. Начиная с какой-то свежей версии они поддержвали добавление в waveforms по контекстному меню и даже просто drag-n-drop в окно.
Теперь, самое интересное: часто "результат на "промежуточных" шинах" просмотреть таким образом не удаётся, потому что они оказываются искажены / выброшены в ходе оптимизаций. В этом случае обычно использовался специальный модуль, состоящий из регистра параметризованной разрядности, со входами (тактовый и шина данных), без выхода, и записанным с директивой (* noprune *) (не выбрасывать при синтезе даже при нулевом fan-out); после чего в waveform цепляется содержимое этого регистра.
  • Да, значение при этом отстаёт на такт (либо на пол-такта, если работать по спаду)
  • Да, это изменяет схему (может сбить времянку)
но, похоже, это единственный способ посмотреть промежуточные сигналы, обойдя оптимизации.
Код
//-?---- Модуль-щуп - просмотр значений сигналов без протяжки через иерархию -
module d_watch7 #(parameter W = 0) (//Debug Watch for Quartus II 7.0 and later.
//Наблюдение значения входа, задержанного на пол-такта.
  input [W-1:0]               d,      //Целевой информационный вход.
  input                         clk);
  (* noprune *) reg [W-1:0]   r;
  always @(negedge clk)
    r <= d;
endmodule
Intekus
Цитата(des333 @ Feb 20 2010, 00:18) *

Код
wire keep_wire /* synthesis keep */;

Пробовал, иногда (правда, ещё на Q 5 дело было) не срабатывало - поэтому и стал ставить регистр (в Q 5 - ещё и с хитростями, там noprune не было). Если в современных версиях это на 100% заработало - хорошо.
shf_05
Цитата(Intekus @ Feb 19 2010, 23:23) *
Ох навозился в своё время с этим... Перенимайте опыт smile.gif (пока не перешли на нормальные симуляторы)

спасибо, в лоб как раз и не получилось,попробую.
какие есть нормальные симуляторы? (есть ли такие в qartus || web edition?)
Andron_
виртуальный пин...
цепляете его к нужному месту... правой кнопкой на нем... Эссайнмент эдитор... там свойство виртуал пин и значение On...
shf_05
Цитата(Andron_ @ Feb 20 2010, 13:46) *
виртуальный пин...
цепляете его к нужному месту... правой кнопкой на нем... Эссайнмент эдитор... там свойство виртуал пин и значение On...

так я и делал, пока фиттер не сказал, что мой проет использован по пинам на 120%.
des333
Цитата(Intekus @ Feb 20 2010, 10:50) *
Код
wire keep_wire /* synthesis keep */;

Пробовал, иногда (правда, ещё на Q 5 дело было) не срабатывало - поэтому и стал ставить регистр (в Q 5 - ещё и с хитростями, там noprune не было). Если в современных версиях это на 100% заработало - хорошо.


Пару раз пробовал - работало, но 100% гарантии не дам.  smile.gif
Intekus
Цитата(shf_05 @ Feb 20 2010, 11:11) *
какие есть нормальные симуляторы? (есть ли такие в qartus || web edition?)

ModelSim - вероятно, самый массовый, но вполне подходящий даже для весьма больших и сложных проектов; сам использую сецйчас его.
QuestaSim - более продвинутый, как и первый от Mentor Graphics.
NCSim - симулятор от Cadence
VCSim - от Synopsys
Это продукты "большой тройки".
А вообще смотрите Симуляторы (несмотря на название, там и про VHDL / SystemC).
Кроме того, ModelSim поставляется в 2 урезанных и привязанных к вендору ПЛИС версиях - Altera Edition и Xilinx Edition; они снабжены библиотеками элементов соответствующих ПЛИС, несколько урезаны по возможностям, и, естественно, дешевле.
Andron_
Цитата
так я и делал, пока фиттер не сказал, что мой проект использован по пинам на 120%.

он похоже не принял к сведению указание... бывает, квартусу плохеет и он не размещает виртуальные пины как виртуальные... попробуйте квартус перезапустить и заново назначить свойство... он в отчете компиляции показывает, сколько было использовано виртуальных пинов.
sazh
Цитата(Andron_ @ Feb 20 2010, 21:13) *
он похоже не принял к сведению указание... бывает, квартусу плохеет и он не размещает виртуальные пины как виртуальные... попробуйте квартус перезапустить и заново назначить свойство... он в отчете компиляции показывает, сколько было использовано виртуальных пинов.


С таким же успехом при отладке проекта можно взять другое семейство под 1000 ног.
Но обычно промежуточных регистров вполне хватает для отладки.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.