Jump to content
    

Переход с AHDL на Verilog

А Квартус поймет always_comb и always_latch ? Надо будет попробовать. Вообще мне такие процессы больше нравятся - понятно что получится.

извините-не знаю(есть сомнение что поддерживает) - пользуюсь сторонними компиляторами (Синплифай и Пресижн) - полнее всего синтезабельное множество SystemVerilog поддреживает Менторовский Пресижн - который меня в этом плане очень радует (Синплифай очень обленился в плане внедрения языковых технологий - смотрю на эту компанию в последнее время с большим разочарованием - хотя конечно и они поддерживают эти _ff, _comb, _latch - возможно что и последние версии альтеровских САПР подросли в области синтаксического анализа - проверьте -- в конце концов очень порсто в случае чего заменить always_comb на always@* )

 

В Verilogе (точнее в той его части которая предназначена для тесбенчеей) еще довольно много таких

"нюансов"(и гемороя с ними предостаточно).

например? поделитесь, пожалуйста, парочкой

Share this post


Link to post
Share on other sites

например? поделитесь, пожалуйста, парочкой

 

Ну вот например то что касается non-reentrant tasks. Хотя никаких неопределенностей с ними нету(в стандарте все сказано) но некий гемморой у меня недавно вышел. Читайте "Writing Testbenches".

Share this post


Link to post
Share on other sites

CaPpuCcino

А чем плох assign? Просмотрел - Квартус не поддерживает always_comb и always_latch.

Share this post


Link to post
Share on other sites

assign - это хорошо в верилоге. Вне процесса много чего для наглядности реализовать можно.

Наверно после верилога и на system верилог можно перейти. (Поставить нужную галочку в пакете).

А смешивать наверно не получиться.

Share this post


Link to post
Share on other sites

sazh

Наверно после верилога и на system верилог можно перейти. (Поставить нужную галочку в пакете).

 

Т.е. Вы намекаете, что в квартусе можно установить галку и получить system verilog?

Edited by Andr2I

Share this post


Link to post
Share on other sites

Assignments - settings - Analysis&synthesis - verilogHDL input

Quartus6 поддерживает system verilog Только хорошо подумайте, а Вам это надо. Особенно после AHDL, где даже понятия фронта сигнала нет. Значит мыслите Вы базовыми примитивами и макросами. Зачем Вам неоправданно завышенный уровень абстракции (мы говорим о синтезе). Не говоря о том, что от MAX+ Вы наверно не скоро откажетесь.

Перейти на верилог от AHDL очень просто.

Share this post


Link to post
Share on other sites

Ну вот например то что касается non-reentrant tasks. Хотя никаких неопределенностей с ними нету(в стандарте все сказано) но некий гемморой у меня недавно вышел. Читайте "Writing Testbenches".

понимаете-книжечки эти давно устарели - данная писалась ещё для Верилог-96. с той поры уже много воды утекло - а о Верилоге всё еще судят по его самому первому стандарту. таски уже давно reentrant - в SystemVerilog точно (и кажись даже ещё с Verilog-2k1) по крайней мере у Моделсима никаких проблем с моделированием SV нет -- только галочку в настройке компилятора поставить нужно

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

 

CaPpuCcino

А чем плох assign? Просмотрел - Квартус не поддерживает always_comb и always_latch.

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

 

Только хорошо подумайте, а Вам это надо. Особенно после AHDL, где даже понятия фронта сигнала нет. Значит мыслите Вы базовыми примитивами и макросами. Зачем Вам неоправданно завышенный уровень абстракции (мы говорим о синтезе). Не говоря о том, что от MAX+ Вы наверно не скоро откажетесь.

Перейти на верилог от AHDL очень просто.

это вы по принципу - Зачем Привыкать к Хорошему ?? :rolleyes:

Share this post


Link to post
Share on other sites

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

Давайте начнем на раз (AHDL)

 

parameters (width = 4);

subdesign generat_e

