Jump to content
    

Quartus и System verilog не дружат?

Добрый день. Пытаюсь скомпилировать в Q91 код ув. Des (БЧХ декодер). Как оказалось, SV и verilog отличаются сильно, с SV раньше не работал, разбираюсь.

 

Во первых, Q91 похоже не поддерживает typedef ? Ругался на него,

 

было:

typedef bit [m-1 : 0] mult_t [0 : m-1];

mult_t MULT_BY_A;

 

указал явно тип:

bit [m-1 : 0] MULT_BY_A [0 : m-1];

 

с этим ок, сейчас затык с always_comb. Посмотрел доку на квартус - написано поддерживает, в реальности на код

  rom_t   ALPHA_TO;
  rom_t   INDEX_OF;
  bit [m-1 : 0]  MULT_BY_A [0 : m-1];

  always_comb begin
  
    ALPHA_TO  = generate_gf(m, n, p, 0);
    INDEX_OF  = generate_gf(m, n, p, 1);
    MULT_BY_A = generate_mult_by_a(pALPHA_IDX);
  end

  function mult_t generate_mult_by_a (input int index_of_a = 1);
    bit [m-1 : 0] mult [0 : n];
    bit [m-1 : 0] coe;
  begin
    // initialize poly & multiplicate it by alpha^index_of_a
    for (int i = 0; i < index_of_a; i++) begin

…
…

 

Q91 реагирует так:

 

Info: *******************************************************************
Info: Running Quartus II Analysis & Synthesis
    Info: Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Full Version
    Info: Processing started: Tue May 10 18:32:58 2011
Info: Command: quartus_map --read_settings_files=on --write_settings_files=off qtest_bch -c qtest_bch
Info: Parallel compilation is enabled and will use 2 of the 2 processors detected
Info: Found 1 design units, including 1 entities, in source file qtest_bch_sv.sv
    Info: Found entity 1: qtest_bch_sv
Info: Elaborating entity "qtest_bch_sv" for the top level hierarchy
Error (10170): Verilog HDL syntax error at bch_mult_by.vh(14) near text "begin";  expecting ".", or "("
Error (10149): Verilog HDL Declaration error at bch_mult_by.vh(16): identifier "n" is already declared in the present scope
Error (10170): Verilog HDL syntax error at bch_mult_by.vh(16) near text "0";  expecting an identifier
Error (10149): Verilog HDL Declaration error at bch_mult_by.vh(17): identifier "n" is already declared in the present scope
Error (10149): Verilog HDL Declaration error at bch_mult_by.vh(17): identifier "p" is already declared in the present scope
Error (10170): Verilog HDL syntax error at bch_mult_by.vh(17) near text "1";  expecting an identifier
Error (10170): Verilog HDL syntax error at bch_mult_by.vh(26) near text "i";  expecting "="
Error (10170): Verilog HDL syntax error at bch_mult_by.vh(26) near text "<";  expecting "<=", or "="
Error (10170): Verilog HDL syntax error at bch_mult_by.vh(26) near text "+";  expecting "<=", or "="

Где беда - не понимаю, подскажите.

 

Share this post


Link to post
Share on other sites

Во первых, Q91 похоже не поддерживает typedef ? Ругался на него,

не может такого быть, потому что этот код используется в 3-х проектах собираемых в 9.1 ;)

 

включите поддержку SV, 99.99% что вы забыли это сделать

 

Share this post


Link to post
Share on other sites

Ради спортивного интереса собрал декодер на Q9.0. Все завелось, только потребовалась небольшая доработка напильником: объявление logic fifo[$] в bch_dec.v я закомментировал. Еще пофиксил ругань на неименованность блока generate в bch_chieny_search.v

Share this post


Link to post
Share on other sites

Ради спортивного интереса собрал декодер на Q9.0. Все завелось, только потребовалась небольшая доработка напильником: объявление logic fifo[$] в bch_dec.v я закомментировал. Еще пофиксил ругань на неименованность блока generate в bch_chieny_search.v

угу, это осталось от дебага, не заметил.

 

UDP. новый релиз в атаче, добавлена поддержка укороченных кодов, возможность инстанса более одного декодера, с разными параметрами в проект, последовательный алгоритм определения полинома локаторов ошибок для медленных каналов, оптимизирован ресурс (убраны лишние регистры) и изменен принцип синхронизации буфера данных.

 

Зы. копирайты только забыл поставить ;)

bch_release_10052011.zip

Share this post


Link to post
Share on other sites

не может такого быть, потому что этот код используется в 3-х проектах собираемых в 9.1 ;)

 

включите поддержку SV, 99.99% что вы забыли это сделать

 

Спасибо, нашел опцию, вроде получается (пока пробую на другом квартусе, 81)... :)

