Нужно ли вычитание меньше ресурсов, чем символ сравнения в Verilog? - PullRequest
0 голосов
/ 25 марта 2020

Я работаю над проектом, и меня смущает код verilog, который старший инженер писал раньше, он сейчас не в компании, поэтому я хочу знать, почему он пишет сравнение таким образом:

subtractor #(41) sub_sum(expiredSum, {1'b0,dataRead[39:0]}, {1'b0,timeStandard}); 
assign expiredD = expiredSum[40];//goes high when dataRead>timeStandard

В чем преимущество этого? Почему он просто не сделал expiredD == (dataRead

module subtractor( c, a, b );

parameter WIDTH = 1;

input [WIDTH-1:0] a;
input [WIDTH-1:0] b;

output [WIDTH-1:0] c;

assign c = a - b;

endmodule

Заранее спасибо

1 Ответ

0 голосов
/ 04 апреля 2020

Я сталкивался с подобными проблемами несколько раз за всю свою карьеру. Даже если первоначальный инженер был доступен, было бы сложно выяснить, почему что-то было сделано, например, в нескольких последних проектах.

Обычно причина root была связана со сроками и / или проблемами области со стандартом. клеточная библиотека или синтезатор. В вашем конкретном случае c похоже, что 40-битный компаратор был менее эффективен, чем использование принудительного 41-битного вычитателя. Это все еще может быть правдой.

Вы должны сделать пробный синтез и синхронизировать аналитиков. Независимо от результатов, добавьте более содержательный комментарий в код, объясняющий рациональность, чтобы он имел смысл при проверке кода, и тот, кто наследует код последним. Даже если компаратор на этот раз более эффективен. Следующий технологический узел или цель fpga могут снова отличаться. Лучше иметь как с одним закомментированным, так и с хорошими комментариями, объясняющими это.

...