| `default_nettype none |
| |
| module Device( |
| input wire [31:0] data, |
| output wire parity |
| ); |
| |
| wire [3:0] partParity; |
| |
| Helper bottom(data[7:0], partParity[0]); |
| |
| Helper bottomMid(.parity(partParity[1]), .data(data[15:8])); |
| |
| Wrapper1 topMid(.data(data[23:16]), .parity(partParity[2])); |
| |
| Wrapper2 top(.data(data[31:24]), .parity1(partParity[3])); |
| |
| assign parity = ^partParity; |
| |
| endmodule |
| |
| module Helper( |
| input wire [7:0] data, |
| output wire parity |
| ); |
| |
| // This is a bit-wise reduction operator |
| assign parity = ^data; |
| |
| endmodule |
| |
| module Wrapper1( |
| input wire [7:0] data, |
| output wire parity |
| ); |
| |
| // Expand .* from SystemVerilog |
| Helper doTheRightThingMode(.data(data), .parity(parity)); |
| |
| endmodule |
| |
| module Wrapper2( |
| input wire [7:0] data, |
| output wire parity1 |
| ); |
| |
| // Expand .data from SystemVerilog |
| Helper compilerSaveMe(.data(data), .parity(parity1)); |
| |
| endmodule |