首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"Readline called the end of file“错误VHDL

"Readline called the end of file“错误VHDL
EN

Stack Overflow用户
提问于 2019-08-16 18:37:44
回答 1查看 449关注 0票数 0

我需要在VHDL中读取一个文件,但是出现了一个错误:“第57行: Readline调用超过文件末尾mif_file”

代码语言:javascript
运行
复制
impure function init_mem(mif_file_name : in string) return mem_type is
    file mif_file : text open read_mode is mif_file_name;
    variable mif_line : line;
    variable temp_bv : bit_vector(DATA_WIDTH-1 downto 0);
    variable temp_mem : mem_type;
begin
    for i in mem_type'range loop
        readline(mif_file, mif_line);
        read(mif_line, temp_bv);
        temp_mem(i) := to_stdlogicvector(temp_bv);
    end loop;       
return temp_mem;
end function;
EN

Stack Overflow用户

回答已采纳

发布于 2019-08-16 20:56:38

正如注释部分所述,您正在尝试读取比文件中更多的内容,您可以通过检查是否到达for loop中的文件末尾来避免错误,在这种情况下,请分配一个默认值。

代码语言:javascript
运行
复制
impure function init_mem(mif_file_name : in string) return mem_type is
    file mif_file : text open read_mode is mif_file_name;
    variable mif_line : line;
    variable temp_bv : bit_vector(DATA_WIDTH-1 downto 0);
    variable temp_mem : mem_type;
begin
    for i in mem_type'range loop
        if(not endfile(mif_file)) then
            readline(mif_file, mif_line);
            read(mif_line, temp_bv);
            temp_mem(i) := to_stdlogicvector(temp_bv);
        else
            temp_mem(i) := default_value_to_be_defined;
        end if;
    end loop;       
return temp_mem;
end function;

或者,如果不想设置默认值,也可以退出for loop

代码语言:javascript
运行
复制
impure function init_mem(mif_file_name : in string) return mem_type is
    file mif_file : text open read_mode is mif_file_name;
    variable mif_line : line;
    variable temp_bv : bit_vector(DATA_WIDTH-1 downto 0);
    variable temp_mem : mem_type;
begin
    for i in mem_type'range loop
        if(not endfile(mif_file)) then
            readline(mif_file, mif_line);
            read(mif_line, temp_bv);
            temp_mem(i) := to_stdlogicvector(temp_bv);
        else
            exit;
        end if;
    end loop;       
return temp_mem;
end function;
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57523148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档