【转载】System Verilog 上下文context的含义以及设置导入函数的作用域
创始人
2024-05-29 22:57:58
0

放丢失,转载一下,原文:

https://blog.csdn.net/qq_31348733/article/details/101054625

1. 上下文(context)的含义

导入函数的上下文是该函数定义所在的位置,比如$unit 、模块、program或者package作用域(scope),这一点跟普通的sv方法是一样的。如果你把一个函数导入到两个不用的作用域,对应的C代码会依据import语句所在位置的上下文执行。这类似于在SV的两个不同模块中分别定义一个run()任务,每个任务都会明确地访问自己所在模块的内部变量。

下面是C方法根据导入和导出语句的上下文来调用不同SV方法的一个实例:

//top.sv

module top;

import "DPI-C" context

endmodule:top

2. 设置导入函数的作用域

如同SV代码可以在局部作用域调用方法,导入的C方法也可以在它默认的上下文之外调用方法。使用svGetScope方法可以获得当前作用域的句柄,然后就可以对svGetScope的调用中使用该句柄,使得C代码认为它处在另外一个上下文中。

下面是一个实例:

第一个方法save_my_scope()保存它在SV中调用处的作用域

第二个方法c_display()将其作用域设置为已保存的作用域,并打印信息

//c_display.c

#include

#include

extern void sv_display();

svScope my_scope;

void save_my_scope(){

my_scope = svGetScope();

}

void c_display(){

//打印当前作用域

io_printf("C:c_display called from scope %s\n", svGetNameFromScope(svGetScope()));

//设置新的作用域

//io_prinf("scope: %s", svGetNameFromScope(svGetScope()));

svSetScope(my_scope);

io_printf("C:calling %s.sv_display\n", svGetNameFromScope(svGetScope()));

sv_display();

}

上面的C代码调用了svGetNameFromScope(),该函数返回表征当前作用域的一个字符串。返回的作用域被打印了两次,一次是C代码首次被调用时的作用域,另一次是先前保存过的作用域。

下面SV代码代码中,第一个模块block调用了一个C方法来保存上下文信息。当top模块调用c_display()方法时,该方法将作用域设置回block,这样它调用的便是block模块中的sv_display(),而非top模块中的同名方法

//top.sv

`timescale1ns/1ns

moduletop;

//=====================================================================\

// ********** Define Parameter and Internal Signals *************

//=====================================================================/

//======================================================================

// *************** Main Code ****************

//======================================================================

import "DPI-C" context function void c_display();

export "DPI-C" function sv_display;

function void sv_display();

$display("SV:top %m");

endfunction

block b1();

initial begin

#1 c_display();

end

endmodule:top

module block;

import "DPI-C" context function void c_display();

import "DPI-C" context function void save_my_scope();

export "DPI-C" function sv_display;

function void sv_display();

$display("SV:block %m");

endfunction

initial begin

save_my_scope();

c_display();

end

endmodule:block

下面是程序运行结果

# C:c_display called from scope top.b1

# C:calling top.b1.sv_display

# SV:block top.b1.sv_display

# C:c_display called from scope top

# C:calling top.b1.sv_display

# SV:block top.b1.sv_display

————————————————

版权声明:本文为CSDN博主「强迫症高级患者」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_31348733/article/details/101054625

相关内容

热门资讯

一持有型不动产ABS获批通过 根据上交所网站信息,太保资产-世纪互联数据中心持有型不动产资产支持专项计划获批通过,这是市场通过的第...
美国称其从沙特获得6000亿美... 据报道,美国称其从沙特获得6000亿美元投资。
长三角生态绿色一体化发展示范区... 中新网嘉兴5月13日电(记者 王逸飞)13日,在浙江嘉善举行的2025年国际生物多样性日长三角生态绿...
沙特人工智能公司HUMAIN将... 5月13日,沙特公共投资基金旗下人工智能公司HUMAIN宣布同英伟达建立战略合作伙伴关系。两家公司将...
科技可以如此有温度,多款高科技... 转自:上观新闻外骨骼康复训练器、手语AI主持人……科技助残有了具象。今天下午,以“融合无界 科技无限...
万集科技深耕激光和智能网联方向... 上证报中国证券网讯 5月13日晚,万集科技披露公告,万集科技及下属武汉万集、深圳万集于2025年4月...
官宣!中方调整对美关税 为落实中美经贸高层会谈的重要共识,根据《中华人民共和国关税法》、《中华人民共和国海关法》、《中华人民...
从“小家”到“万家”:闽台夫妻... 中新社福州5月13日电 题:从“小家”到“万家”:闽台夫妻的大陆家装创业路  作者 郑江洛  在福州...
俄副外长:俄美两国将举行双边谈... △俄罗斯副外长里亚布科夫(资料图)当地时间13日,俄罗斯外交部副部长里亚布科夫表示,俄美两国将举行双...
“应急使命·2025”——台风... 中新网南宁5月13日电(林浩 王以照)为提升防范化解重大安全风险和应对突发事件的能力,5月13日,应...
中国国家能源局主要负责人会见洪... 中新社北京5月13日电 (王梦瑶)据中国国家能源局消息,国家能源局局长王宏志日前在北京会见洪都拉斯能...
应对AI对科研诚信的挑战,高校... 转自:中国科学报当前,人工智能(AI)对高校的影响是全面且深入的,这已成为高教界的共识。不过,这种影...
贝莱德CEO:市场在找到新平衡...   尽管中美达成贸易休战协议,但全球金融业一些知名领军者仍在提防市场可能出现的持续波动。不过他们也表...
中方调整对美关税:由34%调整... 国务院关税税则委员会5月13日发布公告称,为落实中美经贸高层会谈的重要共识,根据《中华人民共和国关税...
来伊份再回应:与消费者达成和解 5月13日,来伊份发布关于消费者反映蜜枣粽问题处理的情况说明:事情发生后,公司迅速采取行动,对相关批...
4月份黑龙江省居民消费价格同比... 转自:黑龙江新闻网近日,记者从国家统计局黑龙江调查总队获悉,2025年4月份,黑龙江省消费市场运行总...
同有科技:股东及副总经理拟合计... 格隆汇5月13日|同有科技晚间公告,持股8.38%的股东杨永松计划以集中竞价方式减持公司股份不超过4...
钜泉科技2024年股权激励计划... 上证报中国证券网讯钜泉科技5月13日晚发布公告,公司于近日收到中国证券登记结算有限责任公司上海分公司...
AI热评:百万网红被立案是自导... 转自:法治日报 #律师称网红自导自演自杀已涉嫌违法#【A...
挖地三尺,诱人羊毛来了 图:Isabelle Feliu上次写了支付宝、微信羊毛。点击重温我还担心,知道的人已经很多、没啥参...