您好,欢迎来到划驼旅游。
搜索
您的当前位置:首页Systemverilog中DPI使用指南--4

Systemverilog中DPI使用指南--4

来源:划驼旅游
Systemverilog中DPI使⽤指南--4

1.1.1 ⽰例1

import \"DPI\" function void mydisplay(int a[2][2],logic b[4]);void mydisplay(int a[2][2],svLogic b[4])

svLogic占⽤⼀个字节。C中的0,1,2,3分别对应Verilog中的0,1,z,x。

1.1.2 Chandle

// SystemVerilog side, test.svprogram p1;

chandle memory;

import \"DPI\" function chandle int_new(int size);

import \"DPI\" function void put_int_data(int size, chandle memory);initial beginint size = 10;

$display(\"SV: call DPI to allocate memory for %0d int\memory = int_new(size);

$display(\"SV: call DPI to initialize the memory for %0d int\put_int_data(size,memory);end

endprogram

#include #include #include int i;

void * int_new(int size) {int *memory;

memory = (int *)malloc(size*sizeof(int));

printf(\"C/C++: allocate memory for %0d int in int_new\\n\return memory;}

void put_int_data(int size,void* memory) {int *temp;

temp = (int *) memory;for(i=0;iprintf(\"C/C++: memory[%0d] is set to %0d\\n\ }}

1.2 Packed Array Data Type Mapping

svBitVecVal表⽰2状态的值。svLogicVecVal表⽰4状态的值。这些值按照32位的数组来组织。

1.2.1 ⽰例1

// SystemVerilog side, test.svprogram p1; logic[63:0] a;

import \"DPI\" function void mydisplay(logic[63:0] a); initial begin

a[31:0] = 32'b0;

a[63:32] = 32'hffff_ffff; mydisplay(a); end

endprogram

#include

void mydisplay(const svLogicVec32 a[2]) { printf(\"a[0]=%x\\n\ printf(\"a[1]=%x\\n\}

1.2.2 ⽰例2

// SystemVerilog side, test.svprogram p1; integer i;

import \"DPI\" function void mydisplay(integer i); initial begin

i = 32'h0000_0101; $display(\"SV: %h\ mydisplay(i);

i = 32'h0000_zzxx; $display(\"SV: %h\ mydisplay(i); end

endprogram

#include

void mydisplay(svLogicVec32 *i) { io_printf(\"C: i.d is %d\\n\

io_printf(\"C: i.c is %d\\n\}

1.2.3 ⽰例3

Packed Struct

// SystemVerilog side, test.svprogram p1;

typedef struct packed {bit[1:0] a; bit b; bit c;} ps; import \"DPI\" function void mydisplay(ps p); initial begin ps val1; val1 = 4'hb;

mydisplay(val1); end

endprogram

#include

void mydisplay(svBitVec32 p) { printf(\"p is %x\\n\}

体验新版博客

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo6.com 版权所有 湘ICP备2023023988号-11

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务