2014-02-19 2 views
0

Я считаю, что SystemVerilog - намного более высокий уровень абстракции при кодировании. Возможно ли связать модуль SystemVerilog с Verilog-модулем? Являются ли они любыми аспектами, которые следует учитывать при попытке их интеграции?Интерфейс SystemVerilog с verilog-модулем

+2

Стандарты SystemVerilog и Verilog были объединены в 2009 году. Поэтому SystemVerilog и Verilog 'module' - это то же самое в современном компиляторе/симуляторе. Вы имеете в виду классы SystemVerilog? – Morgan

ответ

4

Verilog и SystemVerilog - это тот же язык, то есть все, что вы знаете о Verilog, существует в SystemVerilog. С точки зрения синтеза, вы можете подобрать бит сигналов с другими битами сигналов. Именно так, с помощью SystemVerilog, у вас будут более продвинутые способы объявления этих сигналов и многие другие операторы для управления этими сигналами.

Не зная какого-либо SystemVerilog, я предлагаю вам изучить его самостоятельно, прежде чем пытаться интегрировать старые модули Verilog с модулями SystemVerilog. Трудно объяснить, на что обратить внимание.

Одна вещь, которая переносится с Verilog на SystemVerilog, - это концепция сетей (проводов) и переменных (regs). Удостоверьтесь, что у вас есть четкое представление об этом, плюс добавлена ​​новая семантика SystemVerilog. У меня есть small article. Verilog разрешал проводы проходить через порты и не применял направления. SV позволяет переменным проходить через порты (что означает переменные с обеих сторон соединения порта), но сильно навязывает направленность.

2

Да, интерфейс verilog можно подключить к модулю verilog. До этого вы должны понимать сигналы (переменные), которые используются в модуле verilog.

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

Здесь я предоставляю модуль verilog и системный модуль verilog. Основная часть кода - это интерфейс, из которого подключены Verilog и системный модуль verilog.

Verilog код модуля:

module dff(qn,d,clk,reset); 

output qn; 
input d,clk,reset; 
reg qn; 

[email protected](posedge clk,negedge reset) 

begin 

if (!reset) 

begin 
qn=1'bx; 
end 

else if (d==0) 
begin 
qn=0; 
end 
else if (d==1) 
begin 
qn=1; 
end 

end 

endmodule 

Системный код модуля Verilog:

interface melay_intf(input bit clk); 

    logic o,clk,rst,i; 

    clocking [email protected](posedge clk); 
    input o; 
    output i,rst; 
    endclocking 

endinterface 

module top; 
    bit clk; 

    always 
    #1 clk = ~clk; 

    melay_intf i1(clk); 

    dff d1(.o(i1.o),.clk(i1.clk),.rst(i1.rst),.i(i1.i)); 

    melay_tes(i1.tes); 

endmodule 

program melay_tes(melay_intf i1); 

    initial 
    #100 $finish; 

    initial 
    begin 
     i1.rst <= 0; 
     #4 i1.rst <= 1; 
     #4 i1.rst <= 0; 

     i1.i = 1; 
      #2 i1.i = 0; 
      #2 i1.i = 1; 
      #2 i1.i = 0; 
      #2 i1.i = 1; 
      #2 i1.i = 0; 


     repeat(10) 
     begin 
      i1.i = 1; 
      #2 i1.i = $urandom_range(0,1); 
     end 
    end 

    initial 
    $monitor("output = %d clk = %d rst = %d i = %d",i1.o,i1.clk,i1.rst,i1.i); 
    initial 
    begin 
     $dumpfile("mem.vcd"); 
     $dumpvars(); 

    end 
endprogram 

Здесь важной частью является интерфейс и в нем я использовал синхронизации блока с целью синхронизации. Здесь синхронизация c1 @ (posedge clk); поэтому все сигналы, которые упоминаются внутри блока синхронизации, равны i, o, r. Все эти сигналы изменяют свое значение в каждом столбце сигнала clk.

Здесь dff d1 (.o (i1.o), clk (i1.clk), rst (i1.rst), i (i1.i)); Важная вещь, которую вы нашли в верхнем модуле, я установил связь между вериловыми сигналами и системными вериловыми сигналами.

Вы можете найти имя модуля verilog - «dff». Я взял экземпляр модуля dff verilog и установил соединение. Здесь i1.o, i1.clk, i1.rst, i1.i - системные верительные сигналы, которые соединены с o, clk, rst, i сигналами verilog-модуля с соглашением о точках.

0

System verilog (SV) используется главным образом для проверки конструкции, поэтому дело в том, что DUT (Device Under Test) написан в Verilog главным образом потому, что Verilog может быть синтезирован в основном. Затем SV используется для записи среды проверки для этого DUT. Интерфейсы необходимы между ними для подключения SV к тестируемому устройству, которое является Verilog. Раздельный файл записывается в SV, чтобы указать, какое различное соединение между этими двумя файлами. Этот файл говорит, что файл INTERFACE включен во все отдельные блоки, которые нуждаются в этих соединениях. Для получения дополнительной информации о SV вы можете обратиться к стандарту IEEE https://standards.ieee.org/getieee/1800/download/1800-2012.pdf.

+0

Неработающая ссылка. используйте это вместо: http://ieeexplore.ieee.org/document/6469140/ –