Share this post


Link to post
Share on other sites

Все дружит - проверено.

Несколько вариантов решения проблемы (по вероятности) -

1. отключена поддержка SystemVerilog (у меня такое было - ругань выводилась похожая)

2. глюки Кварта под линуксом - лечится перезапуском.

3. удаление каких-то файлов отвечающих за SystemVerilog.

Share this post


Link to post
Share on other sites

Не стал создавать новую тему, вопрос в сущности в том же самом. Пытаюсь ввести в свою профессиональную жизнь такой интересный язык как SystemVerilog, со всеми его плюшками. Установлен Quartus II 9.1 без SP-ов. В настройках проекта во вкладке Verilog HDL Input стоит выбор на SystemVerilog-2005. Расширение файла проекта *.sv (пробывал и *.v). В проекте пробывал использовать различные конструкции SystemVerilog-а, структуры типа:

struct  {
   int a;
   byte b;
   bit [7:0] c;
} my_data_struct; 
my_data_struct.a = 123;

интерфейсы... и т.д.

Короче на все это Quartus ругается таким же образом, типа

Error (10170): Verilog HDL syntax error at my_sv.sv(14) near text "=";  expecting ".", or "("
Error (10170): Verilog HDL syntax error at my_sv.sv(23) near text "interface";  expecting "endmodule"

Складывается впечатление, что не удается подключить SystemVerilog-овский компилятор. Не подскажет кто нибудь, может еще какие-то настройки нужно изменить или проверить наличие каких-нибудь библиотечных файлов, может быть SP нужно установить...

Заранее спасибо...

Share this post


Link to post
Share on other sites

[Тихо сам с собой виду беседу]

Все, решил проблему, с компилятором все нормально, были синтаксические ошибки в коде.

По ходу ознакомления с кодом des00 возникло очередное недопонимание. В файле bch_enc_dec_tb.v описывается класс

 class data_trans;

А Quartus 9.1 говорит что он класы не поддерживает

d34ac9a125209c8edb360ba377ff369c.jpg

Значит они обманывают, и классы все таки поддерживаются?

Share this post


Link to post
Share on other sites

По ходу ознакомления с кодом des00 возникло очередное недопонимание. В файле bch_enc_dec_tb.v описывается класс

[...]

Значит они обманывают, и классы все таки поддерживаются?

Вы тестбенч с синтезом не путайте.

Share this post


Link to post
Share on other sites

Вы тестбенч с синтезом не путайте.

хм... да действительно. А не посоветует кто-нибудь какого нибудь ресурса, где можно по-подробнее почитать от начала до конца от процесса создания RTL-модели до его верификации, на каком-нибудь примере желательно. В идеале на русском, но сойдет и на английском.

Edited by nkie

Share this post


Link to post
Share on other sites

хм... да действительно. А не посоветует кто-нибудь какого нибудь ресурса, где можно по-подробнее почитать от начала до конца от процесса создания RTL-модели до его верификации, на каком-нибудь примере желательно. В идеале на русском, но сойдет и на английском.

в шапке форума тема про языки описания, там есть перечень рекомендуемой литературы

Share this post


Link to post
Share on other sites

Уважаемый des00, а не могли бы вы у себя в блоге, как будет время немножко свободного, набросать небольшую статейку о полном цикле разработки модели. Т.е. от разработки RTL-модели, написания тестбенча, проведения моделирования и верификации на примере всем известного БЧХ-декодера. Не обязательно подробно, хватило бы даже коротко остановиться на основных вехах. С помощью каких утилит и инструментов выполнялось то или иное действие, основные подводные камни, поджидающие разработчика на том или ином этапе. Для новичков такое описание очень бы помогло.

Share this post


Link to post
Share on other sites

Уважаемый des00, а не могли бы вы у себя в блоге, как будет время немножко свободного, набросать небольшую статейку о полном цикле разработки модели. Т.е. от разработки RTL-модели, написания тестбенча, проведения моделирования и верификации на примере всем известного БЧХ-декодера. Не обязательно подробно, хватило бы даже коротко остановиться на основных вехах. С помощью каких утилит и инструментов выполнялось то или иное действие, основные подводные камни, поджидающие разработчика на том или ином этапе. Для новичков такое описание очень бы помогло.

Спасибо за такое вниманием к проекту %) Изначально он зарождался именно как просто проект для статьи в блоге, посвященной возможностями SV для быстрой и качественной разработки проектов. Но потом вырос в отдельный проект, был интегрирован в коммерческие проекты, а изначальная цель забыта из-за недостатка времени %(. Не уверен что в ближайшей перспективе, у меня будет время собраться с мыслями и оформить статью, поэтому ничего не буду обещать.

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...