私が読んでいる教科書では、組み込みのプリミティブ モジュールを使用して 1 ビット加算器を実装しています。
module yAdder1(z, cout, a, b, cin);
output[0:0] z, cout;
input[0:0] a, b, cin;
wire[0:0] tmp, outL, outR;
xor left_xor(tmp, a, b);
xor right_xor(z, cin, tmp);
and left_and(outL, a, b);
and right_and(outR, tmp, cin);
or my_or(cout, outR, outL);
endmodule
しかし、なぜビット単位の演算子を使用しないのでしょうか? より簡単に見えます。
module yAdder1(z, cout, a, b, cin);
output[0:0] z, cout;
input[0:0] a, b, cin;
assign z = (a ^ b) ^ cin;
assign cout = (a & b) | ((a ^ b) & cin);
endmodule
ビット単位の演算子が暗黙的にプリミティブ モジュールを使用しない限り?