c model与systemverilog变量映射的学习示例

c model 与 sv 交互时需要定义一对函数,函数中的变量需要一一对应。因此,总结一下c/c++端的变量与systemverilog端的变量对应关系。

SV typeC equivalent
bytechar
short intshort int
intint
long intlong int 
realdouble
stringchar*
string[n]char*
chandlevoid*
  
bitsvBit/unsigned char
bit[n:0]svBitVec32//packed 数组
logicsvLogic/unsigned char
regsvLogic
logic[n:0]svLogicVec32
reg[n:0]svLogicVec32
int[]svOpenArrayHandle
byte[lsvOpenArrayHandle
shortint[]svOpenArrayHandle
longint[]svOpenArrayHandle
bit[n:0]  array[]svOpenArrayHandle//packed unpacked 混合数组
logic[n:0]  array[]svOpenArrayHandle//packed unpacked 混合数组

其中svOpenArrayHandle较为复杂,需要调用库函数对其处理。

以    bit[36:0] arr []  为示例:

sv中:

import "DPI-C" task show(input bit[36:0] arr []); //for learn

sv中调用部分代码:

arr = new[26];
for(i = 0;i<26;i++)begin
	automatic int  j = i; 
	arr[j] ='h1_0000_0000 + (j<<16);
end
show(arr);

c/c++中:

void show(const svOpenArrayHandle h){
	int i;
	svBitVec32 arr[SV_CANONICAL_SIZE(37)];
	for(i = svLow(h,1);i<=svHigh(h,1);i++){
		svBitPackedArrRef ptr = (svBitPackedArrRef)svGetArrElemPtr1(h,i);
		svGetBitVec32(arr,ptr,37);
		printf("%x\t",arr[1]);
		printf("%x\n",arr[0]);
		}
	}

输出:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值