exponenta event banner

Использование созданных функций DPI в SystemVerilog

Чтобы использовать созданный компонент DPI в среде SystemVerilog, сначала импортируйте созданные функции с объявлениями «DPI» в модуль SystemVerilog. Затем вызовите и запланируйте сгенерированные функции. При компиляции кода SystemVerilog, содержащего импортированные сгенерированные функции, используйте компилятор SystemVerilog с поддержкой DPI и укажите имена файлов компонентов.

В следующем примере показано добавление созданного компонента DPI для блока DPI_blk в модуль SystemVerilog.

  1. Импортируйте созданные функции:

    import "DPI" function void DPI_blk1_initialize();
    import "DPI" function void DPI_blk1_ouptut(output real blk1_Y_Out1);
    import "DPI" function void DPI_blk1_update(input real blk1_U_On1);
  2. Позвоните в Initialize функция.

    DPI_blk1_initialize();
  3. Запланируйте output и update вызовы функций:

    DPI_blk1_output( blk1_Y_Out1);
    DPI_blk1_update( blk1_U_In1);

Пример

import "DPI" function void DPI_blk1_initialize();
import "DPI" function void DPI_blk1_ouptut(output real blk1_Y_Out1);
import "DPI" function void DPI_blk1_update(input real blk1_U_On1);

module test_twoblock_tb;

		initial begin
			DPI_blk1_initialization();
		end

		always@(posedge clk) begin
			#1
			DPI_blk1_output(blk1_Y_Out1);
			DPI_blk1_update(blk1_U_In1);
		end

		always@(posedge clk)
			begin
				blk1_U_In1 = blk1_U_In1 + 1.0;
			end