topor_topor 0 September 12, 2013 Posted September 12, 2013 · Report post Почему все так плотно сидят на VHDL? ведь он гораздо труднее veriloga Какие он дает преимущества? Он принят в милитари и аероспейс... у буржуев по крайней мере.... Ну и насчёт ошибок в VHDL... Фигня это на постном масле. К Verilog есть синтаксические чекеры которое такое проверяют что VHDL и не снилось (даже коректность стиля написания FSM и т.п.). Например - Cadence HAL. Ну а с SV - VHDL и рядом не валялся. Quote Share this post Link to post Share on other sites More sharing options...
Maverick_ 16 September 12, 2013 Posted September 12, 2013 · Report post sifadin посмотрите открытый проект myhdl - мне он понравился... Quote Share this post Link to post Share on other sites More sharing options...
Raven 29 September 13, 2013 Posted September 13, 2013 · Report post Все-таки не удержался ... :) Ну и насчёт ошибок в 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 основ). Quote Share this post Link to post Share on other sites More sharing options...
Maverick_ 16 September 14, 2013 Posted September 14, 2013 · Report post вот интересная статистика, как раз на эту тему Quote Share this post Link to post Share on other sites More sharing options...
Raven 29 September 14, 2013 Posted September 14, 2013 · Report post Да, интересный блог. Quote Share this post Link to post Share on other sites More sharing options...
Golikov 0 September 14, 2013 Posted September 14, 2013 · Report post VHDL - старше и старее, с него начинали, Verilog - новее, его делали учитывая что не хватало в VHDL. Отсюда сильна старая школа... Начинал писать на VHDL, потому что был курс в институте, потом был перерыв с плисами, сейчас опять начал, решил на veriloge попробовать, действительно есть некие сходства с С. ВХДЛ строже, и как было где-то написано им можно описать любое мыслимое и не мыслимое железо, им вроде как пользовались еще при создании микросхем. Верилог имеет ограничения, но они сдвинуты в область экзотики, большущая часть того что нужно обычным людям им описывается. Для меня сейчас выбор Верилога определяется более кратким синтаксисом. После годов писания кода для процов, компутеров, планшетов обнаружить среду (ISE) в которой нет синтаксис асиста - это как в каменный век попасть. Так отвыкаешь от необходимости помнить все названия переменных и их написание, что по началу даже теряешься. И вот тут как раз чем меньше текста надо писать, тем лучше, тем быстрее я опишу модуль. CTRL-C CTRL-V конечно здорово, но при большом модуле легче написать ручками чем мотать его туда суда и искать те переменные что тебе нужны. Потому сейчас для себя выбрал верилог... Но выбор не строгий, надо будет, перейду на VHDL, это инструменты, они просто нужны для решения задачи, а не для приема в секту. Quote Share this post Link to post Share on other sites More sharing options...
KalashKS 0 September 14, 2013 Posted September 14, 2013 · Report post Столкнулся недавно с одной проблемой. Есть описание FIFO, которое вставляется в проект раз тцать с различными параметрами, причем в ряде случаев его надо отсинтезить в блочную память, а иногда - в распределенную. Во что синтезить, определяется атрибутом симплифая. И вот тут возникает вопрос, как этот атрибут передать в FIFO. На VHDL решение очевидное - через generic, а на верилоге приходится писать два одинаковых файла с разным значением атрибута и через generate использовать нужный. Быть может кто-нибудь знает более изящное решение? Quote Share this post Link to post Share on other sites More sharing options...
Sergey_Bekrenyov 0 September 15, 2013 Posted September 15, 2013 · Report post Столкнулся недавно с одной проблемой. Есть описание FIFO, которое вставляется в проект раз тцать с различными параметрами, причем в ряде случаев его надо отсинтезить в блочную память, а иногда - в распределенную. Во что синтезить, определяется атрибутом симплифая. И вот тут возникает вопрос, как этот атрибут передать в FIFO. На VHDL решение очевидное - через generic, а на верилоге приходится писать два одинаковых файла с разным значением атрибута и через generate использовать нужный. Быть может кто-нибудь знает более изящное решение? `define ???? Quote Share this post Link to post Share on other sites More sharing options...
KalashKS 0 September 15, 2013 Posted September 15, 2013 · Report post `define ???? На верилоге почти не пишу, могу ошибаться. Мне кажется, в этом случае атрибут будет одинаковым для всех вставленных компонентов. Quote Share this post Link to post Share on other sites More sharing options...
Sergey_Bekrenyov 0 September 15, 2013 Posted September 15, 2013 · Report post На верилоге почти не пишу, могу ошибаться. Мне кажется, в этом случае атрибут будет одинаковым для всех вставленных компонентов. 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 Quote Share this post Link to post Share on other sites More sharing options...
KalashKS 0 September 16, 2013 Posted September 16, 2013 · Report post То есть код 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 должен работать? Quote Share this post Link to post Share on other sites More sharing options...
Sergey_Bekrenyov 0 September 16, 2013 Posted September 16, 2013 · Report post То есть код 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 должен работать? Честно сказать не знаю - обычно под такие конструкции убираю модули. а не объявления переменных. Попробуйте Quote Share this post Link to post Share on other sites More sharing options...
KalashKS 0 September 16, 2013 Posted September 16, 2013 · Report post Честно сказать не знаю - обычно под такие конструкции убираю модули. а не объявления переменных. Попробуйте Пробовал. Надеялся, что не работало из-за моей криворукости. Quote Share this post Link to post Share on other sites More sharing options...
Sergey_Bekrenyov 0 September 16, 2013 Posted September 16, 2013 · Report post Пробовал. Надеялся, что не работало из-за моей криворукости. Так нужно. .. 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 Quote Share this post Link to post Share on other sites More sharing options...
yes 7 September 16, 2013 Posted September 16, 2013 · Report post Столкнулся недавно с одной проблемой. Есть описание 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 Quote Share this post Link to post Share on other sites More sharing options...