Код SystemVerilog: общие методы и примеры цифрового дизайна

Код SystemVerilog — это код, написанный на языке описания оборудования SystemVerilog, который обычно используется для проектирования и проверки цифровых систем.

Вот несколько методов, обычно используемых в SystemVerilog, с примерами кода:

  1. Объявление модуля:

    module MyModule(input logic clk, input logic reset, output logic data);
    endmodule
  2. Типы данных:

    reg [7:0] myReg;       // 8-bit register
    wire [15:0] myWire;    // 16-bit wire
    logic [3:0] myLogic;   // 4-bit logic
  3. Последовательная логика:

    always_ff @(posedge clk) begin
     if (reset)
       myReg <= 0;
     else
       myReg <= myReg + 1;
    end
  4. Комбинационная логика:

    always_comb begin
     if (myWire > 8)
       myLogic = 1;
     else
       myLogic = 0;
    end
  5. Условные операторы:

    if (condition1) begin
     // statements
    end else if (condition2) begin
     // statements
    end else begin
     // statements
    end
  6. Цикл:

    for (int i = 0; i < 10; i=i+1) begin
     // statements
    end
  7. Задачи и функции:

    task myTask(input int a, input int b, output int result);
     // statements
    endtask
    
    function int myFunction(input int x);
     // statements
    endfunction
  8. Реализация:

    MyModule myInstance(.clk(clk), .reset(reset), .data(data));
  9. Утверждения:

    assert (condition) else $error("Assertion failed");
  10. Тестовый стенд:

    module MyModule_tb;
     logic clk, reset, data;
    
     MyModule dut(.clk(clk), .reset(reset), .data(data));
    
     // testbench logic and stimulus generation
    
    endmodule