首先我想说的是,我正在通过ModelSim中编译的Verilog模型在ADS(高级设计系统2017)中运行仿真。
我的目标是将.txt文件中的数据作为输入加载到测试台中,以运行模拟,然后将模拟结果保存到另一个.txt文件中。
以下是名为“ param.txt”的输入测试.txt文件的内容:
1
2
3
4
5
这是我的Verilog测试平台代码:
`include "disciplines.vams"
module resistor(p,n);
electrical p,n;
parameter real R=50.0;
integer file;
integer out;
real pwm_A[0:10];
integer i;
integer count;
analog begin
@(initial_step) // Initial Conditions
begin
////////////// Read
file=$fopen("param.txt","r");
if (file) $display("File was opened successfully : %0d", file);
else $display("File was NOT opened successfully : %0d", file);
for (i=1; i<=5; i=i+1) begin
count = $fscanf(file,"%d",pwm_A[i]);
end
////////////// Write
out=$fopen("out.txt","w");
for (i=1; i<=5; i=i+1) begin
$fwrite(out,"%d\n",pwm_A[i]);
end
$fclose(file);
$fclose(out);
end
// Simulation (doesnt matter)
V(p,n) <+ R * I(p,n);
end
endmodule
模拟抛出此错误:
Error: Incorrect target supplied to integer-valued $fscanf field.
有人可以发现问题吗?
谢谢。
答案 0 :(得分:3)
您已将pwm
声明为实数数组,同时使用%d
格式说明符读取和写入文件。您需要
i)将pwm
更改为整数数组或
ii)在%d
和%f
系统函数调用中将$fscanf
格式说明符更改为$fwrite
。
%d
格式说明符应读取并将写入一个十进制整数。