Перейти к содержанию
    

тема для Aprox и любителей AHDL

...SystemVerilog, который заточен Альтерой под свои кристаллы...

Вы смотрели список товарисчей, которые учавствовали в разработке SV ??

Я там лично альтерного большинства не видел :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что же касается SystemVerilog, который заточен Альтерой под свои кристаллы ...

 

SystemVerilog - это универсальный язык и никто его не затачивал. Этот же алгоритм можно переписать на простом верилоге - будет немного по-другому выглядеть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пора заводить список 'перлов' Aprox. Начало уже было положено - http://electronix.ru/forum/index.php?showt...st&p=750721

 

Новые пополнения:

7. SV это язык, сделанный Alter'ой на замену AHDL

 

PS. Тему пора в оффтопик :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Повторяю- программы написанные на академических VHDL или Verilog дают производительность схем как правило хуже, чем тот же самый алгоритм, оформленный на языке AHDL для кристаллов от Altera.

 

Зачем AHDL так обижать. Он вообще то язык высокого уровня. И тот же счетчик на нем можно по разному описать, не обязательно опираясь на мегафункцию

PARAMETERS (WIDTH = 8);
SUBDESIGN COUNTER_B
(
  Clock: input;
  Clock_out: output;
)
VARIABLE
  RG[WIDTH-1..0]: DFF;
BEGIN
  RG[].clk = Clock;
  RG[]     = RG[]+1;
  Clock_out = RG[WIDTH-1];
END;

На верилоге будет практически тоже самое.

А анализировать открытые корки лично мне не интересно. Мне интересно как Вы думаете. Ради этого можно и AHDL посмотреть.

(Вы умудрились практически всех завести)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Повторяю- программы написанные на академических VHDL или Verilog дают производительность схем как правило хуже, чем тот же самый алгоритм, оформленный на языке AHDL для кристаллов от Altera.

....

Я всего лишь предлагаю des00 проверить мой тезис, что писать на академических языках, не заточенных под конкретный кристалл - это всегда проигрыш в быстродействии схемы

Хорошо, я перепишу этот кодер на чистый verilog 2001 и vhdl 93, для частоты эксперимента. С вас жду ваш AHDL ный код.

Что же касается SystemVerilog, который заточен Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL, то тут и сравнивать нечего- это одно и то же в плане синтеза.

вы меня конечно простите, но это бред, синтез с SV в квартусе это синтез с Verilog + дополнительные типы данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Постоянно происходит подмена моего тезиса. Повторяю- программы написанные на академических VHDL или Verilog дают производительность схем как правило хуже, чем тот же самый алгоритм, оформленный на языке AHDL для кристаллов от Altera. Что же касается SystemVerilog, который заточен Альтерой под свои кристаллы теми же приемами использования примитивов, что и AHDL, то тут и сравнивать нечего- это одно и то же в плане синтеза. Совершенно напрасно des00 рвется доказывать очевидные вещи. Я всего лишь предлагаю des00 проверить мой тезис, что писать на академических языках, не заточенных под конкретный кристалл - это всегда проигрыш в быстродействии схемы. Вот, пусть и попробует взять из опенкоров какую-нибудь простенькую корку на VHDL и, ничего в ней не переписывая и не улучшая, как она есть, прогнать на Quartus для выяснения реального быстродействия в железе.

 

Из чего у Вас следует вывод, что исходники на опенкорсес - это "написанные на академическом языке", а то, что написал des00 - заточено конкретно под Альтеру?

Уверен, что его исходник можно собрать под любую другую FPGA, и там тоже все будет оптимально.

 

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

Собственно, за что часто ругают С++ по сравнению с С :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Повторяю- программы написанные на академических VHDL или Verilog дают производительность схем как правило хуже, чем тот же самый алгоритм, оформленный на языке AHDL для кристаллов от Altera.

В аттаче проект с 4 мя модулями,

 

enc8b10b - исходная идеальная модель кодера написанная в лоб на SV

enc8b10b_1 - первый вариант алгоритмической оптимизации модуля за счет таблиц на SV

enc8b10b_v - модуль enc8b10b_1 переписанный под академический verilog 2001

enc8b10b_2 - модуль enc8b10b_1 переписанный с учётом баги 9.1сп2 квартуса с обработкой таблиц заданных как localparam (на 9.0 баги нет)

 

выбран специально самый маленький и самый тормозной сыклон 3. вот результаты

 

enc8b10b

Device : EP3C5E144C8
Timing Models : Final
Total logic elements : 144 / 5,136 ( 3 % )
    Total combinational functions : 130 / 5,136 ( 3 % )
    Dedicated logic registers : 38 / 5,136 ( < 1 % )

Info: Fmax Summary
    Info:                Restricted
    Info:         Fmax         Fmax      Clock Note
    Info: ============ ============ ========== =====================
    Info:   102.92 MHz   102.92 MHz        clk

enc8b10b_1

Device : EP3C5E144C8
Timing Models : Final
Total logic elements : 151 / 5,136 ( 3 % )
    Total combinational functions : 137 / 5,136 ( 3 % )
    Dedicated logic registers : 38 / 5,136 ( < 1 % )

Info: Fmax Summary
    Info:                Restricted
    Info:         Fmax         Fmax      Clock Note
    Info: ============ ============ ========== =====================
    Info:   146.93 MHz   146.93 MHz        clk

 

enc8b10b_v

Device : EP3C5E144C8
Timing Models : Final
Total logic elements : 116 / 5,136 ( 2 % )
    Total combinational functions : 103 / 5,136 ( 2 % )
    Dedicated logic registers : 38 / 5,136 ( < 1 % )

