在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3295|回复: 4

[原创] verilog中PLI中传参数和返回值

[复制链接]
发表于 2011-3-21 17:56:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
近来想研究下verilog中pli的问题,
一个简单的打印可以成功实现,但是一个稍微复杂点,带有参数和返回值的应用就失败了,请高手指教

我的例子是
testbench:
`timescale 1ns/1ns
module tb;
reg [7:0] a, b;
reg [7:0] c;
initial begin
        a = 1;
        b = 2;
        #9;
        a = 3;
        b = 5;
end
initial begin
        $display(" a is %0h, b is %0h, c is %h", a, b, c);
        #1;
        $display(" a is %0h, b is %0h, c is %h", a, b, c);
        $sum(a,b);
        $hello;
        #10;
        $display(" a is %0h, b is %0h, c is %h", a, b, c);
end
endmodule

pli tab 文件
$sum     call=sum  acc=rw:*
$hello   call=hello acc=rw:*

cpp 文件:
#include <stdio.h>
#include "acc_user.h"
/*
int sum (int a, int b)
{
        int sum;
        sum = a +b ;
        
}
*/
extern "C" {
void hello ()
{
        printf ( "hello world!\n");
        printf ( "it is cpp\n");
}
int sum (int a, int b)
{
        int sum;
        sum = a + b;
        printf("a is %0d\n", a);
        printf("b is %0d\n", b);
        printf("sum is %0d\n", sum);
        return sum;
}
}

仿真结果是
a is 1, b is 2, c is xx
a is 1, b is 2, c is xx
a is 0
b is 3
sum is 3
hello world!
it is cpp
a is 3, b is 5, c is xx

明显C没有拿到a,b的值。另外怎样返回一个值到verilog,
 楼主| 发表于 2011-3-21 17:57:48 | 显示全部楼层
请大侠指点
最好能给出详细的code。
谢谢!
 楼主| 发表于 2011-3-22 14:02:39 | 显示全部楼层
没有人知道吗?
 楼主| 发表于 2011-3-29 14:13:50 | 显示全部楼层
这帖子沉了?
难道就没有做verilog的PLI开发的?
发表于 2011-5-7 11:14:50 | 显示全部楼层
好象没有把sum值assign给C, 是不是要用: c=$sum(a,b);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-15 11:39 , Processed in 0.021414 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表