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

Про SV писать ничего не буду (почему-то многие здесь пишут Verilog, подразумевают SV), но в ISE, например, только базовый Verilog,

На самом деле нет такого языка SystemVerilog, есть только Verilog и разные его версии. SystemVerilog - это псевдоним Verilog-2005 и последующих версий. Т.е. разделения как С и С++ тут нет, это всё одно и то же. Поэтому корректно, говоря о возможностях верилога, указывать о какой версии идёт речь - Verilog-95, Verilog-2001, Verilog-2005 и т.д. И когда говорят о SystemVerilog, то тут просто следует иметь в виду соответствующую версию.

 

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

 

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

 

Спорить же, что круче Verilog или VHDL, конечно же пустое - зависит от объективных (доступность симуляторов/синтезаторов, внутрифирменные требования и т.п.) и субъективных (личные предпочтения) факторов. И вообще, когда появятся синтезаторы на SystemC, он прибъёт их обоих. :biggrin:

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


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

На самом деле нет такого языка SystemVerilog, есть только Verilog и разные его версии. SystemVerilog - это псевдоним Verilog-2005 и последующих версий.

На самом деле все как раз наоборот. Нет языка Verilog, а есть и будет SystemVerilog.

Потому и последний стандарт называется IEEE Standard for SystemVerilog.

 

стараюсь писать красиво

Вашему коду да еще бы комментариев - цены бы не было! :)

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


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

На самом деле все как раз наоборот. Нет языка Verilog, а есть и будет SystemVerilog.

Потому и последний стандарт называется IEEE Standard for SystemVerilog.

Пусть так, главная суть не меняется - это не разные языки, а один язык со своей историей. Дело не в названии. Когда говорят VHDL, не имеют в виду какую-то древнюю версию, имеют в виду самую свежую из доступных. Так и тут - говоря и слыша слово "верилог", надо иметь в виду его самую свежую версию, которую удовлетворительно поддерживают симуляторы и синтезаторы. Даже если она называется SystemVerilog.

 

P.S. Капучино, который всегда держал руку на пульсе развития верилога (системверилога), как-то приводил обоснование (помнится, опираясь на стандарт 2007 года), что это всё один и тот же язык верилог. Возможно, с тех пор мода поменялась, и теперь принято использовать более модное слово SystemVerilog. За модой не слежу. :)

 

P.P.S. В Стандарте 1800-2009 прямо сказано следующее:

This standard represents a merger of two previous standards: IEEE Std 1364™-2005

Verilog hardware description language (HDL) and IEEE Std 1800-2005 SystemVerilog unified

hardware design, specification, and verification language. The 2005 SystemVerilog standard

defines extensions to the 2005 Verilog standard. These two standards were designed to be used

as one language. Merging the base Verilog language and the SystemVerilog extensions into a

single standard provides users with all information regarding syntax and semantics in a single

document.

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


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

Пусть так, главная суть не меняется - это не разные языки, а один язык со своей историей. Дело не в названии. Когда говорят VHDL, не имеют в виду какую-то древнюю версию, имеют в виду самую свежую из доступных. Так и тут - говоря и слыша слово "верилог", надо иметь в виду его самую свежую версию, которую удовлетворительно поддерживают симуляторы и синтезаторы. Даже если она называется SystemVerilog.

Они все же были разные когда-то, но теперь остался один. И называть его нужно SystemVerilog.

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


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

Правильно :) А все предыдущие верилоги являются его подмножеством.

 

говоря и слыша слово "верилог", надо иметь в виду его самую свежую версию, которую удовлетворительно поддерживают симуляторы и синтезаторы. Даже если она называется SystemVerilog.

Имхо, неправильно. Поскольку язык называется SystemVerilog, а все предыдущие его ревизии являются его подмножеством, такая трактовка заставляет закипать мой мозг :)

 

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


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

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

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


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

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

 

Вы не могли бы прояснить этот вопрос подробнее?

 

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


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

Вы не могли бы прояснить этот вопрос подробнее?

В Q-SV работает такая функция. С ее помощью можно не задумываться, сколько битов должна иметь переменная, чтобы в нее поместилось данное слово.