(

a[width-1..0] : input;

b[width-1..0] : output;

c[2*width-1..0] : output;

)

 

begin

for i in 0 to width-1 generate

b = a[width-1-i];

c[2*i] = a;

c[2*i+1] = a;

end generate;

end;

 

На два (верилог)

 

module generat_e

#(

parameter width = 4

)

(

input [width-1:0] a,

output [width-1:0] b,

output [2*width-1:0] c

);

 

genvar i;

 

generate for (i = 0; i < width; i = i + 1)

begin : block

assign b = a[width-1-i];

assign c[2*i] = a;

assign c[2*i+1] = a;

end

endgenerate

 

endmodule

 

На три (тут я пас). Но надежд не оставляю.

Share this post


Link to post
Share on other sites

to sazh

ну здесь-то реально особо места для фантазии не много -- особо не разойдёшься

Share this post


Link to post
Share on other sites

sazh

Я сегодня попробовал переписать старый проект под verilog - так ить вроде и ничего - яйца теже - вид сбоку! Про уровнь абстракции - спорить не буду, но пока не понимаю почему использование always_comb повышает уровень абстракции (на мой взгляд даже мешает вместе reg и wire). Да я мыслю на уровне регистров, когда пишу модуль, но используя модуль я мыслю на уровне модулей. Более того часто мне приходится мыслить на уровне дискретного трназистора (реального!), ну и чем это плохо если схема работает?

На мой несведущий взгляд, модно заменять assign на always_comb (с заменой переменных на reg) сравнительно свободно, но другой вопрос зачем?

Share this post


Link to post
Share on other sites

Про уровнь абстракции - спорить не буду, но пока не понимаю почему использование always_comb повышает уровень абстракции (на мой взгляд даже мешает вместе reg и wire).

Уровень абстракции повышается при переходе от dff к always - в первом случае Вы оперируете примитивами, во втором описываете только поведение объектов. А примитивы уже синтезатор сам генерит, исходя из заданных условий (технология, времянкии т.д.).

Share this post


Link to post
Share on other sites

dxp

Уровень абстракции повышается при переходе от dff к always - в первом случае Вы оперируете примитивами, во втором описываете только поведение объектов. А примитивы уже синтезатор сам генерит, исходя из заданных условий (технология, времянкии т.д.).

 

С этим абсолютно согласен. Но все равно я пока не могу абстрагироваться от reg и wire. Первые для меня тактируемые ячейки, вторые - просто комбинация простой логики. По сути я описываю алгоритм работы - что делать после уже сделанного. Может неправильный подход?

Share this post


Link to post
Share on other sites

С этим абсолютно согласен. Но все равно я пока не могу абстрагироваться от reg и wire. Первые для меня тактируемые ячейки, вторые - просто комбинация простой логики.

reg - не триггер. И не регистр в аппаратном смысле. Это регистр в том смысле, что он хранит свое состояние (регистрирует) между последовательными запусками always-блока. Если запуски блока идут по фронту тактового сигнала, то reg превращается в триггер (элемент синхронной логики), если запуски блока идут без перерывов - как в случае с комбинационным блоком, то reg вырождается в сигнал комбинационной логики или защелку. Абстрагироваться не надо, просто запомните твердо, что в Верилоге reg != триггер. :)

Share this post


Link to post
Share on other sites

Читайте "Writing Testbenches".

кстати, существует апдэйт этой книжки: "Writing Testbenches using SystemVerilog"(J.Bergeron)

у кого-нить есть на руках?

Share this post


Link to post
Share on other sites

CaPpuCcino

А чем плох assign? Просмотрел - Квартус не поддерживает always_comb и always_latch.

 

Судя по тому, что написано в quartus|| version 7.0 handbook, квартус поддерживает и always_comb, и always_latch.

 

Вопрос к CaPpuCcino: у вас есть опыт успешно завершённого проекта, в котором вы использовали SystemVerilog?

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