Код SystemVerilog — это код, написанный на языке описания оборудования SystemVerilog, который обычно используется для проектирования и проверки цифровых систем.
Вот несколько методов, обычно используемых в SystemVerilog, с примерами кода:
-
Объявление модуля:
module MyModule(input logic clk, input logic reset, output logic data); endmodule -
Типы данных:
reg [7:0] myReg; // 8-bit register wire [15:0] myWire; // 16-bit wire logic [3:0] myLogic; // 4-bit logic -
Последовательная логика:
always_ff @(posedge clk) begin if (reset) myReg <= 0; else myReg <= myReg + 1; end -
Комбинационная логика:
always_comb begin if (myWire > 8) myLogic = 1; else myLogic = 0; end -
Условные операторы:
if (condition1) begin // statements end else if (condition2) begin // statements end else begin // statements end -
Цикл:
for (int i = 0; i < 10; i=i+1) begin // statements end -
Задачи и функции:
task myTask(input int a, input int b, output int result); // statements endtask function int myFunction(input int x); // statements endfunction -
Реализация:
MyModule myInstance(.clk(clk), .reset(reset), .data(data)); -
Утверждения:
assert (condition) else $error("Assertion failed"); -
Тестовый стенд:
module MyModule_tb; logic clk, reset, data; MyModule dut(.clk(clk), .reset(reset), .data(data)); // testbench logic and stimulus generation endmodule