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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3072|回复: 9

[求助] 为什么仿真得不到正确的结果?

[复制链接]
发表于 2012-4-20 16:45:13 | 显示全部楼层 |阅读模式

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

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

x
initial
    begin
        f = $fopen("rom.txt");

        for (i = 0; i < 5; i = i + 1)
        begin
            $fwrite(f, "%0h\n", i);
        end

        $readmemh("rom.txt", m_testrom, 0, 4);
    end

以上代码实现产生一个ROM文件然后读入到一个定义的存储器中,但是仿真结果是m_testrom中全为未知值。
发表于 2012-4-20 17:20:25 | 显示全部楼层
回复 1# yubeizr


    试一下 m_testrom 改为top.m_testrom,top为testbench name。
 楼主| 发表于 2012-4-20 18:00:42 | 显示全部楼层
试过了,还是不行。而且仿真的时候,如果步进运行没有问题,但是全部运行就会出现:
# ** Warning: (vsim-PLI-3408) Too few data words read on line 1 of file "rom.txt". Expected 4, found 0.    : E:/module/tb_test/code/test.v(52)
#    Time: 0 ps  Iteration: 0  Instance: /tb_test/inst_test
发表于 2012-4-20 18:06:33 | 显示全部楼层
回复 3# yubeizr


    你有没有看rom.txt  是一行一个数据吗?
 楼主| 发表于 2012-4-20 18:19:17 | 显示全部楼层
rom.txt没有问题,因为把:
        f = $fopen("rom.txt");
        for (i = 0; i < 5; i = i + 1)
         begin
             $fwrite(f, "%0h\n", i);
         end
去掉,仿真就没有问题。
发表于 2012-4-20 20:33:26 | 显示全部楼层
既读又写 这都看不出吗
发表于 2012-4-20 21:20:29 | 显示全部楼层
你写完之后,要close的吧
发表于 2012-4-20 21:23:34 | 显示全部楼层
没有flush吗
 楼主| 发表于 2012-4-23 09:26:04 | 显示全部楼层
多谢楼上同仁的集思广益,确实是需要使用$fclose再读才能实现需要的功能:
f = $fopen("rom.txt");

for (i = 0; i < 5; i = i + 1)
begin
       $fwrite(f, "%0h\n", i);
end

$fclose(f);

$readmemh("rom.txt", m_testrom, 0, 4);
end
发表于 2012-4-23 11:19:49 | 显示全部楼层
文件读写都是指针操作,明确这一点就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-5-4 00:10 , Processed in 0.029254 second(s), 8 queries , Gzip On, Redis On.

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