⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 veriloghdlpli.txt

📁 Verilog HDL的PLI子程序接口
💻 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 + -