Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Особенности разводки проектов в ISE
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Мур
Сделал важное открытие для себя с ISE как раз касательно времянок.
Просто в Кактусе считалось библиотечные примитивы работают всегда быстрее структур определяемых на HDL.
В ISE всё наоборот!
Мой комплексный проект (80% на НDL!) удалось поднять по скорости в 2 раза (с 68МГц до 120МГц) только за счёт того, что переписал блоки из библиотечных примитивов на чистый VHDL.
Вот так говорит практика...
Может кому время разработки сокращу(особенно кактусникам!)...
Leka
Надо еще учитывать, что "а=б+с" и "а=с+б" (утрированно) могут давать разный результат синтеза, на мелких примерах можно выявить подобные особенности синтезаторов.
DmitryR
Цитата(Мур @ Jan 28 2011, 12:20) *
Мой комплексный проект (80% на НDL!) удалось поднять по скорости в 2 раза (с 68МГц до 120МГц) только за счёт того, что переписал блоки из библиотечных примитивов на чистый VHDL.

Это как правило является результатом того, что вы или неправильно настроили корки, или неправильно их переписали. Потому если бы вы могли сходу писать лучше, чем инженеры Xilinx - то наверное работали бы уже там.
Мур
Цитата(DmitryR @ Jan 28 2011, 14:11) *
Это как правило является результатом того, что вы или неправильно настроили корки, или неправильно их переписали. Потому если бы вы могли сходу писать лучше, чем инженеры Xilinx - то наверное работали бы уже там.

Тю! К коркам нет претензий. Там ОК!
Вот простенький пример. Вот этот формирователь На HDL работает заметно быстрее!

Цитата
Как автор темы в целях невнесения путаницы прошу Вас завести собственную тему.


Не вижу никакой путаницы. Название темы слишком обширно. Радуйтесь!
VladimirB
Цитата(Мур @ Jan 28 2011, 13:41) *
Тю! К коркам нет претензий. Там ОК!
Вот простенький пример. Вот этот формирователь На HDL работает заметно быстрее!...

индусы много лет старательно портили схематик в ISE - а вы всё равно им пользуетесь, да вам памятник надо поставить biggrin.gif
я уж тоже было про корки подумал
Мур
Цитата(VladimirB @ Jan 31 2011, 22:48) *
индусы много лет старательно портили схематик в ISE - а вы всё равно им пользуетесь, да вам памятник надо поставить biggrin.gif
я уж тоже было про корки подумал

В схематике своя логика. Её можно понять со временем. Теперь я острого дискомфорта не испытываю...
Как следствие моего "открытия" конвеерные регисторные и триггерные вставки надо делать на HDL.
Maverick
Цитата(Leka @ Jan 28 2011, 11:46) *
Надо еще учитывать, что "а=б+с" и "а=с+б" (утрированно) могут давать разный результат синтеза, на мелких примерах можно выявить подобные особенности синтезаторов.

можно поподробнее про это...
Когда и где это может проявиться и где на следует обращать внимание?
disel
Цитата(Мур @ Jan 28 2011, 13:41) *
Вот простенький пример. Вот этот формирователь На HDL работает заметно быстрее!


Вы бы полностью примеры выложили, с временным отчетом. А также его конкурента на ХДЛ, также с отчетом.
Leka
Цитата(Maverick @ Feb 1 2011, 17:28) *
можно поподробнее про это...

Пример для ISE, Spartan3* :
Код
module tst(
   output[7:0] q,
   input [7:0] a, b,
   input ena, enb
);
   wire [7:0] aa = ena ? a : -1;
   wire [7:0] bb = enb ? b : 0;
   assign q = aa + bb;
   //assign q = bb + aa;
endmodule

- перестановка слагаемых вдвое уменьшает число ЛУТ (и уровней). Подобных фокусов - хватает...
ViKo
Цитата(Maverick @ Feb 1 2011, 15:28) *
можно поподробнее про это...
Когда и где это может проявиться и где на следует обращать внимание?

А вот мой пример
http://electronix.ru/forum/index.php?showtopic=82881
оставшийся без комментариев. Как я понял, все согласились и приняли к сведению sm.gif
Leka
Цитата(ViKo @ Feb 1 2011, 22:51) *
А вот мой пример
http://electronix.ru/forum/index.php?showtopic=82881
оставшийся без комментариев. Как я понял, все согласились и приняли к сведению sm.gif

