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

Почему все так плотно сидят на VHDL? ведь он гораздо труднее veriloga

Какие он дает преимущества?

Он принят в милитари и аероспейс... у буржуев по крайней мере....

 

Ну и насчёт ошибок в VHDL...

Фигня это на постном масле.

К Verilog есть синтаксические чекеры которое такое проверяют что VHDL и не снилось (даже коректность стиля написания FSM и т.п.).

Например - Cadence HAL.

Ну а с SV - VHDL и рядом не валялся.

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


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

sifadin посмотрите открытый проект myhdl - мне он понравился...

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


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

Все-таки не удержался ... :)

 

Ну и насчёт ошибок в VHDL...

Фигня это на постном масле.

К Verilog есть синтаксические чекеры которое такое проверяют что VHDL и не снилось (даже коректность стиля написания FSM и т.п.).

Те же (или аналогичные) чекеры и VHDL проверяют. Но VHDL заставляет думать и проектировать более ответственно, и кроме того, когда (и если) чекер что-то найдет, то для VHDL, как правило, сразу понятно, в чем проблема, что не понравилось. А вот с V/SV иногда и не сразу разберешься, до малого расследования доходит.

 

Ну а с SV - VHDL и рядом не валялся.

:)

Попробуйте только языковыми средствами в SV сколотить систему, в которой будут присутствовать несколько инстансов одного и того же, но с разными наборами параметров, определенных в include'ах ;-) В VHDL же такой вариант предусмотрен (конфигурации). Есть и другие приколы. В чем SV действительно силен и за что ему "грейт сенька" :) - это верификация. В RTL части он лишь сокращает разрыв между Verilog'ом и VHDL до терпимого состояния, но все же остается на втором месте. IMHO.

 

2 sifadin:

Современный инженер должен быть вхож в оба домена - и VHDL, и V/SV. Принципы построения RTL кода в обоих весьма близки, а разница в языковом представлении - это дело второго порядка (важного для эффективного выражения мысли на конкретном языке, но все же менее, чем понимание RTL основ).

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


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

VHDL - старше и старее, с него начинали, Verilog - новее, его делали учитывая что не хватало в VHDL. Отсюда сильна старая школа...

 

Начинал писать на VHDL, потому что был курс в институте, потом был перерыв с плисами, сейчас опять начал, решил на veriloge попробовать, действительно есть некие сходства с С.

 

ВХДЛ строже, и как было где-то написано им можно описать любое мыслимое и не мыслимое железо, им вроде как пользовались еще при создании микросхем. Верилог имеет ограничения, но они сдвинуты в область экзотики, большущая часть того что нужно обычным людям им описывается.

 

Для меня сейчас выбор Верилога определяется более кратким синтаксисом. После годов писания кода для процов, компутеров, планшетов обнаружить среду (ISE) в которой нет синтаксис асиста - это как в каменный век попасть. Так отвыкаешь от необходимости помнить все названия переменных и их написание, что по началу даже теряешься.

 

И вот тут как раз чем меньше текста надо писать, тем лучше, тем быстрее я опишу модуль. CTRL-C CTRL-V конечно здорово, но при большом модуле легче написать ручками чем мотать его туда суда и искать те переменные что тебе нужны. Потому сейчас для себя выбрал верилог...

 

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

 

 

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


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

Столкнулся недавно с одной проблемой. Есть описание FIFO, которое вставляется в проект раз тцать с различными параметрами, причем в ряде случаев его надо отсинтезить в блочную память, а иногда - в распределенную. Во что синтезить, определяется атрибутом симплифая.

И вот тут возникает вопрос, как этот атрибут передать в FIFO. На VHDL решение очевидное - через generic, а на верилоге приходится писать два одинаковых файла с разным значением атрибута и через generate использовать нужный. Быть может кто-нибудь знает более изящное решение?

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


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

Столкнулся недавно с одной проблемой. Есть описание FIFO, которое вставляется в проект раз тцать с различными параметрами, причем в ряде случаев его надо отсинтезить в блочную память, а иногда - в распределенную. Во что синтезить, определяется атрибутом симплифая.

И вот тут возникает вопрос, как этот атрибут передать в FIFO. На VHDL решение очевидное - через generic, а на верилоге приходится писать два одинаковых файла с разным значением атрибута и через generate использовать нужный. Быть может кто-нибудь знает более изящное решение?

 

`define ????

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


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

`define ????

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

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


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

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

 

 

ISE languages templates

 

В условиях должны быть константы - то есть либо параметры либо константы через дефайн

 

   generate
      if (<condition>) begin: <label_1>
         <code>;
      end else if (<condition>) begin: <label_2>
         <code>;
      end else begin: <label_3>
         <code>;
      end
   endgenerate

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


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

То есть код

   generate
      if (BLOCK_RAM) begin: <label_1>
        reg  [DWIDTH-1:0] mem [0:RAM_DEPTH-1];/*synthesis syn_ramstyle=block_ram*/
        
      end else begin: <label_3>
        reg  [DWIDTH-1:0] mem [0:RAM_DEPTH-1];/*synthesis syn_ramstyle=select_ram*/
      end
   endgenerate

должен работать?

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


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

То есть код

   generate
      if (BLOCK_RAM) begin: <label_1>
        reg  [DWIDTH-1:0] mem [0:RAM_DEPTH-1];/*synthesis syn_ramstyle=block_ram*/
        
      end else begin: <label_3>
        reg  [DWIDTH-1:0] mem [0:RAM_DEPTH-1];/*synthesis syn_ramstyle=select_ram*/
      end
   endgenerate

должен работать?

 

Честно сказать не знаю - обычно под такие конструкции убираю модули. а не объявления переменных. Попробуйте

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


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

Честно сказать не знаю - обычно под такие конструкции убираю модули. а не объявления переменных. Попробуйте

Пробовал. Надеялся, что не работало из-за моей криворукости.

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


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

Пробовал. Надеялся, что не работало из-за моей криворукости.

 

 

Так нужно.

 

..
parameter BLOCK_RAM = 1;
parameter DWIDTH = 16;
parameter RAM_DEPTH = 16;
..

   generate
      if (BLOCK_RAM) begin
        reg  [DWIDTH-1:0] mem [0:RAM_DEPTH-1];/*synthesis syn_ramstyle=block_ram*/
        
      end else begin
        reg  [DWIDTH-1:0] mem [0:RAM_DEPTH-1];/*synthesis syn_ramstyle=select_ram*/
      end
   endgenerate

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


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

Столкнулся недавно с одной проблемой. Есть описание FIFO, которое вставляется в проект раз тцать с различными параметрами, причем в ряде случаев его надо отсинтезить в блочную память, а иногда - в распределенную. Во что синтезить, определяется атрибутом симплифая.

И вот тут возникает вопрос, как этот атрибут передать в FIFO. На VHDL решение очевидное - через generic, а на верилоге приходится писать два одинаковых файла с разным значением атрибута и через generate использовать нужный. Быть может кто-нибудь знает более изящное решение?

 

в

(* *)

можно вставлять вычисляемое значение аттрибутов

 

типа

module m #(

parameter string ramt="fifo";

);

 

(* synt_ramtype=ramt *) my_ram_reg;

 

endmodule

 

как-то так

 

 

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

 

выписка из стандарта

attribute_instance ::= (* attr_spec { , attr_spec } *)

attr_spec ::= attr_name [ = constant_expression ]

attr_name ::= identifier

 

 

 

 

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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