Info: Fmax Summary
    Info:                Restricted
    Info:         Fmax         Fmax      Clock Note
    Info: ============ ============ ========== =====================
    Info:   183.72 MHz   183.72 MHz        clk

enc8b10b_2

Device : EP3C5E144C8
Timing Models : Final
Total logic elements : 116 / 5,136 ( 2 % )
    Total combinational functions : 103 / 5,136 ( 2 % )
    Dedicated logic registers : 38 / 5,136 ( < 1 % )

Info: Fmax Summary
    Info:                Restricted
    Info:         Fmax         Fmax      Clock Note
    Info: ============ ============ ========== =====================
    Info:   183.72 MHz   183.72 MHz        clk

Как видите, по степени "понятливости" академический Verilog даже сделал SV (за счет баги в квартусе, но сделал).

 

Я всего лишь предлагаю des00 проверить мой тезис, что писать на академических языках, не заточенных под конкретный кристалл - это всегда проигрыш в быстродействии схемы

Я предлагаю вам взять мой проект с опенкоресов, на SV, написать его аналог на AHDL и выложить в тему для сравнения по обозначенным пунктам. Тогда мы оба этих проекта погоняем по синтезу.

 

ЗЫ. Ваш AHDL код 8b10b кодера в студию, а то игра идет в одни ворота !!!

 

PPS. VHDL вариант будет много позже, все же я не работал на этом языке 4 года %)

coder_8b10b.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я предлагаю вам взять мой проект с опенкоресов, на SV, написать его аналог на AHDL и выложить в тему для сравнения по обозначенным пунктам. Тогда мы оба этих проекта погоняем по синтезу.

ЗЫ. Ваш AHDL код 8b10b кодера в студию, а то игра идет в одни ворота !!!

Извольте:
INCLUDE "my_rom.inc";

SUBDESIGN enc8b_10b
(
clk, symbol_in[7..0], extra	: INPUT;
symbol_out[9..0] : OUTPUT;
)
VARIABLE
encoder: my_rom;

BEGIN
encoder.clock=clk;
encoder.address[]=(extra,symbol_in[]);
symbol_out[]= encoder.q[];
END;

Здесь использована мегафункция Altera- lpm_rom. В этой ROM, в ее 512-ти словах зашита таблица перекодировки. Вход extra для генерации служебных символов. Скорострельность этого кодера на AHDL составляет 238,10 MHz для EP3C5E144C8. Как видите, если применять специально заточенные под архитектуру Altera мегафункции, а это и происходит автоматически в Quartus на языке AHDL, то результат с легкостью кроет по скорострельности любые изыски на академических языках, рожденных в мертвой тиши кабинетов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По моему вы сравниваете твердое с горячим! :)

 

Вы не справедливы. Убедительная победа уже в 1 раунде.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извольте:
Абзац! Aprox продолжает нас радовать по полной программе. :laughing:

Здесь использована мегафункция Altera- lpm_rom. В этой ROM, в ее 512-ти словах зашита таблица перекодировки.
Нравятся мне такие 'решения' :rolleyes:

Как видите, если применять специально заточенные под архитектуру Altera мегафункции,
А AHDL - это специальный язык для написания оптимальных кусков ROM'а для архитектуры Alter'ы :yeah:

а это и происходит автоматически в Quartus на языке AHDL, то результат с легкостью кроет по скорострельности любые изыски на академических языках, рожденных в мертвой тиши кабинетов.
К сожалению это происходит исключительно у Aprox и исключительно по причине полного непонимания сути дела. :lol:

 

NB. Aprox, ваша скорострельная таблица это еще не 8b10b кодер (таблица, кстати, еще и неправильная - не хватает по одному входу и выходу, учите матчасть). Аналогичное фуфло кодер на Verilog даст столько же :1111493779:

 

2 des00 - можно проверить? (Ну нету у меня квартуса)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 des00 - можно проверить? (Ну нету у меня квартуса)

А там проверять нечего - там только обертка  :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2Aprox: а где running disparity? Вы функциональность Вашего модуля вообще проверяли? Хотя бы по сравнению с альтеровской моделью?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здесь использована мегафункция Altera- lpm_rom. В этой ROM, в ее 512-ти словах зашита таблица перекодировки.
Нравятся мне такие 'решения' :rolleyes:
Функцию свою мой кодер выполняет? - Да, выполняет! Что же вам не нравится? И потом, мой соперник des00 использует таблицы в своей программе кодера на языке SV. Почему вы мне отказываете в таком же подходе? Может потому, что des00 непрерывно вычисляет в реальном времени значения перекодировки, а я просто заранее записал их в ROM и не заставляю FPGA трудиться в поте лица?

AHDL - это специальный язык для написания оптимальных кусков ROM'а для архитектуры Alter'ы :yeah:
Повторяю, синтезатор Quartus автоматически использует готовые, специально заточенные под архитектуру Altera мегафункции, если распознает их использование в тексте ADHL. Я просто слегка помог Quartus увидеть нужную для кодера мегафункцию.
К сожалению это происходит исключительно у Aprox и исключительно по причине полного непонимания сути дела. :lol:
Я же представил в студию, как просили, чемпиона по скорострельности на языке AHDL. В чем же вы увидели мое якобы непонимание сути дела?

NB. Aprox, ваша скорострельная таблица это еще не 8b10b кодер (таблица, кстати, еще и неправильная - не хватает по одному входу и выходу, учите матчасть). Аналогичное фуфло кодер на Verilog даст столько же :1111493779:
Добавление одного входа и выхода в схему на ROM никоим образом не изменит результат ее скорострельности. Алаверды: советую учить матчасть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Aprox:

А как Вы думаете, можно ли использовать мегафункцию lpm_rom в модули, написанном на Verilog? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...