Вопреки вашим комментариям, '==' является частью Verilog, и если моя память сегодня намного хуже, чем обычно, то она должна синтезироваться очень хорошо. Например, вы можете написать что-то вроде:
// warning: untested, incomplete and utterly useless in any case.
// It's been a while since I wrote much Verilog, so my syntax is probably a bit off
// anyway (might well be more like VHDL than it should be).
//
module add_when_equal(clock, a, b, x, y, z);
input clock;
input [31:0] a, b, x, y;
output [31:0] z;
reg [31:0] a, b, x, y, z;
always begin: main
@(posedge clock);
if (a == b)
z <= x + y;
end
endmodule;
Verilog также поддерживает другие операторы сравнения, которые вы обычно ожидаете (! =, <= И т. Д.). Синтезаторы довольно «умны», поэтому что-то вроде <code>x != 0 обычно синтезируется в логический элемент с N-входом или вместо компаратора.