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

Какой язык, плис, среда?

41 minutes ago, andrew_b said:

Verilog провоцирует на написание такого говнокода, который на VHDL в принципе невозможен.

1. Нет, не провоцирует.

2. Есть известное изречение о том, что языки, призванные бороться с идиотией, очень быстро сами становятся идиотскими.

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


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

4 минуты назад, one_eight_seven сказал:

1. Нет, не провоцирует.

Ну да, когда вы соединяете шины разной разрядности и в ответ получаете только варнинг, а потом начинаете выяснять, а чо оно не работатет, это не провокация, нет.

Или забываете продекларировать сигнал,  а в ответ тоже варнинг, это просто замечательно.

Я сейчас имею дело с проектом, написанном на этом вашем СистемВерилоге. Его писал не я. В проекте используется хренова туча IP-ядер, написананных на том же прекрасном (Систем)Верилоге. И когда синтезатор выдаёт несколько сотен варнингов, среди которых и несовпадение разрядностей, и забытые сигналы, хочется убивать. Потому что язык, допускающий такое, не корявым назвать нельзя.
 

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


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

А предупреждения игнорирует только "корявый" программист, что на C, что на Verilog. 

В любом случае Verilog намного ближе к C, чем VHDL. 

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


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

Приветствую!

1 hour ago, andrew_b said:

Ну да, когда вы соединяете шины разной разрядности и в ответ получаете только варнинг, а потом начинаете выяснять, а чо оно не работатет, это не провокация, нет.

Или забываете продекларировать сигнал,  а в ответ тоже варнинг, это просто замечательно.

Я сейчас имею дело с проектом, написанном на этом вашем СистемВерилоге. Его писал не я. В проекте используется хренова туча IP-ядер, написананных на том же прекрасном (Систем)Верилоге. И когда синтезатор выдаёт несколько сотен варнингов, среди которых и несовпадение разрядностей, и забытые сигналы, хочется убивать. Потому что язык, допускающий такое, не корявым назвать нельзя.
 

На код писанный на VHDL  синтезатор так же  выдает кучу варнингов, в том числе и на забытые сигналы и на висящие  порты без драйверов, и.т.д.  И какое это отношение имеет к языку?  Если не уметь пользоваться возможностями языка  то даже разговаривая на великом и могучем можно в результат одни маты получать (поле синтеза :wink:)

 

Включить ошибку при компиляции/синтезе необъявленного сигнала в SV просто   - `default_nettype none в начале исходника точно спасет жизнь кому-нибудь. :biggrin: 

 

(System)Verilog проще в изучении на начальном этапе так как многие вещи позволяет делать по умолчанию. Но это не заначить что этот язык прост. И это также налагает некоторую ответственность на разработчика в обмен на уменьшение объема глупой  графоманской работы. 

Но в любом случае  полезно попробовать оба  и тогда решать на чем писать.

 

Удачи! Rob.

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


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

33 minutes ago, ViKo said:

В любом случае Verilog намного ближе к C, чем VHDL. 

Конечно ближе. Понадобился crc16 для USB в ПЛИС, взял с Вики исходник на Си, заменил { } на begin end, готово:

`default_nettype none
	module crc16(clk, clr, en, a, q);
input clk, clr, en;
input [7:0] a;
output reg [15:0] q;
`define P 16'hA001;
always@(posedge clk)begin
    if(clr) q=0;
    if(en) begin
        q=~q^a;
        for(int i=0; i<8; i++)
            if(q&1)begin q>>=1; q^=`P; end
            else q>>=1;
        q=~q;        
    end
end    
endmodule

   
 

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


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

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

Вернее - этими языками описывается принципиально разное.

Изменено пользователем Yuri124

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


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

2 часа назад, ViKo сказал:

А предупреждения игнорирует только "корявый" программист, что на C, что на Verilog. 

Как мне не игнорировать предупреждения, которые порождает код криворуких индусов в IP-ядрах?

2 часа назад, RobFPGA сказал:

И какое это отношение имеет к языку?

Прямое. Незадекларированные сигналы, соединение шин разных разрядностей в VHDL в принципе невозможны. Это будет ошибкой.

2 часа назад, RobFPGA сказал:

обмен на уменьшение объема глупой  графоманской работы

Вы точно знаете, что означает слово "графомания"?

И еще я вам по секрету скажу. Если использовать не куцый редактор из среды, а нормальный, который умеет шаблоны, то объём стука по клавиатуре сокращается в разы.

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


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

Раз уж "началось" (ц) предлагаю адептам Verilog маленькую задачку для общего развития, написать аналог:

 

    Generic (
        X : natural;
        Y : natural)

...

attribute LOC of FFi:label is "SLICE_X" & integer'image(X)& "Y" & integer'image(Y);

 

PS Заодно расширю свои познания в верилоге.

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


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

54 minutes ago, andrew_b said:

 

Прямое. Незадекларированные сигналы, соединение шин разных разрядностей в VHDL в принципе невозможны. Это будет ошибкой.

ну так для этого декларируют все нужное и не нужное. я не знаю лучшего примера использования использования VHDL, чем гейслеровская GRLIB, с которой много работал. дык там на сборку процессора для АЗИК-а (где традиционно варнингам уделяется больше места) набирается больше 10к варнингов.

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

-------------

поэтому только систем верилог, рекомендовать для освоения VHDL это просто издеваться над начинающим, по-моему.

ну и не могу не вспомнить известную хохму от Cooley (ESNUG) когда он собрал в реале две команды топящие за V и VHDL и дал им задание довести до нетлиста какую-то FSM (не помню уже детали) без доступа к хелпу, по-моему. ну хотелось там времянки сравнить и все-такое, дык, насколько я помню, сравнивать не понадобилось, из VHDL-шиков никто не успел довести до синтеза за отпущенное время

9 minutes ago, alexadmin said:

Раз уж "началось" (ц) предлагаю адептам Verilog маленькую задачку для общего развития, написать аналог:

 

    Generic (
        X : natural;
        Y : natural)

...

attribute LOC of FFi:label is "SLICE_X" & integer'image(X)& "Y" & integer'image(Y);

 

PS Заодно расширю свои познания в верилоге.

defparam FFi.SLICE_X = X ; // ну то есть тут склейте строку, какую хотите, если я понял смысл вопроса

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


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

Коллеги, очень интересно и много познавательной информации! Спасибо! Это по языкам))) По плис тоже вроде ясно.

А что со средами? Код предпочитаю в Slick Edit писать, он и подсветку имеет для этих языков.

Моделировать ModelSim? Синтезировать только в "родной" среде от производителя ПЛИС?

 

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


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

12 minutes ago, yes said:

defparam FFi.SLICE_X = X ; // ну то есть тут склейте строку, какую хотите, если я понял смысл вопроса

defparam это не synthesis attribute...

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


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

3 minutes ago, haker_fox said:

Моделировать ModelSim? Синтезировать только в "родной" среде от производителя ПЛИС?

дык ответ зависит от среды, то есть от производителя ПЛИС.

синтез может быть симплифай (machxo*, ice40 или актел), а в качестве симулятора Алдек - это все дается бесплатно для маленьких ПЛИС, то есть без кряков и т.п. (иногда важно)

 

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


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

1 hour ago, alexadmin said:

defparam это не synthesis attribute...

defparam это метод передачи значения в атрибут синтеза (то есть в примере не атрибут синтеза, а констрейн размещения, но оставим это для ясности). в отличие от VHDL можно указывать иерархический путь.

я понимаю, что речь про якобы недостаток верилога, что нельзя написать что-то типа (* LOCK= вот тут что-то вычисляем из параметров переданных в модуль *) FFi;

для латтиса или актела, в исходнике вообще такое не задается, ну и там где можно, как-то нехорошо такое делать (upd: это должно задаваться в файле констрейнов, а не в исходнике. ведь исходник можно применить там, где такого констрейна/атрибута вообще нет.)

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


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

Ух ты, давно холиваров VHDL vs Verilog не было, последний серьёзный, ЕМНИП с Acvarif закончился ничем (правда там он за AHDL топил).  

Прошу всех не заводиться, тему отслеживаю. Модератор 

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


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

11 hours ago, des00 said:

Прошу всех не заводиться, тему отслеживаю. Модератор 

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

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


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

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

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

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

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

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

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

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

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

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