我已经编写了一个Verilog代码,用于模拟目的。它在模拟过程中正常工作。
module read_1(clk,reset);
input clk,reset;
reg [0:23]dataout;
reg htpv;
reg [0:23]e_data;
reg[1:24]data_out;
reg [25:0]cpv,cpv_round,e_av;
reg [0:23]data[0:0];
parameter threshold =8388608;
integer i,f1;
always @(negedge reset)
begin
i=0;
$readmemb("ppm_data.txt",data);
dataout=data[0];
e_data=24'b0;
end
always @(negedge clk)
begin
f1=$fopen("xxxx.txt","a");
if(i==0)
begin
data_out=dataout[(i*24)+:24];
e_av=(e_data[0:23])>>4;
e_data=e_data<<24;
cpv=data_out+e_av;
cpv_round=(cpv<threshold)?0:16777215;
htpv=(cpv_round==0)?1:0;
e_data[0:23]=cpv-cpv_round;
$fwrite(f1,"%b",htpv);
i=i+1;
end
$fclose(f1);
end
endmodule
现在我正在使用Lattice Diamond合成上面的代码,我在“地图设计”步骤中遇到错误。错误如下: -
ERROR - map: Design is empty.
ERROR - map: Errors found in users design. Output files not written.
为什么我会收到这些错误以及如何解决这些错误。
答案 0 :(得分:2)
合成器很聪明,它会删除任何不会影响输出的逻辑。
您没有output
s,只有reg
s - 所以您的所有逻辑都被优化掉了,设计被视为空。
请注意,$fopen
和$fwrite
不可合成,因此不要算作&#34;输出&#34;