Имхо, запись можно заметно упростить за счет индексов, тогда и комментарии будут. А так вникать надо...
Отписался в той ветке...
Maverick
Цитата(Leka @ Feb 1 2011, 19:47) *
Пример для ISE, Spartan3* :
Код
module tst(
   output[7:0] q,
   input [7:0] a, b,
   input ena, enb
);
   wire [7:0] aa = ena ? a : -1;
   wire [7:0] bb = enb ? b : 0;
   assign q = aa + bb;
   //assign q = bb + aa;
endmodule

- перестановка слагаемых вдвое уменьшает число ЛУТ (и уровней). Подобных фокусов - хватает...

прикольно, надо будет поиследовать biggrin.gif
Я не замечал...
Какая версия ISE на тот момент была установлена? В какой версией ISE в 10 или в 9 наблюдалось?
Leka
9.2 и 12.x
des00
Цитата(Maverick @ Feb 1 2011, 15:11) *
прикольно, надо будет поиследовать biggrin.gif
Я не замечал...

если правильно помню архитектуру хилого слайса, результат в данном случае очевиден, настолько, что даже объяснений не требует %)
litv
А если пользоваться еще и Synplify - то быстродействие будет еще выше и число вентилей меньше.Всякие перестановки типа арифметики synplify сам понимает и нормально оптимизит. XST - фигня.
ViKo
Цитата(des00 @ Feb 2 2011, 07:08) *
если правильно помню архитектуру хилого слайса, результат в данном случае очевиден, настолько, что даже объяснений не требует %)

Верю, что вам это видно. Но вот мне, в частности, не видно. Xilinx я вообще не знаю. Разбирает любопытство. Расскажете?
P.S. а мой проект был на Altera
Maverick
Цитата(des00 @ Feb 2 2011, 07:08) *
если правильно помню архитектуру хилого слайса, результат в данном случае очевиден, настолько, что даже объяснений не требует %)

может поделитесь опытом... wink.gif
И расскажите поподробнее
des00
Цитата(ViKo @ Feb 2 2011, 02:13) *
Разбирает любопытство. Расскажете?

Цитата(Maverick @ Feb 2 2011, 02:48) *
И расскажите поподробнее

ну в даташите же написано, гораздо интереснее самому узнать %) Куда именно смотреть в даташите лежит в атаче. И если вернуться к корню (с точки зрения важности) в примере Leka
Код
   wire [7:0] aa = ena ? a : -1;
   wire [7:0] bb = enb ? b : 0;

то становиться очевидно, почему aa + bb будет реализована по разному в зависимости от того, куда будет подцеплены aa и bb. А вот почему авторы ИСЕ не зрят в корень и делают все в лоб, вопрос лучше им задать %)
Мур
Цитата(disel @ Feb 1 2011, 17:32) *
Вы бы полностью примеры выложили, с временным отчетом. А также его конкурента на ХДЛ, также с отчетом.


Поразительно, но тот пример, что я приводил, в отчёте Clock Information , что в Design Summary, явно показывал выигрыш около 0.5нс при Speed Grade: -2
По приведенному фрагменту, схему которого я приводил(странно, что вызвало интерес!)
Цитата
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity log_fd is
Port ( clk : in STD_LOGIC;
dddin : in STD_LOGIC;
en : out STD_LOGIC);
end log_fd;

architecture fd2 of log_fd is
signal dd1 : STD_LOGIC;
signal dd2 : STD_LOGIC;

begin
ffr: process (CLK)
begin
if CLK'event and CLK = '1' then
dd1 <= dddin;
dd2 <= dd1;
end if;
end process;
en <= dd1 and not dd2;
end fd2;

Кстати, в одном из вариантов, скачок быстродействия получился, когда элемент И я спрятал в следующем за этим формирователем автомате(Копилятор методично показывал критичный путь именно в этом месте)

По всей видимости графические примитивы групируются на ПЛИС иначе, без учёта всего дизайна. Это скорее всего и вызывало узкое место, понижая цифры в отчёте
Minimum period: хххх ns (Maximum Frequency:ххххх MHz)

Тут важен сам подход. Мне пришлось перелопатить весь проект (около 20 мест) в таком-же ключе и с другими схемами в прототипе... ничего не меняя по архитектуре
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.