Jump to content
    

филосовский вопрос

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

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

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

 

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

 

Ну и насчёт ошибок в 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 основ).

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

 

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

 

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

 

 

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

 

`define ????

Share this post


Link to post
Share on other sites

`define ????

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

Share this post


Link to post
Share on other sites

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

 

 

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

Share this post


Link to post
Share on other sites

То есть код

   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

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

Share this post


Link to post
Share on other sites

То есть код

   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

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

 

 

Так нужно.

 

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

Share this post


Link to post
Share on other sites

Столкнулся недавно с одной проблемой. Есть описание 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

 

 

 

 

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