Я считаю, что SystemVerilog
- намного более высокий уровень абстракции при кодировании. Возможно ли связать модуль SystemVerilog
с Verilog-модулем? Являются ли они любыми аспектами, которые следует учитывать при попытке их интеграции?Интерфейс SystemVerilog с verilog-модулем
ответ
Verilog и SystemVerilog - это тот же язык, то есть все, что вы знаете о Verilog, существует в SystemVerilog. С точки зрения синтеза, вы можете подобрать бит сигналов с другими битами сигналов. Именно так, с помощью SystemVerilog, у вас будут более продвинутые способы объявления этих сигналов и многие другие операторы для управления этими сигналами.
Не зная какого-либо SystemVerilog, я предлагаю вам изучить его самостоятельно, прежде чем пытаться интегрировать старые модули Verilog с модулями SystemVerilog. Трудно объяснить, на что обратить внимание.
Одна вещь, которая переносится с Verilog на SystemVerilog, - это концепция сетей (проводов) и переменных (regs). Удостоверьтесь, что у вас есть четкое представление об этом, плюс добавлена новая семантика SystemVerilog. У меня есть small article. Verilog разрешал проводы проходить через порты и не применял направления. SV позволяет переменным проходить через порты (что означает переменные с обеих сторон соединения порта), но сильно навязывает направленность.
Да, интерфейс 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-модуля с соглашением о точках.
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.
Неработающая ссылка. используйте это вместо: http://ieeexplore.ieee.org/document/6469140/ –
Стандарты SystemVerilog и Verilog были объединены в 2009 году. Поэтому SystemVerilog и Verilog 'module' - это то же самое в современном компиляторе/симуляторе. Вы имеете в виду классы SystemVerilog? – Morgan