📄 veriloghdlpli.txt
字号:
//my_stop_finish.c,Verilog HDL的PLI子程序接口,用于与用户C程序在2个方向上传输数据,
#include "veriuser.h"
int my_stop_finish()
{
if(tf_nump()==1)/*如果参数1传入该任务,*/
{
if(tf_getp(1)==0)/*获取参数值,若为0则停止仿真*/
{
io_printf("Mymessage:Simulation stopped at time %d\n",tf_gettime());
tf_dostop();/*停止仿真*/
}
else if(tf_getp(1)==1)/*获取参数值,若为1则终止仿真*/
{
io_printf("Mymessage:Simulation finished at time %d\n",tf_gettime());
tf_dofinish();/*终止仿真*/
}
else /*传递警告信息*/
tf_warning("Bad arguments to \$my_stop_finish at time %d\n",tf_gettime());
}
else if(tf_nump()==2)/*如果参数1传入该任务,打印模块实例*/
{
if(tf_getp(1)==0)/*获取参数值,若为0则停止仿真*/
{
io_printf("Mymessage:Simulation stopped at time %d in instance %s \n",tf_gettime(),tf_mipname());
tf_dostop();/*停止仿真*/
}
else if(tf_getp(1)==1)/*获取参数值,若为1则终止仿真*/
{
io_printf("Mymessage:Simulation finished at time %d in instance %s \n",tf_gettime(),tf_mipname());
tf_dofinish();/*终止仿真*/
}
else /*传递警告信息*/
tf_warning("Bad arguments to \$my_stop_finish at time %d\n",tf_gettime());
}
}
连接,测试它,给模块mux2_to_1加载激励,参数组合方式调用该任务,
module top;
wire OUT;
reg I0,I1,S;
mux2_to_1 my_mux(OUT,I0,I1,S);
initial
begin
I0=1b'0;I1=b'1;S=1b'0;
$my_stop_finish(0);//停止仿真,不打印模块实例名
#5 I0=1b'1;I1=b'1;S=1b'1;
$my_stop_finish(0,1);//停止仿真,打印模块实例名
#5 I0=1b'0;I1=b'1;S=1b'x;
$my_stop_finish(2,1);//传递错误参数
#5 I0=1b'1;I1=b'1;S=1b'1;
$my_stop_finish(1,1);//终止仿真,打印模块实例名
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -