МАРСОХОД

Open Source Hardware Project

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА: Вопрос по Verilog: Warning (13013)

Вопрос по Verilog: Warning (13013) 3 года 4 мес. назад #4461

  • LAS
  • LAS аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 3
  • Спасибо получено: 0
Все здравствуйте! Имеется такой вот код:

reg read = 1'b0;
integer strin = 0;

always @(FEN or LEN)
begin

if (st_cam && (!FEN) && (!LEN))
read <= 1'b1;

else if (st_cam && (!FEN) && LEN)
begin
read <= 1'b0;
strin <= strin+1;
end

else
begin
read <= 1'b0;
strin<=0;
end

end



Сигналы st_cam, FEN, LEN являются входами ПЛИС (input st_cam, FEN, LEN;).





При компиляции Quartus II сообщает кучу варнингов вида:

Warning (13012): Latch RGB_monitor:Data_to_RGB|strin[30] has unsafe behavior
Warning (13013): Ports D and ENA on the latch are fed by the same signal RGB_monitor:Data_to_RGB|LEN

Warning (13012): Latch RGB_monitor:Data_to_RGB|strin[29] has unsafe behavior
Warning (13013): Ports D and ENA on the latch are fed by the same signal RGB_monitor:Data_to_RGB|LEN


...............и т.д., их много.



Data_to_RGB - это название модуля, где используется вышеуказанный блок always @.


Кроме того, Quartus II сообщает еще и такой варнинг:

Warning (335093): TimeQuest Timing Analyzer is analyzing 32 combinational loops as latches.

Как мне кажется, он тоже связан с вышеуказанным блоком.

Вопрос: как исправить код, чтобы избежать этих сообщений?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от LAS.

Вопрос по Verilog: Warning (13013) 3 года 4 мес. назад #4462

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 631
  • Спасибо получено: 51
Переделать все в синхронный дизайн:
marsohod.org/11-blog/299-nonstable-fpga

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от nckm.

Вопрос по Verilog: Warning (13013) 3 года 4 мес. назад #4463

  • LAS
  • LAS аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 3
  • Спасибо получено: 0
Я понимаю, о чем вы говорите, но это проблему не решает. При таком коде, варнинги те же:

reg read = 1'b0;

reg reg1 = 1'b0;
reg reg2 = 1'b0;
reg reg3 = 1'b0;
reg reg4 = 1'b0;

integer strin = 0;


always @(posedge DATAclk)
begin

reg1<=FEN;
reg2<=reg1;


reg3<=LEN;
reg4<=reg3;

end



always @(reg2 or reg4)
begin

if(st_cam && (!reg2) && (!reg4))
read <= 1'b1;

else if(st_cam && (!reg2) && reg4)
begin
read <= 1'b0;
strin <= strin+1;
end

else
begin
read <= 1'b0;
strin <= 0;
end


end

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от LAS.

Вопрос по Verilog: Warning (13013) 3 года 4 мес. назад #4464

  • LAS
  • LAS аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 3
  • Спасибо получено: 0
Я понимаю, о чем вы говорите, но это проблему не решает. При таком коде, варнинги те же:

reg read = 1'b0;

reg reg1 = 1'b0;
reg reg2 = 1'b0;
reg reg3 = 1'b0;
reg reg4 = 1'b0;

integer strin = 0;


always @(posedge DATAclk)
begin

reg1<=FEN;
reg2<=reg1;


reg3<=LEN;
reg4<=reg3;

end



always @(reg2 or reg4)
begin

if(st_cam && (!reg2) && (!reg4))
read <= 1'b1;

else if(st_cam && (!reg2) && reg4)
begin
read <= 1'b0;
strin <= strin+1;
end

else
begin
read <= 1'b0;
strin <= 0;
end


end

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от LAS.

Вопрос по Verilog: Warning (13013) 3 года 4 мес. назад #4466

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 631
  • Спасибо получено: 51
Исходный код при синтезе эквивалентен следующему:
always @*
	if(st_cam && !FEN && !LEN) read <= 1;
	else read <= 0;

always @*
	if(st_cam && !FEN && !LEN) strin <= strin;
	else if(st_cam && !FEN && LEN) strin <= strin+1;
	else strin <= 0;

Ясно видно, что strin будет синтезироваться в защелку (latch), а этого надо избегать. Синхронный дизайн, это дизайн без защелок.
Спасибо сказали: LAS

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
Время создания страницы: 0.151 секунд

facebook  GitHub  YouTube  Twitter
Вы здесь: Начало Forum Наш форум Языки программирования Вопрос по Verilog: Warning (13013)