The system function $clog2 shall return the ceiling of the log base 2 of the argument (the log rounded up to an integer value). The argument can be an integer or an arbitrary sized vector value. The argument shall be treated as an unsigned value, and an argument value of 0 shall produce a result of 0.

 bit [$clog2(100000000)-1:0] cnt; // счетчик

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


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

The system function $clog2

 

Понятно, спасибо.

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

 

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


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

Имхо, неправильно. Поскольку язык называется SystemVerilog, а все предыдущие его ревизии являются его подмножеством, такая трактовка заставляет закипать мой мозг :)

Исходно SystemVerilog позиционировался как расширения для Verilog, созданные группой Accellera. В настоящее время всё это слито в один стандарт и называется SystemVerilog'ом. Я к тому, что когда противопоставляют VHDL и Verilog, надо бы уточнение делать: либо имеется в виду традиционный верилог образца 1995 года или 2001 года, либо современный уже язык. Имхо, зря они название поменяли, путаница от этого возникает.

 

Вы не могли бы прояснить этот вопрос подробнее?

В самом SV есть стандартная функция $clog2. Я сам ещё с до-SV'шных времён пользовался самописной функцией clog2():

function integer clog2 (input integer num); // this function calculates ceil(log2(num))
begin
    num = num - 1;                          // without this statement clog2(32) will be 6 but must be 5
    for (clog2 = 0; num > 0; clog2 = clog2 + 1)
        num = num >> 1;
end
endfunction

И пользуюсь ею до сих пор. Никаких проблем с ней нет. В приведённом коде уже синтаксис подпилен под SV, но суть не меняется. И теперь она размещена в package, что упрощает использование.

 

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

Ну, это дикость какая-то. Вопросы к автору того кода.

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


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

Ну, это дикость какая-то. Вопросы к автору того кода.

 

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

Как я понимаю, многим нравиться описание типа signal cnt : integer range 0 to MAX-1;

Железячник такими категориями не мыслит. Ибо вырос он из примитивов.

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


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

Я к тому, что когда противопоставляют VHDL и Verilog, надо бы уточнение делать: либо имеется в виду традиционный верилог образца 1995 года или 2001 года, либо современный уже язык.

Согласен, конечно надо, а то непонятно, что конкретно ругают/хвалят.

Имхо, зря они название поменяли, путаница от этого возникает.

Не имею имха по этому поводу :) Воспринимаю как данность.

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


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

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

Как я понимаю, многим нравиться описание типа signal cnt : integer range 0 to MAX-1;

Есть несколько редких случаев, когда конкретное число говорит само за себя, тут ещё как-то оправдано его использовать. Но в подавляющем большинстве случаев намного лучше использовать именованные объекты. Во-первых, появляется самодокументированность кода - сравните:

 

bit [9:0] data;

 

и

 

localparam CONTROL_BUS_WIDTH = 10;

 

... // сотни строк кода

 

bit [CONTROL_BUS_WIDTH-1:0] data;

 

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

 

Железячник такими категориями не мыслит. Ибо вырос он из примитивов.

Все мы железячники. Но жизнь меняется, надо не отставать от "поезда", избавляться от устаревших, не отвечающих времени, стереотипов и формировать новые, адекватные ему. Надо брать на вооружение всё полезное, что дают современный инструментарий и методологии проектирования.

 

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


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

Раз опять пошло обсуждение Verilog vs VHDL, то я тоже выскажусь.

 

Про VHDL узнал в далёком 1995 году из книги Дж.Р. Армстронга "Моделирование цифровых систем на языке VHDL".

Применять начал в 2000, в составе MaxPlusII и Orcad 9.2;

Потом перешёл на Active-HDL и до сих пор его использую.

 

Verilog мне не нравится - это личное, субъективное мнение.

Из объективных недостатков - отсутствие структур.

А структуры в своих проектах я использую очень часто.

 

 

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


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

Из объективных недостатков - отсутствие структур.

Это уже в прошлом. Посмотрите на список, что я показал, 6-я сверху строка.

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


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

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

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

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

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

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

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

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

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

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