Ошибки при синтезе
Я написал код 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, я получаю ошибки на этапе "Map Design". Ошибки приведены ниже:
ERROR - map: Design is empty.
ERROR - map: Errors found in users design. Output files not written.
Почему я получаю эти ошибки и как я могу их устранить.
1 ответ
Решение
Синтезатор умный, он удаляет любую логику, которая не может влиять на вывод.
У вас нет output
только reg
s - так что вся ваша логика оптимизируется, а дизайн выглядит пустым.
Обратите внимание, что $fopen
а также $fwrite
не являются синтезируемыми, поэтому не считаются "выходами"