Jump to content
    

Документация на System Verilog

А кто нить знает, какой софт ещё поддерживает SV? Больше всего интересует этап синтезирования. С симуляцией и верификацией, я уже понял, хорошо справляется МоделСим.

можете объяснить преимущества использования SV перед обычным верилогом именно для синтезируемых описаний?

Share this post


Link to post
Share on other sites

можете объяснить преимущества использования SV перед обычным верилогом именно для синтезируемых описаний?

есть несколько моментов которые мне понравились, но это может выглядеть очень ущербным. Повторюсь, я ж только в квартусе с ним работал :(

вот например:

описание входных-выходных портов в модуле:

module ss_smii_rx

(

input aclr,

input rxclk,

input sync,

input rxd,..........)

т.е. теперь надо это писать только однажды.

потом, введение структур, енумерации.

Только я не понял нафига мне структуры если я с ними не могу производить никаких действий т.е. например:

struct {

logic PARITY;

logic[3:0] ADDR;

logic[3:0] DEST;

} pkt_t;

 

logic [8:0] m;

assign m = pkt_t; (так не прокатит)

assign m = {pkt_t.PARITY, pkt_t.ADDR, pkt_t.DEST}; (можно только так)

надеюсь это всего лишь ущерб квартуса

назначение новых типов:

 

typedef enum bit [1:0] {sopwait, sfdwait, pack} sm_states; //обозначили новый тип

sm_states state, next_st;//создали 2 переменные с таким типом

потом можно написать так:

assign state = sopwait;

 

классы:

class Packet ;

bit [3:0] command;

bit [39:0] address;

bit [4:0] master_id;

integer time_requested;

integer time_issued;

integer status;

task clean();

command = 4’h0;

address = 40’h0;

master_id = 5’b0;

endtask

task issue_request( int delay );

... // send request to bus

endtask

endclass

//ещё не работал с ними (хренов квартус :) )

 

есть теперь оператор инкремента-декремента :) УРА ТОВАРИСЧИ!

for (int = a; a < 10; a++);

 

объединения:

union {

int i;

shortreal r;

} N;

(не знаю как пользоваться)

ну пока, то что в голову пришло

Share this post


Link to post
Share on other sites

вот например:

описание входных-выходных портов в модуле:

module ss_smii_rx

(

input aclr,

input rxclk,

input sync,

input rxd,..........)

 

я это давно уже юзаю в верилоге2000

 

а всякие классы.. ну не знаю.. у меня с детства аллергия на всё это ООП..

 

ну а эквивалент структур в верилоге: это возможность обращаться к любому сигналу любого модуля записью:

имя_экземпляра_компонента.имя_сигнала или имя_модуля.имя_экземпляра_компонента.имя_сигнала

Share this post


Link to post
Share on other sites

ну а эквивалент структур в верилоге: это возможность обращаться к любому сигналу любого модуля записью:

имя_экземпляра_компонента.имя_сигнала или имя_модуля.имя_экземпляра_компонента.имя_сигнала

И какой синтезатор это поддерживает?

Share this post


Link to post
Share on other sites

ну а эквивалент структур в верилоге: это возможность обращаться к любому сигналу любого модуля записью:

имя_экземпляра_компонента.имя_сигнала или имя_модуля.имя_экземпляра_компонента.имя_сигнала

И какой синтезатор это поддерживает?

 

 

вы бы лучше сделали бы избранную копию в тему ХHDL для начинающих, книжки тут всякие проскакивали и так далее...

Share this post


Link to post
Share on other sites

я это давно уже юзаю в верилоге2000

 

а всякие классы.. ну не знаю.. у меня с детства аллергия на всё это ООП..

 

ну а эквивалент структур в верилоге: это возможность обращаться к любому сигналу любого модуля записью:

имя_экземпляра_компонента.имя_сигнала или имя_модуля.имя_экземпляра_компонента.имя_сигнала

нет такой возможности работы с иерархией в кавртусе.

а Вы чем пользуетесь?

Share this post


Link to post
Share on other sites

вот например:

описание входных-выходных портов в модуле:

module ss_smii_rx

