Jump to content
    

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

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

 

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

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

 

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

Share this post


Link to post
Share on other sites

Повторяю- программы написанные на академических 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 посмотреть.

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

Share this post


Link to post
Share on other sites

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

....

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

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

 

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

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

Share this post


Link to post
Share on other sites

Повторяю- программы написанные на академических 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

Share this post


Link to post
Share on other sites

Я предлагаю вам взять мой проект с опенкоресов, на 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, то результат с легкостью кроет по скорострельности любые изыски на академических языках, рожденных в мертвой тиши кабинетов.

Share this post


Link to post
Share on other sites

Извольте:

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Здесь использована мегафункция 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 никоим образом не изменит результат ее скорострельности. Алаверды: советую учить матчасть.

Share this post


Link to post
Share on other sites

Aprox:

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...