当我尝试模拟时,为什么 Modelsim 显示“错误:MIF 包含非法字符”?

问题描述 投票:0回答:1

我目前正在使用 Quartus 20.1 和 Modelsim 2020.1 在 VHDL 中设计基于 MIPS 的处理器。

我创建了一个 MIF 文件(希望)计算给定数字的 GCD。我的 MIF 文件包含以下内容:

Depth = 256;
Width = 32;
Address_radix = hex;
Data_radix = bin;

%This program will calculate the GCD of the values stored in inport0 and inport1%
%Main :%
%lw $s0, FFF8($zero)%
00:10001100000100001111111111111000;
%lw $s1, FFFC($zero)%
01:10001100000100011111111111111100;

%loop:%
%beq $s1, $s0, Exit_the_Loop%
02:00010010001100000000000000001001;        
%sltu $t0, $s1, $s0%            
03:000000010001000110000101011; 
%bne $t0, $zero, skip%          
04:00010101000000000000000000000111;        
%subu $s1, $s1, $s0%        
05:00000010001100011000000000100011;            
%j loop%            
06:00001000000000000000000000000010;        
%skip:% 
%subu $s0, $s0, $s1%            
07:00000010000100001000100000100011;        
%j loop%            
08:00001000000000000000000000000010;        

%Exit_the_Loop:%
%sw $s0, FFFC($zero)%           
09:10101100000100001111111111111100;        
%End:% 
%j  End%                
0A:00001000000000000000000000001010;        
END;

但是,每次我尝试在 modelsim 中模拟我的设计时,都会收到以下错误: “错误:MIF 包含非法字符 0” 错误消息本身不清楚,我知道我的文件中某处有非法字符或某种语法错误,但错误消息没有告诉我在哪里。 此外,我还对照其他正在运行的文件检查了我的 MIF 文件,发现它没有任何问题。

任何人都可以确认我的 MIF 文件是否有可能导致此问题的错误吗?我不知道还能做什么。

我尝试引用我保留的一个示例 MIF 文件来应对这种情况,但运气不佳。 我还尝试用谷歌搜索可能导致此特定错误的原因,但也没有运气。

最初,使用破折号而不是百分号来表示注释,因为我认为这就是问题所在,但也没有好处。

mips simulation modelsim quartus
1个回答
0
投票

我发现了这个问题,这是我的一个愚蠢的疏忽。支持user16145658帮助解决这个问题!

显示错误的原因是:我忘记了“内容”和“开始”标题。

这是正确的 MIF 文件,按预期工作!

Depth = 256;
Width = 32;
Address_radix = hex;
Data_radix = bin;
CONTENT
BEGIN
-- lw $s0, FFF8($zero)
00:10001100000100001111111111111000;
-- lw $s1, FFFC($zero)
01:10001100000100011111111111111100;
-- beq $s1, $s0, Exit_the_Loop
02:00010010001100000000000000000110;        
-- sltu $t0, $s1, $s0   
03:00000010001100000100000000101011;    
-- bne $t0, $zero, skip
04:00010101000000000000000000000010;        
-- subu $s1, $s1, $s0
05:00000010001100001000100000100011;            
-- j loop           
06:00001000000000000000000000000010;        
-- subu $s0, $s0, $s1               
07:00000010000100011000000000100011;        
-- j loop           
08:00001000000000000000000000000010;        
-- sw $s0, FFFC($zero)      
09:10101100000100001111111111111100;        
-- j  End           
0A:00001000000000000000000000001010;        
END;
© www.soinside.com 2019 - 2024. All rights reserved.