(

input aclr,

input rxclk,

input sync,

input rxd,..........)

 

я это давно уже юзаю в верилоге2000

 

а всякие классы.. ну не знаю.. у меня с детства аллергия на всё это ООП..

 

ну а эквивалент структур в верилоге: это возможность обращаться к любому сигналу любого модуля записью:

имя_экземпляра_компонента.имя_сигнала или имя_модуля.имя_экземпляра_компонента.имя_сигнала

Может верилог-2001?

вроде есть только стандарты на Verilog-1995, Verilog-2001 и Verilog-2005(SV тоесть)

а полезного в SV (имхо) это нумерованные типы да и interface...думаю остальное так по мелочи

Share this post


Link to post
Share on other sites

Хмм.. а по-моему нчинается что-то вроде "зачем ваш СиПлюсПлюс (ООП), когда есть Си", ровно столько же смысла в этом и ровно те же доводы. ООП это ООП, вы погодите, скоро ещё какое-нибудь сервисное программирование для моделирования придумают :-)

 

Но, по-моему, нет никаких сомнений, что за СистемВерилог/СистемСи будущее!

Share this post


Link to post
Share on other sites

Может верилог-2001?

вроде есть только стандарты на Verilog-1995, Verilog-2001 и Verilog-2005(SV тоесть)

а полезного в SV (имхо) это нумерованные типы да и interface...думаю остальное так по мелочи

ещё существует какая-то фича для выставления приоритетов CASE

т.е. указываешь есть ли приоритет в твоем CASE или нет (unique или priority)

 

always_comb

begin

next_state = state;

unique case(state)

red: if (sensor = 1) next_state = green;

yellow: if (yellow_downcnt = 0) next_state = red;

green: if (green_downcnt = 0) next_state = yellow;

endcase

end

Share this post


Link to post
Share on other sites

to dxp & dimasen

постараюсь ответить на оба вопроса

post-778-1155139787_thumb.jpg

PS: и еще насчет версий: это всё во многом условно. Могу показать официальный документ именуемый IEEE 1364.1-2002

Share this post


Link to post
Share on other sites

постараюсь ответить на оба вопроса

PS: и еще насчет версий: это всё во многом условно. Могу показать официальный документ именуемый IEEE 1364.1-2002

Ну надо же! Первый раз вижу! :blink: И ключевые слова какие-то уж очень новые(дополнительные) :)

Share this post


Link to post
Share on other sites

to dxp & dimasen

постараюсь ответить на оба вопроса

post-778-1155139787_thumb.jpg

PS: и еще насчет версий: это всё во многом условно. Могу показать официальный документ именуемый IEEE 1364.1-2002

И что Вы хотели доказать? Что язык Верилог имеет такую возможность? А кто это оспаривает? Мой вопрос внимательнее перечитайте - какой синтезатор (т.е. на уровне RTL) это поддерживает? Потому, что для нас-то главное именно это, а не абстрактные возможности языка.

Share this post


Link to post
Share on other sites

И что Вы хотели доказать? Что язык Верилог имеет такую возможность? А кто это оспаривает? Мой вопрос внимательнее перечитайте - какой синтезатор (т.е. на уровне RTL) это поддерживает? Потому, что для нас-то главное именно это, а не абстрактные возможности языка.

 

ответьте честно: зачем это вам именно для RTL?

от хорошего стиля кодирования решили перейти к плохому?!

Share this post


Link to post
Share on other sites

А кто говорит что ООП это плохой стиль кодига? ИМХО гораздо лучше, чем функциональное, тут и спорить не надо...

Share this post


Link to post
Share on other sites

О-па! ГРАБЛИ!

в связи с введением инкремента ++ и декремента --, сразу может возникнуть вопрос, вот например счетчик:

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

reg [3:0] cnt;

always_ff @(posedge clk or posedge aclr)

if (aclr) cnt <= 0;

else cnt++;

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

каким будет он? с блоковым "ровно" или с неблоковым?

cnt = cnt + 1; или cnt <= cnt + 1;

оказалось что БЛОКОВОЕ! cnt = cnt + 1;

:( долго думал... в чём проблема...

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