Допустим, у меня есть некоторая логика, зависящая от трех сигналов a
, b
и c
для назначения переменной d
.
Если я знаю, a
и b
и c
логически (как в Я знаю, что они будут, инструмент не обязательно сможет это выяснить)будет взаимоисключающим, что будет быстрее с точки зрения синтезированного результата?
Это:
always @(posedge clk) begin
if (a) begin
d <= foo;
end
if (b) begin
d <= bar;
end
if (c) begin
d <= fizz;
end
end
Или это:
always @(posedge clk) begin
if (c) begin
d <= fizz;
end else if (b) begin
d <= bar;
end else if (a) begin
d <= foo;
end
end
Я думаю, чтопервый, потому что там меньше вложенности, так как там нет проверки, затем проверьте это, затем проверьте это.Но я бы сказал последнее, потому что, если одно условное вычисление оценивается первым, ему не нужно учитывать результаты других условий.Но, возможно, я ошибаюсь и что-то упускаю.
Заранее спасибо!