URL
https://opencores.org/ocsvn/gcm-aes/gcm-aes/trunk
Subversion Repositories gcm-aes
Compare Revisions
- This comparison shows the changes necessary to convert path
/gcm-aes
- from Rev 1 to Rev 2
- ↔ Reverse comparison
Rev 1 → Rev 2
/trunk/rtl/aes_sbox.v
0,0 → 1,327
///////////////////////////////////////////////////////////////////// |
//// //// |
//// AES SBOX (ROM) //// |
//// //// |
//// //// |
//// Author: Rudolf Usselmann //// |
//// rudi@asics.ws //// |
//// //// |
//// //// |
//// Downloaded from: http://www.opencores.org/cores/aes_core/ //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Copyright (C) 2000-2002 Rudolf Usselmann //// |
//// www.asics.ws //// |
//// rudi@asics.ws //// |
//// //// |
//// This source file may be used and distributed without //// |
//// restriction provided that this copyright statement is not //// |
//// removed from the file and that any derivative work contains //// |
//// the original copyright notice and the associated disclaimer.//// |
//// //// |
//// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY //// |
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //// |
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //// |
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR //// |
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //// |
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES //// |
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE //// |
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR //// |
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF //// |
//// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT //// |
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT //// |
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //// |
//// POSSIBILITY OF SUCH DAMAGE. //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
|
// CVS Log |
// |
// $Id: aes_sbox.v,v 1.1.1.1 2002-11-09 11:22:38 rudi Exp $ |
// |
// $Date: 2002-11-09 11:22:38 $ |
// $Revision: 1.1.1.1 $ |
// $Author: rudi $ |
// $Locker: $ |
// $State: Exp $ |
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// |
// |
// |
// |
// |
|
`timescale 1 ns/1 ps |
|
|
module aes_sbox(a,d); |
input [7:0] a; |
output [7:0] d; |
reg [7:0] d; |
|
always @(a) |
case(a) // synopsys full_case parallel_case |
8'h00: d=8'h63; |
8'h01: d=8'h7c; |
8'h02: d=8'h77; |
8'h03: d=8'h7b; |
8'h04: d=8'hf2; |
8'h05: d=8'h6b; |
8'h06: d=8'h6f; |
8'h07: d=8'hc5; |
8'h08: d=8'h30; |
8'h09: d=8'h01; |
8'h0a: d=8'h67; |
8'h0b: d=8'h2b; |
8'h0c: d=8'hfe; |
8'h0d: d=8'hd7; |
8'h0e: d=8'hab; |
8'h0f: d=8'h76; |
8'h10: d=8'hca; |
8'h11: d=8'h82; |
8'h12: d=8'hc9; |
8'h13: d=8'h7d; |
8'h14: d=8'hfa; |
8'h15: d=8'h59; |
8'h16: d=8'h47; |
8'h17: d=8'hf0; |
8'h18: d=8'had; |
8'h19: d=8'hd4; |
8'h1a: d=8'ha2; |
8'h1b: d=8'haf; |
8'h1c: d=8'h9c; |
8'h1d: d=8'ha4; |
8'h1e: d=8'h72; |
8'h1f: d=8'hc0; |
8'h20: d=8'hb7; |
8'h21: d=8'hfd; |
8'h22: d=8'h93; |
8'h23: d=8'h26; |
8'h24: d=8'h36; |
8'h25: d=8'h3f; |
8'h26: d=8'hf7; |
8'h27: d=8'hcc; |
8'h28: d=8'h34; |
8'h29: d=8'ha5; |
8'h2a: d=8'he5; |
8'h2b: d=8'hf1; |
8'h2c: d=8'h71; |
8'h2d: d=8'hd8; |
8'h2e: d=8'h31; |
8'h2f: d=8'h15; |
8'h30: d=8'h04; |
8'h31: d=8'hc7; |
8'h32: d=8'h23; |
8'h33: d=8'hc3; |
8'h34: d=8'h18; |
8'h35: d=8'h96; |
8'h36: d=8'h05; |
8'h37: d=8'h9a; |
8'h38: d=8'h07; |
8'h39: d=8'h12; |
8'h3a: d=8'h80; |
8'h3b: d=8'he2; |
8'h3c: d=8'heb; |
8'h3d: d=8'h27; |
8'h3e: d=8'hb2; |
8'h3f: d=8'h75; |
8'h40: d=8'h09; |
8'h41: d=8'h83; |
8'h42: d=8'h2c; |
8'h43: d=8'h1a; |
8'h44: d=8'h1b; |
8'h45: d=8'h6e; |
8'h46: d=8'h5a; |
8'h47: d=8'ha0; |
8'h48: d=8'h52; |
8'h49: d=8'h3b; |
8'h4a: d=8'hd6; |
8'h4b: d=8'hb3; |
8'h4c: d=8'h29; |
8'h4d: d=8'he3; |
8'h4e: d=8'h2f; |
8'h4f: d=8'h84; |
8'h50: d=8'h53; |
8'h51: d=8'hd1; |
8'h52: d=8'h00; |
8'h53: d=8'hed; |
8'h54: d=8'h20; |
8'h55: d=8'hfc; |
8'h56: d=8'hb1; |
8'h57: d=8'h5b; |
8'h58: d=8'h6a; |
8'h59: d=8'hcb; |
8'h5a: d=8'hbe; |
8'h5b: d=8'h39; |
8'h5c: d=8'h4a; |
8'h5d: d=8'h4c; |
8'h5e: d=8'h58; |
8'h5f: d=8'hcf; |
8'h60: d=8'hd0; |
8'h61: d=8'hef; |
8'h62: d=8'haa; |
8'h63: d=8'hfb; |
8'h64: d=8'h43; |
8'h65: d=8'h4d; |
8'h66: d=8'h33; |
8'h67: d=8'h85; |
8'h68: d=8'h45; |
8'h69: d=8'hf9; |
8'h6a: d=8'h02; |
8'h6b: d=8'h7f; |
8'h6c: d=8'h50; |
8'h6d: d=8'h3c; |
8'h6e: d=8'h9f; |
8'h6f: d=8'ha8; |
8'h70: d=8'h51; |
8'h71: d=8'ha3; |
8'h72: d=8'h40; |
8'h73: d=8'h8f; |
8'h74: d=8'h92; |
8'h75: d=8'h9d; |
8'h76: d=8'h38; |
8'h77: d=8'hf5; |
8'h78: d=8'hbc; |
8'h79: d=8'hb6; |
8'h7a: d=8'hda; |
8'h7b: d=8'h21; |
8'h7c: d=8'h10; |
8'h7d: d=8'hff; |
8'h7e: d=8'hf3; |
8'h7f: d=8'hd2; |
8'h80: d=8'hcd; |
8'h81: d=8'h0c; |
8'h82: d=8'h13; |
8'h83: d=8'hec; |
8'h84: d=8'h5f; |
8'h85: d=8'h97; |
8'h86: d=8'h44; |
8'h87: d=8'h17; |
8'h88: d=8'hc4; |
8'h89: d=8'ha7; |
8'h8a: d=8'h7e; |
8'h8b: d=8'h3d; |
8'h8c: d=8'h64; |
8'h8d: d=8'h5d; |
8'h8e: d=8'h19; |
8'h8f: d=8'h73; |
8'h90: d=8'h60; |
8'h91: d=8'h81; |
8'h92: d=8'h4f; |
8'h93: d=8'hdc; |
8'h94: d=8'h22; |
8'h95: d=8'h2a; |
8'h96: d=8'h90; |
8'h97: d=8'h88; |
8'h98: d=8'h46; |
8'h99: d=8'hee; |
8'h9a: d=8'hb8; |
8'h9b: d=8'h14; |
8'h9c: d=8'hde; |
8'h9d: d=8'h5e; |
8'h9e: d=8'h0b; |
8'h9f: d=8'hdb; |
8'ha0: d=8'he0; |
8'ha1: d=8'h32; |
8'ha2: d=8'h3a; |
8'ha3: d=8'h0a; |
8'ha4: d=8'h49; |
8'ha5: d=8'h06; |
8'ha6: d=8'h24; |
8'ha7: d=8'h5c; |
8'ha8: d=8'hc2; |
8'ha9: d=8'hd3; |
8'haa: d=8'hac; |
8'hab: d=8'h62; |
8'hac: d=8'h91; |
8'had: d=8'h95; |
8'hae: d=8'he4; |
8'haf: d=8'h79; |
8'hb0: d=8'he7; |
8'hb1: d=8'hc8; |
8'hb2: d=8'h37; |
8'hb3: d=8'h6d; |
8'hb4: d=8'h8d; |
8'hb5: d=8'hd5; |
8'hb6: d=8'h4e; |
8'hb7: d=8'ha9; |
8'hb8: d=8'h6c; |
8'hb9: d=8'h56; |
8'hba: d=8'hf4; |
8'hbb: d=8'hea; |
8'hbc: d=8'h65; |
8'hbd: d=8'h7a; |
8'hbe: d=8'hae; |
8'hbf: d=8'h08; |
8'hc0: d=8'hba; |
8'hc1: d=8'h78; |
8'hc2: d=8'h25; |
8'hc3: d=8'h2e; |
8'hc4: d=8'h1c; |
8'hc5: d=8'ha6; |
8'hc6: d=8'hb4; |
8'hc7: d=8'hc6; |
8'hc8: d=8'he8; |
8'hc9: d=8'hdd; |
8'hca: d=8'h74; |
8'hcb: d=8'h1f; |
8'hcc: d=8'h4b; |
8'hcd: d=8'hbd; |
8'hce: d=8'h8b; |
8'hcf: d=8'h8a; |
8'hd0: d=8'h70; |
8'hd1: d=8'h3e; |
8'hd2: d=8'hb5; |
8'hd3: d=8'h66; |
8'hd4: d=8'h48; |
8'hd5: d=8'h03; |
8'hd6: d=8'hf6; |
8'hd7: d=8'h0e; |
8'hd8: d=8'h61; |
8'hd9: d=8'h35; |
8'hda: d=8'h57; |
8'hdb: d=8'hb9; |
8'hdc: d=8'h86; |
8'hdd: d=8'hc1; |
8'hde: d=8'h1d; |
8'hdf: d=8'h9e; |
8'he0: d=8'he1; |
8'he1: d=8'hf8; |
8'he2: d=8'h98; |
8'he3: d=8'h11; |
8'he4: d=8'h69; |
8'he5: d=8'hd9; |
8'he6: d=8'h8e; |
8'he7: d=8'h94; |
8'he8: d=8'h9b; |
8'he9: d=8'h1e; |
8'hea: d=8'h87; |
8'heb: d=8'he9; |
8'hec: d=8'hce; |
8'hed: d=8'h55; |
8'hee: d=8'h28; |
8'hef: d=8'hdf; |
8'hf0: d=8'h8c; |
8'hf1: d=8'ha1; |
8'hf2: d=8'h89; |
8'hf3: d=8'h0d; |
8'hf4: d=8'hbf; |
8'hf5: d=8'he6; |
8'hf6: d=8'h42; |
8'hf7: d=8'h68; |
8'hf8: d=8'h41; |
8'hf9: d=8'h99; |
8'hfa: d=8'h2d; |
8'hfb: d=8'h0f; |
8'hfc: d=8'hb0; |
8'hfd: d=8'h54; |
8'hfe: d=8'hbb; |
8'hff: d=8'h16; |
endcase |
|
endmodule |
|
|
/trunk/rtl/gcm_aes_v0.v
0,0 → 1,603
///////////////////////////////////////////////////////////////////// |
//// //// |
//// GCM-AES Top Module //// |
//// //// |
//// //// |
//// Author: Tariq Bashir Ahmad and Guy Hutchison //// |
//// tariq.bashir@gmail.com //// |
//// ghutchis@gmail.com //// |
//// //// |
//// Downloaded from: http://www.opencores.org/ //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Copyright (C) 2010 Tariq Bashir Ahmad and //// |
//// Guy Hutchison //// |
//// http://www.ecs.umass.edu/~tbashir //// |
//// //// |
//// //// |
//// This source file may be used and distributed without //// |
//// restriction provided that this copyright statement is not //// |
//// removed from the file and that any derivative work contains //// |
//// the original copyright notice and the associated disclaimer.//// |
//// //// |
//// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY //// |
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //// |
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //// |
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR //// |
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //// |
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES //// |
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE //// |
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR //// |
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF //// |
//// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT //// |
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT //// |
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //// |
//// POSSIBILITY OF SUCH DAMAGE. //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
|
|
`timescale 1ns / 1ps |
|
`define SIZE 128 |
|
module gcm_aes_v0( |
input clk, |
input rst, |
|
/* DATA Input Interface (dii) */ |
input [`SIZE-1:0] dii_data, |
input dii_data_vld, |
input dii_data_type, |
output reg dii_data_not_ready, |
input dii_last_word, |
input [3:0] dii_data_size, |
|
/* Control Input Interface */ |
input cii_ctl_vld, //acts as start signal |
input cii_IV_vld, |
input [`SIZE-1:0] cii_K, |
|
|
/* Data Output Interface */ |
output reg [`SIZE-1:0] Out_data, |
output reg Out_vld, |
output reg [3:0] Out_data_size, |
output reg Out_last_word, |
|
/* Tag output Interface */ |
output reg Tag_vld |
|
); |
|
|
|
|
|
//actual registers |
reg [`SIZE-1:0] H, nxt_H, EkY0, nxt_EkY0, Yi, Yi_init; |
reg [`SIZE-1:0] gfm_result; |
reg [63:0] enc_byte_cnt, aad_byte_cnt; |
|
reg nxt_Out_vld, nxt_Tag_vld; |
|
reg [`SIZE-1:0] dii_data_star, nxt_Out_data_star; |
|
//wires |
reg [`SIZE-1:0] nxt_Out_data, nxt_Tag_data; |
|
//aes signals |
reg [`SIZE-1:0] aes_text_in; |
reg aes_kld; |
wire aes_done; |
wire [`SIZE-1:0] aes_text_out; |
|
//control signals |
reg mux_aes_text_in_sel, mux_yi_sel; |
|
//gfm signals |
reg [`SIZE-1:0] v_in, z_in,b_in, gfm_input1; |
wire [`SIZE-1:0] z_out, v_out; |
reg [3:0] gfm_cnt; |
|
//write enables |
reg we_y, we_lenA, we_lenC, start_gfm_cnt; |
|
|
//FSM signals |
reg [9:0] state, nxt_state; |
|
parameter IDLE = 10'd1, |
ENCRYPT_0 = 10'd2, |
INIT_COUNTER = 10'd4, |
ENCRYPT_Y0 = 10'd8, |
DATA_ACCEPT = 10'd16, |
GFM_MULT = 10'd32, |
INC_COUNTER = 10'd64, |
M_ENCRYPT = 10'd128, |
PRE_TAG_CALC = 10'd256, |
TAG_CALC = 10'd512; |
|
|
|
|
|
|
|
always @* |
begin |
dii_data_star = 0; |
case(dii_data_size) |
0: // 1 valid byte |
begin |
dii_data_star = ({dii_data[7:0],120'b0}); |
end |
1: //2 valid bytes |
begin |
dii_data_star = {dii_data[15:0],112'b0}; |
end |
2: //3 valid bytes |
begin |
dii_data_star = {dii_data[23:0],104'b0}; |
end |
3: //4 valid bytes |
begin |
dii_data_star = {dii_data[31:0],96'b0}; |
end |
4: //5 valid bytes |
begin |
dii_data_star = {dii_data[39:0],88'b0}; |
end |
5: //6 valid bytes |
begin |
dii_data_star = {dii_data[47:0],80'b0}; |
end |
6: //7 valid bytes |
begin |
dii_data_star = {dii_data[55:0],72'b0}; |
end |
7: //8 valid bytes |
begin |
dii_data_star = {dii_data[63:0],64'b0}; |
end |
8: |
begin |
dii_data_star = {dii_data[71:0],56'b0}; |
end |
9: |
begin |
dii_data_star = {dii_data[79:0],48'b0}; |
end |
10: |
begin |
dii_data_star = {dii_data[87:0],40'b0}; |
end |
11: |
begin |
dii_data_star = {dii_data[95:0],32'b0}; |
end |
12: |
begin |
dii_data_star = {dii_data[103:0],24'b0}; |
end |
13: //14 valid bytes |
begin |
dii_data_star = ({dii_data[111:0],16'b0}); |
end |
14: //15 valid bytes |
begin |
dii_data_star = {dii_data[119:0],8'b0}; |
end |
endcase |
|
end |
|
always @* |
begin |
nxt_Out_data_star = 0; |
case(dii_data_size) |
0: //1 valid byte |
begin |
nxt_Out_data_star = {nxt_Out_data[127:120],120'b0}; |
end |
1:// 2 valid bytes |
begin |
nxt_Out_data_star = {nxt_Out_data[127:112],112'b0}; |
end |
2:// 3 valid bytes |
begin |
nxt_Out_data_star = {nxt_Out_data[127:104],104'b0}; |
end |
3:// 4 valid bytes |
begin |
nxt_Out_data_star = {nxt_Out_data[127:96],96'b0}; |
end |
4:// 5 valid bytes |
begin |
nxt_Out_data_star = {nxt_Out_data[127:88],88'b0}; |
end |
5:// 6 valid bytes |
begin |
nxt_Out_data_star = {nxt_Out_data[127:80],80'b0}; |
end |
6:// 7 valid bytes |
begin |
nxt_Out_data_star = {nxt_Out_data[127:72],72'b0}; |
end |
7:// 8 valid bytes |
begin |
nxt_Out_data_star = {nxt_Out_data[127:64],64'b0}; |
end |
8:// 9 valid bytes |
begin |
nxt_Out_data_star = {nxt_Out_data[127:56],56'b0}; |
end |
9:// 10 valid bytes |
begin |
nxt_Out_data_star = {nxt_Out_data[127:48],48'b0}; |
end |
10:// 11 valid bytes |
begin |
nxt_Out_data_star = {nxt_Out_data[127:40],40'b0}; |
end |
11: // 12 valid byte |
begin |
nxt_Out_data_star = {nxt_Out_data[127:32],32'b0}; |
end |
12:// 13 valid bytes |
begin |
nxt_Out_data_star = {nxt_Out_data[127:24],24'b0}; |
end |
13:// 14 valid bytes |
begin |
nxt_Out_data_star = {nxt_Out_data[127:16],16'b0}; |
end |
14: // 15 valid byte |
begin |
nxt_Out_data_star = {nxt_Out_data[127:8],8'b0}; |
end |
|
endcase // case (dii_data_size) |
end |
|
|
always @(posedge clk or posedge rst) |
if(rst) |
begin |
state <= #1 IDLE; |
H <= #1 0; |
EkY0 <= #1 0; |
end |
else |
begin |
H <= #1 nxt_H; |
EkY0 <= #1 nxt_EkY0; |
state <= #1 nxt_state; |
end |
|
|
//out data |
always @(posedge clk) |
begin |
if(nxt_Out_vld & ~nxt_Tag_vld) |
begin |
Out_data <= #1 nxt_Out_data; |
Out_data_size <= #1 dii_data_size; |
Out_last_word <= #1 dii_last_word; |
end |
else if(nxt_Tag_vld) |
Out_data <= #1 nxt_Tag_data; |
|
Tag_vld <= #1 nxt_Tag_vld; |
Out_vld <= #1 nxt_Out_vld; |
end |
|
/* always @(posedge clk) |
begin |
if(nxt_Out_vld) |
begin |
Out_data <= #1 nxt_Out_data; |
Out_data_size <= #1 dii_data_size; |
Out_last_word <= #1 dii_last_word; |
end |
Out_vld <= #1 nxt_Out_vld; |
|
end |
|
|
always @(posedge clk) |
begin |
if(nxt_Tag_vld) |
Out_data <= #1 nxt_Tag_data; |
|
Tag_vld <= #1 nxt_Tag_vld; |
end |
*/ |
|
//aes text_in |
always @* |
begin |
aes_text_in = 0; |
case(mux_aes_text_in_sel) |
0: aes_text_in = 0; |
|
1: aes_text_in = Yi; |
|
endcase |
end |
|
|
//initializing Yi_init |
always @* |
begin |
Yi_init = 0; |
if(cii_IV_vld) |
begin |
Yi_init = dii_data; |
end |
end |
|
|
//FSM |
always @* |
begin |
//list of defaults |
nxt_state = state; |
we_y = 0; |
we_lenA = 0; |
we_lenC = 0; |
dii_data_not_ready = 1; |
aes_kld = 0; |
mux_aes_text_in_sel = 0; |
mux_yi_sel = 0; |
start_gfm_cnt = 0; |
nxt_H = H; |
nxt_EkY0 = EkY0; |
nxt_Out_vld = 0; |
nxt_Tag_vld = 0; |
gfm_input1 = 0; |
nxt_Out_data = 0; |
nxt_Tag_data = 0; |
|
case(state) |
IDLE: |
begin |
// $display($time,": In IDLE\n"); |
if(cii_ctl_vld) |
begin |
aes_kld = 1; |
mux_aes_text_in_sel = 0; |
nxt_state = ENCRYPT_0; |
end |
end |
|
ENCRYPT_0: |
begin |
if(aes_done) |
begin |
nxt_H = aes_text_out; |
if(cii_IV_vld) |
begin |
we_y = 1; |
nxt_state = INIT_COUNTER; |
end |
end |
end // case: ENCRYPT_0 |
|
INIT_COUNTER: |
begin |
// figure out how to launch a GCM op here, |
// or go to next state which launches GCM op |
mux_aes_text_in_sel = 1; |
aes_kld = 1; |
nxt_state = ENCRYPT_Y0; |
end |
|
|
ENCRYPT_Y0: |
begin |
if(aes_done) |
begin |
nxt_EkY0 = aes_text_out; |
nxt_state = DATA_ACCEPT; |
end |
end |
|
DATA_ACCEPT: |
begin |
dii_data_not_ready = 0; |
if(dii_data_vld & dii_data_type) //AAD |
begin |
if(dii_data_size == 4'd15) |
begin |
we_lenA = 1; |
gfm_input1 = dii_data; |
start_gfm_cnt = 1; |
nxt_state = GFM_MULT; |
end |
else |
begin |
we_lenA = 1; |
gfm_input1 = dii_data_star; //note star |
start_gfm_cnt = 1; |
nxt_state = GFM_MULT; |
end |
end |
else if(dii_data_vld & ~dii_data_type) //ENC |
begin |
mux_yi_sel = 1; |
we_y = 1; |
nxt_state = INC_COUNTER; |
end |
end // case: AAD_ACCEPT |
|
INC_COUNTER: |
begin |
we_lenC = 1; |
mux_aes_text_in_sel = 1; |
aes_kld = 1; |
nxt_state = M_ENCRYPT; |
end |
|
GFM_MULT: |
begin |
if(gfm_cnt == 4'd7) |
begin |
start_gfm_cnt = 0; |
if(~dii_last_word) |
nxt_state = DATA_ACCEPT; |
else |
nxt_state = PRE_TAG_CALC; |
end |
end |
|
M_ENCRYPT: |
begin |
if(aes_done) |
begin |
if(dii_data_size == 4'd15) |
begin |
nxt_Out_data = aes_text_out ^ dii_data; |
nxt_Out_vld = 1; |
gfm_input1 = nxt_Out_data; |
end |
else |
begin |
nxt_Out_data = aes_text_out ^ dii_data_star; |
nxt_Out_vld = 1; |
gfm_input1 = nxt_Out_data_star; |
end |
start_gfm_cnt = 1; |
nxt_state = GFM_MULT; |
end |
end // case: M_ACCEPT |
|
PRE_TAG_CALC: |
begin |
gfm_input1 = {(aad_byte_cnt << 3),(enc_byte_cnt << 3)}; |
start_gfm_cnt = 1; |
nxt_state = TAG_CALC; |
end |
|
TAG_CALC: |
begin |
if(gfm_cnt == 4'd7) |
begin |
start_gfm_cnt = 0; |
nxt_Tag_data = EkY0 ^ z_out; |
nxt_Tag_vld = 1'b1; |
nxt_state = IDLE; |
end |
end |
|
endcase |
|
end |
|
|
|
|
|
always @(posedge clk) |
if(we_y) |
case(mux_yi_sel) |
0: Yi <= #1 Yi_init; |
1: Yi <= #1 Yi + 1; |
endcase |
|
always @(posedge clk or posedge rst) |
if(rst) |
enc_byte_cnt <= #1 0; |
else if(we_lenC) |
enc_byte_cnt <= #1 enc_byte_cnt + dii_data_size + 1; |
|
always @(posedge clk or posedge rst) |
if(rst) |
aad_byte_cnt <= #1 0; |
else if(we_lenA) |
aad_byte_cnt <= #1 aad_byte_cnt + dii_data_size + 1; |
|
always @(posedge clk) |
if(start_gfm_cnt) |
gfm_cnt <= #1 4'd0; |
else if(gfm_cnt != 4'd7) |
gfm_cnt <= #1 gfm_cnt + 1; |
|
|
always @(posedge clk) |
if(cii_ctl_vld) |
gfm_result <= #1 0; |
else if(gfm_cnt == 4'd7) |
gfm_result <= #1 z_out; |
|
|
|
always @(posedge clk) |
if(start_gfm_cnt) |
begin |
v_in <= #1 H; |
z_in <= #1 {`SIZE{1'b0}}; |
b_in <= #1 gfm_input1 ^ gfm_result; |
end |
|
else |
begin |
v_in <= #1 v_out; |
z_in <= #1 z_out; |
b_in <= #1 b_in << 16; |
end |
|
|
|
|
/* |
gfm128_16 AUTO_TEMPLATE |
( |
.v_out (v_out[127:0]), |
.z_out (z_out[127:0]), |
.v_in (v_in[127:0]), |
.z_in (z_in[127:0]), |
.b_in (b_in[127:112]), |
); |
*/ |
|
|
gfm128_16 GFM(/*AUTOINST*/ |
// Outputs |
.v_out (v_out[127:0]), // Templated |
.z_out (z_out[127:0]), // Templated |
// Inputs |
.v_in (v_in[127:0]), // Templated |
.z_in (z_in[127:0]), // Templated |
.b_in (b_in[127:112])); // Templated |
|
|
/* |
aes_cipher_top AUTO_TEMPLATE |
( |
.done (aes_done), |
.text_out (aes_text_out[127:0]), |
.clk (clk), |
.rst (rst), |
.ld (aes_kld), |
.key (cii_K), |
.text_in (aes_text_in[127:0]), |
); |
*/ |
|
aes_cipher_top AES_ENC (/*AUTOINST*/ |
// Outputs |
.done (aes_done), // Templated |
.text_out (aes_text_out[127:0]), // Templated |
// Inputs |
.clk (clk), // Templated |
.rst (rst), // Templated |
.ld (aes_kld), // Templated |
.key (cii_K), // Templated |
.text_in (aes_text_in[127:0])); // Templated |
|
|
|
|
endmodule |
/trunk/rtl/aes_cipher_top.v
0,0 → 1,275
///////////////////////////////////////////////////////////////////// |
//// //// |
//// AES Cipher Top Level //// |
//// //// |
//// //// |
//// Author: Rudolf Usselmann //// |
//// rudi@asics.ws //// |
//// //// |
//// //// |
//// Downloaded from: http://www.opencores.org/cores/aes_core/ //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Copyright (C) 2000-2002 Rudolf Usselmann //// |
//// www.asics.ws //// |
//// rudi@asics.ws //// |
//// //// |
//// This source file may be used and distributed without //// |
//// restriction provided that this copyright statement is not //// |
//// removed from the file and that any derivative work contains //// |
//// the original copyright notice and the associated disclaimer.//// |
//// //// |
//// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY //// |
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //// |
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //// |
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR //// |
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //// |
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES //// |
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE //// |
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR //// |
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF //// |
//// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT //// |
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT //// |
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //// |
//// POSSIBILITY OF SUCH DAMAGE. //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
|
// CVS Log |
// |
// $Id: aes_cipher_top.v,v 1.1.1.1 2002-11-09 11:22:48 rudi Exp $ |
// |
// $Date: 2002-11-09 11:22:48 $ |
// $Revision: 1.1.1.1 $ |
// $Author: rudi $ |
// $Locker: $ |
// $State: Exp $ |
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// |
// |
// |
// |
// |
|
|
`timescale 1 ns/1 ps |
|
module aes_cipher_top(clk, rst, ld, done, key, text_in, text_out); |
input clk, rst; |
input ld; |
output done; |
input [127:0] key; |
input [127:0] text_in; |
output [127:0] text_out; |
|
//////////////////////////////////////////////////////////////////// |
// |
// Local Wires |
// |
|
wire [31:0] w0, w1, w2, w3; |
reg [127:0] text_in_r; |
reg [127:0] text_out; |
|
|
reg [7:0] sa00, sa01, sa02, sa03; |
reg [7:0] sa10, sa11, sa12, sa13; |
reg [7:0] sa20, sa21, sa22, sa23; |
reg [7:0] sa30, sa31, sa32, sa33; |
|
wire [7:0] sa00_next, sa01_next, sa02_next, sa03_next; |
wire [7:0] sa10_next, sa11_next, sa12_next, sa13_next; |
wire [7:0] sa20_next, sa21_next, sa22_next, sa23_next; |
wire [7:0] sa30_next, sa31_next, sa32_next, sa33_next; |
|
wire [7:0] sa00_sub, sa01_sub, sa02_sub, sa03_sub; |
wire [7:0] sa10_sub, sa11_sub, sa12_sub, sa13_sub; |
wire [7:0] sa20_sub, sa21_sub, sa22_sub, sa23_sub; |
wire [7:0] sa30_sub, sa31_sub, sa32_sub, sa33_sub; |
|
wire [7:0] sa00_sr, sa01_sr, sa02_sr, sa03_sr; |
wire [7:0] sa10_sr, sa11_sr, sa12_sr, sa13_sr; |
wire [7:0] sa20_sr, sa21_sr, sa22_sr, sa23_sr; |
wire [7:0] sa30_sr, sa31_sr, sa32_sr, sa33_sr; |
|
wire [7:0] sa00_mc, sa01_mc, sa02_mc, sa03_mc; |
wire [7:0] sa10_mc, sa11_mc, sa12_mc, sa13_mc; |
wire [7:0] sa20_mc, sa21_mc, sa22_mc, sa23_mc; |
wire [7:0] sa30_mc, sa31_mc, sa32_mc, sa33_mc; |
|
reg done, ld_r; |
reg [3:0] dcnt; |
|
//////////////////////////////////////////////////////////////////// |
// |
// Misc Logic |
// |
|
always @(posedge clk or posedge rst) |
|
begin |
if(rst) begin dcnt <= 4'h0; end |
else |
if(ld) begin dcnt <= 4'hb; end |
else |
if(|dcnt) begin dcnt <= dcnt - 4'h1; end |
|
end |
|
always @(posedge clk) done <= !(|dcnt[3:1]) & dcnt[0] & !ld; |
always @(posedge clk) if(ld) text_in_r <= text_in; |
always @(posedge clk) ld_r <= ld; |
|
|
//////////////////////////////////////////////////////////////////// |
// |
// Initial Permutation (AddRoundKey) |
// |
|
always @(posedge clk) sa33 <= ld_r ? text_in_r[007:000] ^ w3[07:00] : sa33_next; |
always @(posedge clk) sa23 <= ld_r ? text_in_r[015:008] ^ w3[15:08] : sa23_next; |
always @(posedge clk) sa13 <= ld_r ? text_in_r[023:016] ^ w3[23:16] : sa13_next; |
always @(posedge clk) sa03 <= ld_r ? text_in_r[031:024] ^ w3[31:24] : sa03_next; |
always @(posedge clk) sa32 <= ld_r ? text_in_r[039:032] ^ w2[07:00] : sa32_next; |
always @(posedge clk) sa22 <= ld_r ? text_in_r[047:040] ^ w2[15:08] : sa22_next; |
always @(posedge clk) sa12 <= ld_r ? text_in_r[055:048] ^ w2[23:16] : sa12_next; |
always @(posedge clk) sa02 <= ld_r ? text_in_r[063:056] ^ w2[31:24] : sa02_next; |
always @(posedge clk) sa31 <= ld_r ? text_in_r[071:064] ^ w1[07:00] : sa31_next; |
always @(posedge clk) sa21 <= ld_r ? text_in_r[079:072] ^ w1[15:08] : sa21_next; |
always @(posedge clk) sa11 <= ld_r ? text_in_r[087:080] ^ w1[23:16] : sa11_next; |
always @(posedge clk) sa01 <= ld_r ? text_in_r[095:088] ^ w1[31:24] : sa01_next; |
always @(posedge clk) sa30 <= ld_r ? text_in_r[103:096] ^ w0[07:00] : sa30_next; |
always @(posedge clk) sa20 <= ld_r ? text_in_r[111:104] ^ w0[15:08] : sa20_next; |
always @(posedge clk) sa10 <= ld_r ? text_in_r[119:112] ^ w0[23:16] : sa10_next; |
always @(posedge clk) sa00 <= ld_r ? text_in_r[127:120] ^ w0[31:24] : sa00_next; |
|
//////////////////////////////////////////////////////////////////// |
// |
// Modules instantiation |
// |
|
aes_key_expand_128 u0( |
.clk( clk ), |
.kld( ld ), |
.key( key ), |
.wo_0( w0 ), |
.wo_1( w1 ), |
.wo_2( w2 ), |
.wo_3( w3 ) |
); |
|
//sbox lookup |
aes_sbox us00( .a( sa00 ), .d( sa00_sub )); |
aes_sbox us01( .a( sa01 ), .d( sa01_sub )); |
aes_sbox us02( .a( sa02 ), .d( sa02_sub )); |
aes_sbox us03( .a( sa03 ), .d( sa03_sub )); |
aes_sbox us10( .a( sa10 ), .d( sa10_sub )); |
aes_sbox us11( .a( sa11 ), .d( sa11_sub )); |
aes_sbox us12( .a( sa12 ), .d( sa12_sub )); |
aes_sbox us13( .a( sa13 ), .d( sa13_sub )); |
aes_sbox us20( .a( sa20 ), .d( sa20_sub )); |
aes_sbox us21( .a( sa21 ), .d( sa21_sub )); |
aes_sbox us22( .a( sa22 ), .d( sa22_sub )); |
aes_sbox us23( .a( sa23 ), .d( sa23_sub )); |
aes_sbox us30( .a( sa30 ), .d( sa30_sub )); |
aes_sbox us31( .a( sa31 ), .d( sa31_sub )); |
aes_sbox us32( .a( sa32 ), .d( sa32_sub )); |
aes_sbox us33( .a( sa33 ), .d( sa33_sub )); |
|
//////////////////////////////////////////////////////////////////// |
// |
// Round Permutations |
// |
|
assign sa00_sr = sa00_sub; // |
assign sa01_sr = sa01_sub; //no shift |
assign sa02_sr = sa02_sub; // |
assign sa03_sr = sa03_sub; // |
|
assign sa10_sr = sa11_sub; // |
assign sa11_sr = sa12_sub; // left shift by 1 |
assign sa12_sr = sa13_sub; // |
assign sa13_sr = sa10_sub; // |
|
assign sa20_sr = sa22_sub; // |
assign sa21_sr = sa23_sub; // left shift by 2 |
assign sa22_sr = sa20_sub; // |
assign sa23_sr = sa21_sub; // |
|
assign sa30_sr = sa33_sub; // |
assign sa31_sr = sa30_sub; // left shift by 3 |
assign sa32_sr = sa31_sub; // |
assign sa33_sr = sa32_sub; // |
|
// mix column operation |
assign {sa00_mc, sa10_mc, sa20_mc, sa30_mc} = mix_col(sa00_sr,sa10_sr,sa20_sr,sa30_sr); |
assign {sa01_mc, sa11_mc, sa21_mc, sa31_mc} = mix_col(sa01_sr,sa11_sr,sa21_sr,sa31_sr); |
assign {sa02_mc, sa12_mc, sa22_mc, sa32_mc} = mix_col(sa02_sr,sa12_sr,sa22_sr,sa32_sr); |
assign {sa03_mc, sa13_mc, sa23_mc, sa33_mc} = mix_col(sa03_sr,sa13_sr,sa23_sr,sa33_sr); |
|
//// add round key |
assign sa00_next = sa00_mc ^ w0[31:24]; |
assign sa01_next = sa01_mc ^ w1[31:24]; |
assign sa02_next = sa02_mc ^ w2[31:24]; |
assign sa03_next = sa03_mc ^ w3[31:24]; |
assign sa10_next = sa10_mc ^ w0[23:16]; |
assign sa11_next = sa11_mc ^ w1[23:16]; |
assign sa12_next = sa12_mc ^ w2[23:16]; |
assign sa13_next = sa13_mc ^ w3[23:16]; |
assign sa20_next = sa20_mc ^ w0[15:08]; |
assign sa21_next = sa21_mc ^ w1[15:08]; |
assign sa22_next = sa22_mc ^ w2[15:08]; |
assign sa23_next = sa23_mc ^ w3[15:08]; |
assign sa30_next = sa30_mc ^ w0[07:00]; |
assign sa31_next = sa31_mc ^ w1[07:00]; |
assign sa32_next = sa32_mc ^ w2[07:00]; |
assign sa33_next = sa33_mc ^ w3[07:00]; |
|
always @(posedge clk) |
begin |
text_out[127:120] <= sa00_sr ^ w0[31:24]; |
text_out[095:088] <= sa01_sr ^ w1[31:24]; |
text_out[063:056] <= sa02_sr ^ w2[31:24]; |
text_out[031:024] <= sa03_sr ^ w3[31:24]; |
text_out[119:112] <= sa10_sr ^ w0[23:16]; |
text_out[087:080] <= sa11_sr ^ w1[23:16]; |
text_out[055:048] <= sa12_sr ^ w2[23:16]; |
text_out[023:016] <= sa13_sr ^ w3[23:16]; |
text_out[111:104] <= sa20_sr ^ w0[15:08]; |
text_out[079:072] <= sa21_sr ^ w1[15:08]; |
text_out[047:040] <= sa22_sr ^ w2[15:08]; |
text_out[015:008] <= sa23_sr ^ w3[15:08]; |
text_out[103:096] <= sa30_sr ^ w0[07:00]; |
text_out[071:064] <= sa31_sr ^ w1[07:00]; |
text_out[039:032] <= sa32_sr ^ w2[07:00]; |
text_out[007:000] <= sa33_sr ^ w3[07:00]; |
end |
//////////////////////////////////////////////////////////////////// |
// |
// Generic Functions |
// |
|
function [31:0] mix_col; |
input [7:0] s0,s1,s2,s3; |
|
begin |
mix_col[31:24]=xtime(s0)^xtime(s1)^s1^s2^s3; |
mix_col[23:16]=s0^xtime(s1)^xtime(s2)^s2^s3; |
mix_col[15:08]=s0^s1^xtime(s2)^xtime(s3)^s3; |
mix_col[07:00]=xtime(s0)^s0^s1^s2^xtime(s3); |
end |
endfunction |
|
function [7:0] xtime; |
input [7:0] b; xtime={b[6:0],1'b0}^(8'h1b&{8{b[7]}}); |
endfunction |
|
|
|
endmodule |
|
|
|
/trunk/rtl/aes_key_expand_128.v
0,0 → 1,112
///////////////////////////////////////////////////////////////////// |
//// //// |
//// AES Key Expand Block (for 128 bit keys) //// |
//// //// |
//// //// |
//// Author: Rudolf Usselmann //// |
//// rudi@asics.ws //// |
//// //// |
//// //// |
//// Downloaded from: http://www.opencores.org/cores/aes_core/ //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Copyright (C) 2000-2002 Rudolf Usselmann //// |
//// www.asics.ws //// |
//// rudi@asics.ws //// |
//// //// |
//// This source file may be used and distributed without //// |
//// restriction provided that this copyright statement is not //// |
//// removed from the file and that any derivative work contains //// |
//// the original copyright notice and the associated disclaimer.//// |
//// //// |
//// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY //// |
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //// |
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //// |
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR //// |
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //// |
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES //// |
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE //// |
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR //// |
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF //// |
//// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT //// |
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT //// |
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //// |
//// POSSIBILITY OF SUCH DAMAGE. //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
|
// CVS Log |
// |
// $Id: aes_key_expand_128.v,v 1.1.1.1 2002-11-09 11:22:38 rudi Exp $ |
// |
// $Date: 2002-11-09 11:22:38 $ |
// $Revision: 1.1.1.1 $ |
// $Author: rudi $ |
// $Locker: $ |
// $State: Exp $ |
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// |
// |
// |
// |
// |
`timescale 1 ns/1 ps |
|
module aes_key_expand_128(clk, kld, key, wo_0, wo_1, wo_2, wo_3); |
|
|
input clk; |
input kld; |
input [127:0] key; |
|
output [31:0] wo_0, wo_1, wo_2, wo_3; //output |
|
|
reg [31:0] w[7:0]; |
wire [31:0] tmp_w; |
wire [31:0] subword; |
wire [31:0] rcon; //round constant |
|
assign wo_0 = w[0]; |
assign wo_1 = w[1]; |
assign wo_2 = w[2]; |
assign wo_3 = w[3]; |
|
assign w1_0 = w[4]; |
assign w1_1 = w[5]; |
assign w1_2 = w[6]; |
assign w1_3 = w[7]; |
|
|
|
always @(posedge clk) |
begin |
w[0] <= kld ? key[127:096] : w[0]^subword^{rcon[31:24],24'b0}; |
w[1] <= kld ? key[095:064] : w[0]^w[1]^subword^{rcon[31:24],24'b0}; |
w[2] <= kld ? key[063:032] : w[0]^w[2]^w[1]^subword^{rcon[31:24],24'b0}; |
w[3] <= kld ? key[031:000] : w[0]^w[3]^w[2]^w[1]^subword^{rcon[31:24],24'b0}; |
end |
|
|
|
assign tmp_w = w[3]; |
|
/* |
assign subword[31:24] = aes_sbox(tmp_w[23:16]); |
assign subword[23:16] = aes_sbox(tmp_w[15:08]); |
assign subword[15:08] = aes_sbox(tmp_w[07:00]); |
assign subword[07:00] = aes_sbox(tmp_w[31:24]); |
*/ |
|
aes_sbox u0( .a(tmp_w[23:16]), .d(subword[31:24])); |
aes_sbox u1( .a(tmp_w[15:08]), .d(subword[23:16])); |
aes_sbox u2( .a(tmp_w[07:00]), .d(subword[15:08])); |
aes_sbox u3( .a(tmp_w[31:24]), .d(subword[07:00])); |
aes_rcon r0( .clk(clk), .kld(kld), .out(rcon[31:24])); |
|
|
endmodule |
|
/trunk/rtl/aes_rcon.v
0,0 → 1,137
///////////////////////////////////////////////////////////////////// |
//// //// |
//// AES RCON Block //// |
//// //// |
//// //// |
//// Author: Rudolf Usselmann //// |
//// rudi@asics.ws //// |
//// //// |
//// //// |
//// Downloaded from: http://www.opencores.org/cores/aes_core/ //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Copyright (C) 2000-2002 Rudolf Usselmann //// |
//// www.asics.ws //// |
//// rudi@asics.ws //// |
//// //// |
//// This source file may be used and distributed without //// |
//// restriction provided that this copyright statement is not //// |
//// removed from the file and that any derivative work contains //// |
//// the original copyright notice and the associated disclaimer.//// |
//// //// |
//// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY //// |
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //// |
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //// |
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR //// |
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //// |
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES //// |
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE //// |
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR //// |
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF //// |
//// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT //// |
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT //// |
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //// |
//// POSSIBILITY OF SUCH DAMAGE. //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
|
// CVS Log |
// |
// $Id: aes_rcon.v,v 1.1.1.1 2002-11-09 11:22:38 rudi Exp $ |
// |
// $Date: 2002-11-09 11:22:38 $ |
// $Revision: 1.1.1.1 $ |
// $Author: rudi $ |
// $Locker: $ |
// $State: Exp $ |
// |
// Change History: |
// $Log: not supported by cvs2svn $ |
// |
// |
// |
// |
// |
|
/*module aes_rcon(clk, kld, out); |
input clk; |
input kld; |
output [31:0] out; |
reg [31:0] out; |
reg [3:0] rcnt; |
wire [3:0] rcnt_next; |
|
always @(posedge clk) |
if(kld) out <= 32'h01_00_00_00; |
else out <= frcon(rcnt_next); |
|
assign rcnt_next = rcnt + 4'h1; |
always @(posedge clk) |
if(kld) rcnt <= 4'h0; |
else rcnt <= rcnt_next; |
|
function [31:0] frcon; |
input [3:0] i; |
case(i) // synopsys parallel_case |
4'h0: frcon=32'h01_00_00_00; //1 |
4'h1: frcon=32'h02_00_00_00; //x |
4'h2: frcon=32'h04_00_00_00; //x^2 |
4'h3: frcon=32'h08_00_00_00; //x^3 |
4'h4: frcon=32'h10_00_00_00; //x^4 |
4'h5: frcon=32'h20_00_00_00; //x^5 |
4'h6: frcon=32'h40_00_00_00; //x^6 |
4'h7: frcon=32'h80_00_00_00; //x^7 |
4'h8: frcon=32'h1b_00_00_00; //x^8 |
4'h9: frcon=32'h36_00_00_00; //x^9 |
default: frcon=32'h00_00_00_00; |
endcase |
endfunction |
|
endmodule |
*/ |
|
`timescale 1 ns/1 ps |
|
module aes_rcon(clk, kld, out); |
input clk; |
input kld; |
output [7:0] out; |
reg [7:0] out; |
reg [3:0] rcnt; |
wire [3:0] rcnt_next; |
|
always @(posedge clk) |
begin |
if(kld) out <= 8'h01; |
else out <= frcon(rcnt_next); |
// $display($time,"out is %h",out); |
end |
|
assign rcnt_next = rcnt + 4'h1; |
|
always @(posedge clk) |
begin |
if(kld) rcnt <= 4'h0; |
else rcnt <= rcnt_next; |
// $display($time,"rcnt is %h",rcnt); |
end |
|
function [7:0] frcon; |
input [3:0] i; |
case(i) // synopsys parallel_case |
4'h0: frcon=8'h01; //1 |
4'h1: frcon=8'h02; //x |
4'h2: frcon=8'h04; //x^2 |
4'h3: frcon=8'h08; //x^3 |
4'h4: frcon=8'h10; //x^4 |
4'h5: frcon=8'h20; //x^5 |
4'h6: frcon=8'h40; //x^6 |
4'h7: frcon=8'h80; //x^7 |
4'h8: frcon=8'h1b; //x^8 |
4'h9: frcon=8'h36; //x^9 |
default: frcon=8'h00; |
endcase |
endfunction |
|
endmodule |
/trunk/rtl/gfm128_16.v
0,0 → 1,306
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Galois Field Multiplier //// |
//// Computes Multiplication in 8 clk cycles //// |
//// //// |
//// Author: Guy Hutchison //// |
//// ghutchis@gmail.com //// |
//// //// |
//// Downloaded from: http://www.opencores.org/ //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Copyright (C) 2010 Guy Hutchison //// |
//// //// |
//// //// |
//// //// |
//// This source file may be used and distributed without //// |
//// restriction provided that this copyright statement is not //// |
//// removed from the file and that any derivative work contains //// |
//// the original copyright notice and the associated disclaimer.//// |
//// //// |
//// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY //// |
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //// |
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //// |
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR //// |
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //// |
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES //// |
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE //// |
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR //// |
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF //// |
//// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT //// |
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT //// |
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //// |
//// POSSIBILITY OF SUCH DAMAGE. //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
|
|
|
|
|
`timescale 1ns / 1ps |
|
module gfm128_16(v_in,z_in,b_in,v_out,z_out); |
input [127:0] v_in; |
input [127:0] z_in; |
input [15:0] b_in; |
output [127:0] v_out; |
output [127:0] z_out; |
assign v_out[0] = v_in[16]; |
assign z_out[0] = ((((z_in[0]) ^ ((v_in[0]) & (b_in[15]))) ^ (((v_in[1]) & (b_in[14])) ^ ((v_in[2]) & (b_in[13])))) ^ ((((v_in[4]) & (b_in[11])) ^ ((v_in[3]) & (b_in[12]))) ^ (((v_in[5]) & (b_in[10])) ^ ((v_in[6]) & (b_in[9]))))) ^ ((((((v_in[10]) & (b_in[5])) ^ ((v_in[9]) & (b_in[6]))) ^ ((v_in[11]) & (b_in[4]))) ^ (((v_in[8]) & (b_in[7])) ^ ((v_in[7]) & (b_in[8])))) ^ ((((v_in[13]) & (b_in[2])) ^ ((v_in[12]) & (b_in[3]))) ^ (((v_in[14]) & (b_in[1])) ^ ((v_in[15]) & (b_in[0]))))); |
assign v_out[1] = v_in[17]; |
assign z_out[1] = ((((z_in[1]) ^ ((v_in[1]) & (b_in[15]))) ^ (((v_in[2]) & (b_in[14])) ^ ((v_in[3]) & (b_in[13])))) ^ ((((v_in[5]) & (b_in[11])) ^ ((v_in[4]) & (b_in[12]))) ^ (((v_in[6]) & (b_in[10])) ^ ((v_in[7]) & (b_in[9]))))) ^ ((((((v_in[11]) & (b_in[5])) ^ ((v_in[10]) & (b_in[6]))) ^ ((v_in[12]) & (b_in[4]))) ^ (((v_in[9]) & (b_in[7])) ^ ((v_in[8]) & (b_in[8])))) ^ ((((v_in[14]) & (b_in[2])) ^ ((v_in[13]) & (b_in[3]))) ^ (((v_in[15]) & (b_in[1])) ^ ((v_in[16]) & (b_in[0]))))); |
assign v_out[2] = v_in[18]; |
assign z_out[2] = ((((z_in[2]) ^ ((v_in[2]) & (b_in[15]))) ^ (((v_in[3]) & (b_in[14])) ^ ((v_in[4]) & (b_in[13])))) ^ ((((v_in[6]) & (b_in[11])) ^ ((v_in[5]) & (b_in[12]))) ^ (((v_in[7]) & (b_in[10])) ^ ((v_in[8]) & (b_in[9]))))) ^ ((((((v_in[12]) & (b_in[5])) ^ ((v_in[11]) & (b_in[6]))) ^ ((v_in[13]) & (b_in[4]))) ^ (((v_in[10]) & (b_in[7])) ^ ((v_in[9]) & (b_in[8])))) ^ ((((v_in[15]) & (b_in[2])) ^ ((v_in[14]) & (b_in[3]))) ^ (((v_in[16]) & (b_in[1])) ^ ((v_in[17]) & (b_in[0]))))); |
assign v_out[3] = v_in[19]; |
assign z_out[3] = ((((z_in[3]) ^ ((v_in[3]) & (b_in[15]))) ^ (((v_in[4]) & (b_in[14])) ^ ((v_in[5]) & (b_in[13])))) ^ ((((v_in[7]) & (b_in[11])) ^ ((v_in[6]) & (b_in[12]))) ^ (((v_in[8]) & (b_in[10])) ^ ((v_in[9]) & (b_in[9]))))) ^ ((((((v_in[13]) & (b_in[5])) ^ ((v_in[12]) & (b_in[6]))) ^ ((v_in[14]) & (b_in[4]))) ^ (((v_in[11]) & (b_in[7])) ^ ((v_in[10]) & (b_in[8])))) ^ ((((v_in[16]) & (b_in[2])) ^ ((v_in[15]) & (b_in[3]))) ^ (((v_in[17]) & (b_in[1])) ^ ((v_in[18]) & (b_in[0]))))); |
assign v_out[4] = v_in[20]; |
assign z_out[4] = ((((z_in[4]) ^ ((v_in[4]) & (b_in[15]))) ^ (((v_in[5]) & (b_in[14])) ^ ((v_in[6]) & (b_in[13])))) ^ ((((v_in[8]) & (b_in[11])) ^ ((v_in[7]) & (b_in[12]))) ^ (((v_in[9]) & (b_in[10])) ^ ((v_in[10]) & (b_in[9]))))) ^ ((((((v_in[14]) & (b_in[5])) ^ ((v_in[13]) & (b_in[6]))) ^ ((v_in[15]) & (b_in[4]))) ^ (((v_in[12]) & (b_in[7])) ^ ((v_in[11]) & (b_in[8])))) ^ ((((v_in[17]) & (b_in[2])) ^ ((v_in[16]) & (b_in[3]))) ^ (((v_in[18]) & (b_in[1])) ^ ((v_in[19]) & (b_in[0]))))); |
assign v_out[5] = v_in[21]; |
assign z_out[5] = ((((z_in[5]) ^ ((v_in[5]) & (b_in[15]))) ^ (((v_in[6]) & (b_in[14])) ^ ((v_in[7]) & (b_in[13])))) ^ ((((v_in[9]) & (b_in[11])) ^ ((v_in[8]) & (b_in[12]))) ^ (((v_in[10]) & (b_in[10])) ^ ((v_in[11]) & (b_in[9]))))) ^ ((((((v_in[15]) & (b_in[5])) ^ ((v_in[14]) & (b_in[6]))) ^ ((v_in[16]) & (b_in[4]))) ^ (((v_in[13]) & (b_in[7])) ^ ((v_in[12]) & (b_in[8])))) ^ ((((v_in[18]) & (b_in[2])) ^ ((v_in[17]) & (b_in[3]))) ^ (((v_in[19]) & (b_in[1])) ^ ((v_in[20]) & (b_in[0]))))); |
assign v_out[6] = v_in[22]; |
assign z_out[6] = ((((z_in[6]) ^ ((v_in[6]) & (b_in[15]))) ^ (((v_in[7]) & (b_in[14])) ^ ((v_in[8]) & (b_in[13])))) ^ ((((v_in[10]) & (b_in[11])) ^ ((v_in[9]) & (b_in[12]))) ^ (((v_in[11]) & (b_in[10])) ^ ((v_in[12]) & (b_in[9]))))) ^ ((((((v_in[16]) & (b_in[5])) ^ ((v_in[15]) & (b_in[6]))) ^ ((v_in[17]) & (b_in[4]))) ^ (((v_in[14]) & (b_in[7])) ^ ((v_in[13]) & (b_in[8])))) ^ ((((v_in[19]) & (b_in[2])) ^ ((v_in[18]) & (b_in[3]))) ^ (((v_in[20]) & (b_in[1])) ^ ((v_in[21]) & (b_in[0]))))); |
assign v_out[7] = v_in[23]; |
assign z_out[7] = ((((z_in[7]) ^ ((v_in[7]) & (b_in[15]))) ^ (((v_in[8]) & (b_in[14])) ^ ((v_in[9]) & (b_in[13])))) ^ ((((v_in[11]) & (b_in[11])) ^ ((v_in[10]) & (b_in[12]))) ^ (((v_in[12]) & (b_in[10])) ^ ((v_in[13]) & (b_in[9]))))) ^ ((((((v_in[17]) & (b_in[5])) ^ ((v_in[16]) & (b_in[6]))) ^ ((v_in[18]) & (b_in[4]))) ^ (((v_in[15]) & (b_in[7])) ^ ((v_in[14]) & (b_in[8])))) ^ ((((v_in[20]) & (b_in[2])) ^ ((v_in[19]) & (b_in[3]))) ^ (((v_in[21]) & (b_in[1])) ^ ((v_in[22]) & (b_in[0]))))); |
assign v_out[8] = v_in[24]; |
assign z_out[8] = ((((z_in[8]) ^ ((v_in[8]) & (b_in[15]))) ^ (((v_in[9]) & (b_in[14])) ^ ((v_in[10]) & (b_in[13])))) ^ ((((v_in[12]) & (b_in[11])) ^ ((v_in[11]) & (b_in[12]))) ^ (((v_in[13]) & (b_in[10])) ^ ((v_in[14]) & (b_in[9]))))) ^ ((((((v_in[18]) & (b_in[5])) ^ ((v_in[17]) & (b_in[6]))) ^ ((v_in[19]) & (b_in[4]))) ^ (((v_in[16]) & (b_in[7])) ^ ((v_in[15]) & (b_in[8])))) ^ ((((v_in[21]) & (b_in[2])) ^ ((v_in[20]) & (b_in[3]))) ^ (((v_in[22]) & (b_in[1])) ^ ((v_in[23]) & (b_in[0]))))); |
assign v_out[9] = v_in[25]; |
assign z_out[9] = ((((z_in[9]) ^ ((v_in[9]) & (b_in[15]))) ^ (((v_in[10]) & (b_in[14])) ^ ((v_in[11]) & (b_in[13])))) ^ ((((v_in[13]) & (b_in[11])) ^ ((v_in[12]) & (b_in[12]))) ^ (((v_in[14]) & (b_in[10])) ^ ((v_in[15]) & (b_in[9]))))) ^ ((((((v_in[19]) & (b_in[5])) ^ ((v_in[18]) & (b_in[6]))) ^ ((v_in[20]) & (b_in[4]))) ^ (((v_in[17]) & (b_in[7])) ^ ((v_in[16]) & (b_in[8])))) ^ ((((v_in[22]) & (b_in[2])) ^ ((v_in[21]) & (b_in[3]))) ^ (((v_in[23]) & (b_in[1])) ^ ((v_in[24]) & (b_in[0]))))); |
assign v_out[10] = v_in[26]; |
assign z_out[10] = ((((z_in[10]) ^ ((v_in[10]) & (b_in[15]))) ^ (((v_in[11]) & (b_in[14])) ^ ((v_in[12]) & (b_in[13])))) ^ ((((v_in[14]) & (b_in[11])) ^ ((v_in[13]) & (b_in[12]))) ^ (((v_in[15]) & (b_in[10])) ^ ((v_in[16]) & (b_in[9]))))) ^ ((((((v_in[20]) & (b_in[5])) ^ ((v_in[19]) & (b_in[6]))) ^ ((v_in[21]) & (b_in[4]))) ^ (((v_in[18]) & (b_in[7])) ^ ((v_in[17]) & (b_in[8])))) ^ ((((v_in[23]) & (b_in[2])) ^ ((v_in[22]) & (b_in[3]))) ^ (((v_in[24]) & (b_in[1])) ^ ((v_in[25]) & (b_in[0]))))); |
assign v_out[11] = v_in[27]; |
assign z_out[11] = ((((z_in[11]) ^ ((v_in[11]) & (b_in[15]))) ^ (((v_in[12]) & (b_in[14])) ^ ((v_in[13]) & (b_in[13])))) ^ ((((v_in[15]) & (b_in[11])) ^ ((v_in[14]) & (b_in[12]))) ^ (((v_in[16]) & (b_in[10])) ^ ((v_in[17]) & (b_in[9]))))) ^ ((((((v_in[21]) & (b_in[5])) ^ ((v_in[20]) & (b_in[6]))) ^ ((v_in[22]) & (b_in[4]))) ^ (((v_in[19]) & (b_in[7])) ^ ((v_in[18]) & (b_in[8])))) ^ ((((v_in[24]) & (b_in[2])) ^ ((v_in[23]) & (b_in[3]))) ^ (((v_in[25]) & (b_in[1])) ^ ((v_in[26]) & (b_in[0]))))); |
assign v_out[12] = v_in[28]; |
assign z_out[12] = ((((z_in[12]) ^ ((v_in[12]) & (b_in[15]))) ^ (((v_in[13]) & (b_in[14])) ^ ((v_in[14]) & (b_in[13])))) ^ ((((v_in[16]) & (b_in[11])) ^ ((v_in[15]) & (b_in[12]))) ^ (((v_in[17]) & (b_in[10])) ^ ((v_in[18]) & (b_in[9]))))) ^ ((((((v_in[22]) & (b_in[5])) ^ ((v_in[21]) & (b_in[6]))) ^ ((v_in[23]) & (b_in[4]))) ^ (((v_in[20]) & (b_in[7])) ^ ((v_in[19]) & (b_in[8])))) ^ ((((v_in[25]) & (b_in[2])) ^ ((v_in[24]) & (b_in[3]))) ^ (((v_in[26]) & (b_in[1])) ^ ((v_in[27]) & (b_in[0]))))); |
assign v_out[13] = v_in[29]; |
assign z_out[13] = ((((z_in[13]) ^ ((v_in[13]) & (b_in[15]))) ^ (((v_in[14]) & (b_in[14])) ^ ((v_in[15]) & (b_in[13])))) ^ ((((v_in[17]) & (b_in[11])) ^ ((v_in[16]) & (b_in[12]))) ^ (((v_in[18]) & (b_in[10])) ^ ((v_in[19]) & (b_in[9]))))) ^ ((((((v_in[23]) & (b_in[5])) ^ ((v_in[22]) & (b_in[6]))) ^ ((v_in[24]) & (b_in[4]))) ^ (((v_in[21]) & (b_in[7])) ^ ((v_in[20]) & (b_in[8])))) ^ ((((v_in[26]) & (b_in[2])) ^ ((v_in[25]) & (b_in[3]))) ^ (((v_in[27]) & (b_in[1])) ^ ((v_in[28]) & (b_in[0]))))); |
assign v_out[14] = v_in[30]; |
assign z_out[14] = ((((z_in[14]) ^ ((v_in[14]) & (b_in[15]))) ^ (((v_in[15]) & (b_in[14])) ^ ((v_in[16]) & (b_in[13])))) ^ ((((v_in[18]) & (b_in[11])) ^ ((v_in[17]) & (b_in[12]))) ^ (((v_in[19]) & (b_in[10])) ^ ((v_in[20]) & (b_in[9]))))) ^ ((((((v_in[24]) & (b_in[5])) ^ ((v_in[23]) & (b_in[6]))) ^ ((v_in[25]) & (b_in[4]))) ^ (((v_in[22]) & (b_in[7])) ^ ((v_in[21]) & (b_in[8])))) ^ ((((v_in[27]) & (b_in[2])) ^ ((v_in[26]) & (b_in[3]))) ^ (((v_in[28]) & (b_in[1])) ^ ((v_in[29]) & (b_in[0]))))); |
assign v_out[15] = v_in[31]; |
assign z_out[15] = ((((z_in[15]) ^ ((v_in[15]) & (b_in[15]))) ^ (((v_in[16]) & (b_in[14])) ^ ((v_in[17]) & (b_in[13])))) ^ ((((v_in[19]) & (b_in[11])) ^ ((v_in[18]) & (b_in[12]))) ^ (((v_in[20]) & (b_in[10])) ^ ((v_in[21]) & (b_in[9]))))) ^ ((((((v_in[25]) & (b_in[5])) ^ ((v_in[24]) & (b_in[6]))) ^ ((v_in[26]) & (b_in[4]))) ^ (((v_in[23]) & (b_in[7])) ^ ((v_in[22]) & (b_in[8])))) ^ ((((v_in[28]) & (b_in[2])) ^ ((v_in[27]) & (b_in[3]))) ^ (((v_in[29]) & (b_in[1])) ^ ((v_in[30]) & (b_in[0]))))); |
assign v_out[16] = v_in[32]; |
assign z_out[16] = ((((z_in[16]) ^ ((v_in[16]) & (b_in[15]))) ^ (((v_in[17]) & (b_in[14])) ^ ((v_in[18]) & (b_in[13])))) ^ ((((v_in[20]) & (b_in[11])) ^ ((v_in[19]) & (b_in[12]))) ^ (((v_in[21]) & (b_in[10])) ^ ((v_in[22]) & (b_in[9]))))) ^ ((((((v_in[26]) & (b_in[5])) ^ ((v_in[25]) & (b_in[6]))) ^ ((v_in[27]) & (b_in[4]))) ^ (((v_in[24]) & (b_in[7])) ^ ((v_in[23]) & (b_in[8])))) ^ ((((v_in[29]) & (b_in[2])) ^ ((v_in[28]) & (b_in[3]))) ^ (((v_in[30]) & (b_in[1])) ^ ((v_in[31]) & (b_in[0]))))); |
assign v_out[17] = v_in[33]; |
assign z_out[17] = ((((z_in[17]) ^ ((v_in[17]) & (b_in[15]))) ^ (((v_in[18]) & (b_in[14])) ^ ((v_in[19]) & (b_in[13])))) ^ ((((v_in[21]) & (b_in[11])) ^ ((v_in[20]) & (b_in[12]))) ^ (((v_in[22]) & (b_in[10])) ^ ((v_in[23]) & (b_in[9]))))) ^ ((((((v_in[27]) & (b_in[5])) ^ ((v_in[26]) & (b_in[6]))) ^ ((v_in[28]) & (b_in[4]))) ^ (((v_in[25]) & (b_in[7])) ^ ((v_in[24]) & (b_in[8])))) ^ ((((v_in[30]) & (b_in[2])) ^ ((v_in[29]) & (b_in[3]))) ^ (((v_in[31]) & (b_in[1])) ^ ((v_in[32]) & (b_in[0]))))); |
assign v_out[18] = v_in[34]; |
assign z_out[18] = ((((z_in[18]) ^ ((v_in[18]) & (b_in[15]))) ^ (((v_in[19]) & (b_in[14])) ^ ((v_in[20]) & (b_in[13])))) ^ ((((v_in[22]) & (b_in[11])) ^ ((v_in[21]) & (b_in[12]))) ^ (((v_in[23]) & (b_in[10])) ^ ((v_in[24]) & (b_in[9]))))) ^ ((((((v_in[28]) & (b_in[5])) ^ ((v_in[27]) & (b_in[6]))) ^ ((v_in[29]) & (b_in[4]))) ^ (((v_in[26]) & (b_in[7])) ^ ((v_in[25]) & (b_in[8])))) ^ ((((v_in[31]) & (b_in[2])) ^ ((v_in[30]) & (b_in[3]))) ^ (((v_in[32]) & (b_in[1])) ^ ((v_in[33]) & (b_in[0]))))); |
assign v_out[19] = v_in[35]; |
assign z_out[19] = ((((z_in[19]) ^ ((v_in[19]) & (b_in[15]))) ^ (((v_in[20]) & (b_in[14])) ^ ((v_in[21]) & (b_in[13])))) ^ ((((v_in[23]) & (b_in[11])) ^ ((v_in[22]) & (b_in[12]))) ^ (((v_in[24]) & (b_in[10])) ^ ((v_in[25]) & (b_in[9]))))) ^ ((((((v_in[29]) & (b_in[5])) ^ ((v_in[28]) & (b_in[6]))) ^ ((v_in[30]) & (b_in[4]))) ^ (((v_in[27]) & (b_in[7])) ^ ((v_in[26]) & (b_in[8])))) ^ ((((v_in[32]) & (b_in[2])) ^ ((v_in[31]) & (b_in[3]))) ^ (((v_in[33]) & (b_in[1])) ^ ((v_in[34]) & (b_in[0]))))); |
assign v_out[20] = v_in[36]; |
assign z_out[20] = ((((z_in[20]) ^ ((v_in[20]) & (b_in[15]))) ^ (((v_in[21]) & (b_in[14])) ^ ((v_in[22]) & (b_in[13])))) ^ ((((v_in[24]) & (b_in[11])) ^ ((v_in[23]) & (b_in[12]))) ^ (((v_in[25]) & (b_in[10])) ^ ((v_in[26]) & (b_in[9]))))) ^ ((((((v_in[30]) & (b_in[5])) ^ ((v_in[29]) & (b_in[6]))) ^ ((v_in[31]) & (b_in[4]))) ^ (((v_in[28]) & (b_in[7])) ^ ((v_in[27]) & (b_in[8])))) ^ ((((v_in[33]) & (b_in[2])) ^ ((v_in[32]) & (b_in[3]))) ^ (((v_in[34]) & (b_in[1])) ^ ((v_in[35]) & (b_in[0]))))); |
assign v_out[21] = v_in[37]; |
assign z_out[21] = ((((z_in[21]) ^ ((v_in[21]) & (b_in[15]))) ^ (((v_in[22]) & (b_in[14])) ^ ((v_in[23]) & (b_in[13])))) ^ ((((v_in[25]) & (b_in[11])) ^ ((v_in[24]) & (b_in[12]))) ^ (((v_in[26]) & (b_in[10])) ^ ((v_in[27]) & (b_in[9]))))) ^ ((((((v_in[31]) & (b_in[5])) ^ ((v_in[30]) & (b_in[6]))) ^ ((v_in[32]) & (b_in[4]))) ^ (((v_in[29]) & (b_in[7])) ^ ((v_in[28]) & (b_in[8])))) ^ ((((v_in[34]) & (b_in[2])) ^ ((v_in[33]) & (b_in[3]))) ^ (((v_in[35]) & (b_in[1])) ^ ((v_in[36]) & (b_in[0]))))); |
assign v_out[22] = v_in[38]; |
assign z_out[22] = ((((z_in[22]) ^ ((v_in[22]) & (b_in[15]))) ^ (((v_in[23]) & (b_in[14])) ^ ((v_in[24]) & (b_in[13])))) ^ ((((v_in[26]) & (b_in[11])) ^ ((v_in[25]) & (b_in[12]))) ^ (((v_in[27]) & (b_in[10])) ^ ((v_in[28]) & (b_in[9]))))) ^ ((((((v_in[32]) & (b_in[5])) ^ ((v_in[31]) & (b_in[6]))) ^ ((v_in[33]) & (b_in[4]))) ^ (((v_in[30]) & (b_in[7])) ^ ((v_in[29]) & (b_in[8])))) ^ ((((v_in[35]) & (b_in[2])) ^ ((v_in[34]) & (b_in[3]))) ^ (((v_in[36]) & (b_in[1])) ^ ((v_in[37]) & (b_in[0]))))); |
assign v_out[23] = v_in[39]; |
assign z_out[23] = ((((z_in[23]) ^ ((v_in[23]) & (b_in[15]))) ^ (((v_in[24]) & (b_in[14])) ^ ((v_in[25]) & (b_in[13])))) ^ ((((v_in[27]) & (b_in[11])) ^ ((v_in[26]) & (b_in[12]))) ^ (((v_in[28]) & (b_in[10])) ^ ((v_in[29]) & (b_in[9]))))) ^ ((((((v_in[33]) & (b_in[5])) ^ ((v_in[32]) & (b_in[6]))) ^ ((v_in[34]) & (b_in[4]))) ^ (((v_in[31]) & (b_in[7])) ^ ((v_in[30]) & (b_in[8])))) ^ ((((v_in[36]) & (b_in[2])) ^ ((v_in[35]) & (b_in[3]))) ^ (((v_in[37]) & (b_in[1])) ^ ((v_in[38]) & (b_in[0]))))); |
assign v_out[24] = v_in[40]; |
assign z_out[24] = ((((z_in[24]) ^ ((v_in[24]) & (b_in[15]))) ^ (((v_in[25]) & (b_in[14])) ^ ((v_in[26]) & (b_in[13])))) ^ ((((v_in[28]) & (b_in[11])) ^ ((v_in[27]) & (b_in[12]))) ^ (((v_in[29]) & (b_in[10])) ^ ((v_in[30]) & (b_in[9]))))) ^ ((((((v_in[34]) & (b_in[5])) ^ ((v_in[33]) & (b_in[6]))) ^ ((v_in[35]) & (b_in[4]))) ^ (((v_in[32]) & (b_in[7])) ^ ((v_in[31]) & (b_in[8])))) ^ ((((v_in[37]) & (b_in[2])) ^ ((v_in[36]) & (b_in[3]))) ^ (((v_in[38]) & (b_in[1])) ^ ((v_in[39]) & (b_in[0]))))); |
assign v_out[25] = v_in[41]; |
assign z_out[25] = ((((z_in[25]) ^ ((v_in[25]) & (b_in[15]))) ^ (((v_in[26]) & (b_in[14])) ^ ((v_in[27]) & (b_in[13])))) ^ ((((v_in[29]) & (b_in[11])) ^ ((v_in[28]) & (b_in[12]))) ^ (((v_in[30]) & (b_in[10])) ^ ((v_in[31]) & (b_in[9]))))) ^ ((((((v_in[35]) & (b_in[5])) ^ ((v_in[34]) & (b_in[6]))) ^ ((v_in[36]) & (b_in[4]))) ^ (((v_in[33]) & (b_in[7])) ^ ((v_in[32]) & (b_in[8])))) ^ ((((v_in[38]) & (b_in[2])) ^ ((v_in[37]) & (b_in[3]))) ^ (((v_in[39]) & (b_in[1])) ^ ((v_in[40]) & (b_in[0]))))); |
assign v_out[26] = v_in[42]; |
assign z_out[26] = ((((z_in[26]) ^ ((v_in[26]) & (b_in[15]))) ^ (((v_in[27]) & (b_in[14])) ^ ((v_in[28]) & (b_in[13])))) ^ ((((v_in[30]) & (b_in[11])) ^ ((v_in[29]) & (b_in[12]))) ^ (((v_in[31]) & (b_in[10])) ^ ((v_in[32]) & (b_in[9]))))) ^ ((((((v_in[36]) & (b_in[5])) ^ ((v_in[35]) & (b_in[6]))) ^ ((v_in[37]) & (b_in[4]))) ^ (((v_in[34]) & (b_in[7])) ^ ((v_in[33]) & (b_in[8])))) ^ ((((v_in[39]) & (b_in[2])) ^ ((v_in[38]) & (b_in[3]))) ^ (((v_in[40]) & (b_in[1])) ^ ((v_in[41]) & (b_in[0]))))); |
assign v_out[27] = v_in[43]; |
assign z_out[27] = ((((z_in[27]) ^ ((v_in[27]) & (b_in[15]))) ^ (((v_in[28]) & (b_in[14])) ^ ((v_in[29]) & (b_in[13])))) ^ ((((v_in[31]) & (b_in[11])) ^ ((v_in[30]) & (b_in[12]))) ^ (((v_in[32]) & (b_in[10])) ^ ((v_in[33]) & (b_in[9]))))) ^ ((((((v_in[37]) & (b_in[5])) ^ ((v_in[36]) & (b_in[6]))) ^ ((v_in[38]) & (b_in[4]))) ^ (((v_in[35]) & (b_in[7])) ^ ((v_in[34]) & (b_in[8])))) ^ ((((v_in[40]) & (b_in[2])) ^ ((v_in[39]) & (b_in[3]))) ^ (((v_in[41]) & (b_in[1])) ^ ((v_in[42]) & (b_in[0]))))); |
assign v_out[28] = v_in[44]; |
assign z_out[28] = ((((z_in[28]) ^ ((v_in[28]) & (b_in[15]))) ^ (((v_in[29]) & (b_in[14])) ^ ((v_in[30]) & (b_in[13])))) ^ ((((v_in[32]) & (b_in[11])) ^ ((v_in[31]) & (b_in[12]))) ^ (((v_in[33]) & (b_in[10])) ^ ((v_in[34]) & (b_in[9]))))) ^ ((((((v_in[38]) & (b_in[5])) ^ ((v_in[37]) & (b_in[6]))) ^ ((v_in[39]) & (b_in[4]))) ^ (((v_in[36]) & (b_in[7])) ^ ((v_in[35]) & (b_in[8])))) ^ ((((v_in[41]) & (b_in[2])) ^ ((v_in[40]) & (b_in[3]))) ^ (((v_in[42]) & (b_in[1])) ^ ((v_in[43]) & (b_in[0]))))); |
assign v_out[29] = v_in[45]; |
assign z_out[29] = ((((z_in[29]) ^ ((v_in[29]) & (b_in[15]))) ^ (((v_in[30]) & (b_in[14])) ^ ((v_in[31]) & (b_in[13])))) ^ ((((v_in[33]) & (b_in[11])) ^ ((v_in[32]) & (b_in[12]))) ^ (((v_in[34]) & (b_in[10])) ^ ((v_in[35]) & (b_in[9]))))) ^ ((((((v_in[39]) & (b_in[5])) ^ ((v_in[38]) & (b_in[6]))) ^ ((v_in[40]) & (b_in[4]))) ^ (((v_in[37]) & (b_in[7])) ^ ((v_in[36]) & (b_in[8])))) ^ ((((v_in[42]) & (b_in[2])) ^ ((v_in[41]) & (b_in[3]))) ^ (((v_in[43]) & (b_in[1])) ^ ((v_in[44]) & (b_in[0]))))); |
assign v_out[30] = v_in[46]; |
assign z_out[30] = ((((z_in[30]) ^ ((v_in[30]) & (b_in[15]))) ^ (((v_in[31]) & (b_in[14])) ^ ((v_in[32]) & (b_in[13])))) ^ ((((v_in[34]) & (b_in[11])) ^ ((v_in[33]) & (b_in[12]))) ^ (((v_in[35]) & (b_in[10])) ^ ((v_in[36]) & (b_in[9]))))) ^ ((((((v_in[40]) & (b_in[5])) ^ ((v_in[39]) & (b_in[6]))) ^ ((v_in[41]) & (b_in[4]))) ^ (((v_in[38]) & (b_in[7])) ^ ((v_in[37]) & (b_in[8])))) ^ ((((v_in[43]) & (b_in[2])) ^ ((v_in[42]) & (b_in[3]))) ^ (((v_in[44]) & (b_in[1])) ^ ((v_in[45]) & (b_in[0]))))); |
assign v_out[31] = v_in[47]; |
assign z_out[31] = ((((z_in[31]) ^ ((v_in[31]) & (b_in[15]))) ^ (((v_in[32]) & (b_in[14])) ^ ((v_in[33]) & (b_in[13])))) ^ ((((v_in[35]) & (b_in[11])) ^ ((v_in[34]) & (b_in[12]))) ^ (((v_in[36]) & (b_in[10])) ^ ((v_in[37]) & (b_in[9]))))) ^ ((((((v_in[41]) & (b_in[5])) ^ ((v_in[40]) & (b_in[6]))) ^ ((v_in[42]) & (b_in[4]))) ^ (((v_in[39]) & (b_in[7])) ^ ((v_in[38]) & (b_in[8])))) ^ ((((v_in[44]) & (b_in[2])) ^ ((v_in[43]) & (b_in[3]))) ^ (((v_in[45]) & (b_in[1])) ^ ((v_in[46]) & (b_in[0]))))); |
assign v_out[32] = v_in[48]; |
assign z_out[32] = ((((z_in[32]) ^ ((v_in[32]) & (b_in[15]))) ^ (((v_in[33]) & (b_in[14])) ^ ((v_in[34]) & (b_in[13])))) ^ ((((v_in[36]) & (b_in[11])) ^ ((v_in[35]) & (b_in[12]))) ^ (((v_in[37]) & (b_in[10])) ^ ((v_in[38]) & (b_in[9]))))) ^ ((((((v_in[42]) & (b_in[5])) ^ ((v_in[41]) & (b_in[6]))) ^ ((v_in[43]) & (b_in[4]))) ^ (((v_in[40]) & (b_in[7])) ^ ((v_in[39]) & (b_in[8])))) ^ ((((v_in[45]) & (b_in[2])) ^ ((v_in[44]) & (b_in[3]))) ^ (((v_in[46]) & (b_in[1])) ^ ((v_in[47]) & (b_in[0]))))); |
assign v_out[33] = v_in[49]; |
assign z_out[33] = ((((z_in[33]) ^ ((v_in[33]) & (b_in[15]))) ^ (((v_in[34]) & (b_in[14])) ^ ((v_in[35]) & (b_in[13])))) ^ ((((v_in[37]) & (b_in[11])) ^ ((v_in[36]) & (b_in[12]))) ^ (((v_in[38]) & (b_in[10])) ^ ((v_in[39]) & (b_in[9]))))) ^ ((((((v_in[43]) & (b_in[5])) ^ ((v_in[42]) & (b_in[6]))) ^ ((v_in[44]) & (b_in[4]))) ^ (((v_in[41]) & (b_in[7])) ^ ((v_in[40]) & (b_in[8])))) ^ ((((v_in[46]) & (b_in[2])) ^ ((v_in[45]) & (b_in[3]))) ^ (((v_in[47]) & (b_in[1])) ^ ((v_in[48]) & (b_in[0]))))); |
assign v_out[34] = v_in[50]; |
assign z_out[34] = ((((z_in[34]) ^ ((v_in[34]) & (b_in[15]))) ^ (((v_in[35]) & (b_in[14])) ^ ((v_in[36]) & (b_in[13])))) ^ ((((v_in[38]) & (b_in[11])) ^ ((v_in[37]) & (b_in[12]))) ^ (((v_in[39]) & (b_in[10])) ^ ((v_in[40]) & (b_in[9]))))) ^ ((((((v_in[44]) & (b_in[5])) ^ ((v_in[43]) & (b_in[6]))) ^ ((v_in[45]) & (b_in[4]))) ^ (((v_in[42]) & (b_in[7])) ^ ((v_in[41]) & (b_in[8])))) ^ ((((v_in[47]) & (b_in[2])) ^ ((v_in[46]) & (b_in[3]))) ^ (((v_in[48]) & (b_in[1])) ^ ((v_in[49]) & (b_in[0]))))); |
assign v_out[35] = v_in[51]; |
assign z_out[35] = ((((z_in[35]) ^ ((v_in[35]) & (b_in[15]))) ^ (((v_in[36]) & (b_in[14])) ^ ((v_in[37]) & (b_in[13])))) ^ ((((v_in[39]) & (b_in[11])) ^ ((v_in[38]) & (b_in[12]))) ^ (((v_in[40]) & (b_in[10])) ^ ((v_in[41]) & (b_in[9]))))) ^ ((((((v_in[45]) & (b_in[5])) ^ ((v_in[44]) & (b_in[6]))) ^ ((v_in[46]) & (b_in[4]))) ^ (((v_in[43]) & (b_in[7])) ^ ((v_in[42]) & (b_in[8])))) ^ ((((v_in[48]) & (b_in[2])) ^ ((v_in[47]) & (b_in[3]))) ^ (((v_in[49]) & (b_in[1])) ^ ((v_in[50]) & (b_in[0]))))); |
assign v_out[36] = v_in[52]; |
assign z_out[36] = ((((z_in[36]) ^ ((v_in[36]) & (b_in[15]))) ^ (((v_in[37]) & (b_in[14])) ^ ((v_in[38]) & (b_in[13])))) ^ ((((v_in[40]) & (b_in[11])) ^ ((v_in[39]) & (b_in[12]))) ^ (((v_in[41]) & (b_in[10])) ^ ((v_in[42]) & (b_in[9]))))) ^ ((((((v_in[46]) & (b_in[5])) ^ ((v_in[45]) & (b_in[6]))) ^ ((v_in[47]) & (b_in[4]))) ^ (((v_in[44]) & (b_in[7])) ^ ((v_in[43]) & (b_in[8])))) ^ ((((v_in[49]) & (b_in[2])) ^ ((v_in[48]) & (b_in[3]))) ^ (((v_in[50]) & (b_in[1])) ^ ((v_in[51]) & (b_in[0]))))); |
assign v_out[37] = v_in[53]; |
assign z_out[37] = ((((z_in[37]) ^ ((v_in[37]) & (b_in[15]))) ^ (((v_in[38]) & (b_in[14])) ^ ((v_in[39]) & (b_in[13])))) ^ ((((v_in[41]) & (b_in[11])) ^ ((v_in[40]) & (b_in[12]))) ^ (((v_in[42]) & (b_in[10])) ^ ((v_in[43]) & (b_in[9]))))) ^ ((((((v_in[47]) & (b_in[5])) ^ ((v_in[46]) & (b_in[6]))) ^ ((v_in[48]) & (b_in[4]))) ^ (((v_in[45]) & (b_in[7])) ^ ((v_in[44]) & (b_in[8])))) ^ ((((v_in[50]) & (b_in[2])) ^ ((v_in[49]) & (b_in[3]))) ^ (((v_in[51]) & (b_in[1])) ^ ((v_in[52]) & (b_in[0]))))); |
assign v_out[38] = v_in[54]; |
assign z_out[38] = ((((z_in[38]) ^ ((v_in[38]) & (b_in[15]))) ^ (((v_in[39]) & (b_in[14])) ^ ((v_in[40]) & (b_in[13])))) ^ ((((v_in[42]) & (b_in[11])) ^ ((v_in[41]) & (b_in[12]))) ^ (((v_in[43]) & (b_in[10])) ^ ((v_in[44]) & (b_in[9]))))) ^ ((((((v_in[48]) & (b_in[5])) ^ ((v_in[47]) & (b_in[6]))) ^ ((v_in[49]) & (b_in[4]))) ^ (((v_in[46]) & (b_in[7])) ^ ((v_in[45]) & (b_in[8])))) ^ ((((v_in[51]) & (b_in[2])) ^ ((v_in[50]) & (b_in[3]))) ^ (((v_in[52]) & (b_in[1])) ^ ((v_in[53]) & (b_in[0]))))); |
assign v_out[39] = v_in[55]; |
assign z_out[39] = ((((z_in[39]) ^ ((v_in[39]) & (b_in[15]))) ^ (((v_in[40]) & (b_in[14])) ^ ((v_in[41]) & (b_in[13])))) ^ ((((v_in[43]) & (b_in[11])) ^ ((v_in[42]) & (b_in[12]))) ^ (((v_in[44]) & (b_in[10])) ^ ((v_in[45]) & (b_in[9]))))) ^ ((((((v_in[49]) & (b_in[5])) ^ ((v_in[48]) & (b_in[6]))) ^ ((v_in[50]) & (b_in[4]))) ^ (((v_in[47]) & (b_in[7])) ^ ((v_in[46]) & (b_in[8])))) ^ ((((v_in[52]) & (b_in[2])) ^ ((v_in[51]) & (b_in[3]))) ^ (((v_in[53]) & (b_in[1])) ^ ((v_in[54]) & (b_in[0]))))); |
assign v_out[40] = v_in[56]; |
assign z_out[40] = ((((z_in[40]) ^ ((v_in[40]) & (b_in[15]))) ^ (((v_in[41]) & (b_in[14])) ^ ((v_in[42]) & (b_in[13])))) ^ ((((v_in[44]) & (b_in[11])) ^ ((v_in[43]) & (b_in[12]))) ^ (((v_in[45]) & (b_in[10])) ^ ((v_in[46]) & (b_in[9]))))) ^ ((((((v_in[50]) & (b_in[5])) ^ ((v_in[49]) & (b_in[6]))) ^ ((v_in[51]) & (b_in[4]))) ^ (((v_in[48]) & (b_in[7])) ^ ((v_in[47]) & (b_in[8])))) ^ ((((v_in[53]) & (b_in[2])) ^ ((v_in[52]) & (b_in[3]))) ^ (((v_in[54]) & (b_in[1])) ^ ((v_in[55]) & (b_in[0]))))); |
assign v_out[41] = v_in[57]; |
assign z_out[41] = ((((z_in[41]) ^ ((v_in[41]) & (b_in[15]))) ^ (((v_in[42]) & (b_in[14])) ^ ((v_in[43]) & (b_in[13])))) ^ ((((v_in[45]) & (b_in[11])) ^ ((v_in[44]) & (b_in[12]))) ^ (((v_in[46]) & (b_in[10])) ^ ((v_in[47]) & (b_in[9]))))) ^ ((((((v_in[51]) & (b_in[5])) ^ ((v_in[50]) & (b_in[6]))) ^ ((v_in[52]) & (b_in[4]))) ^ (((v_in[49]) & (b_in[7])) ^ ((v_in[48]) & (b_in[8])))) ^ ((((v_in[54]) & (b_in[2])) ^ ((v_in[53]) & (b_in[3]))) ^ (((v_in[55]) & (b_in[1])) ^ ((v_in[56]) & (b_in[0]))))); |
assign v_out[42] = v_in[58]; |
assign z_out[42] = ((((z_in[42]) ^ ((v_in[42]) & (b_in[15]))) ^ (((v_in[43]) & (b_in[14])) ^ ((v_in[44]) & (b_in[13])))) ^ ((((v_in[46]) & (b_in[11])) ^ ((v_in[45]) & (b_in[12]))) ^ (((v_in[47]) & (b_in[10])) ^ ((v_in[48]) & (b_in[9]))))) ^ ((((((v_in[52]) & (b_in[5])) ^ ((v_in[51]) & (b_in[6]))) ^ ((v_in[53]) & (b_in[4]))) ^ (((v_in[50]) & (b_in[7])) ^ ((v_in[49]) & (b_in[8])))) ^ ((((v_in[55]) & (b_in[2])) ^ ((v_in[54]) & (b_in[3]))) ^ (((v_in[56]) & (b_in[1])) ^ ((v_in[57]) & (b_in[0]))))); |
assign v_out[43] = v_in[59]; |
assign z_out[43] = ((((z_in[43]) ^ ((v_in[43]) & (b_in[15]))) ^ (((v_in[44]) & (b_in[14])) ^ ((v_in[45]) & (b_in[13])))) ^ ((((v_in[47]) & (b_in[11])) ^ ((v_in[46]) & (b_in[12]))) ^ (((v_in[48]) & (b_in[10])) ^ ((v_in[49]) & (b_in[9]))))) ^ ((((((v_in[53]) & (b_in[5])) ^ ((v_in[52]) & (b_in[6]))) ^ ((v_in[54]) & (b_in[4]))) ^ (((v_in[51]) & (b_in[7])) ^ ((v_in[50]) & (b_in[8])))) ^ ((((v_in[56]) & (b_in[2])) ^ ((v_in[55]) & (b_in[3]))) ^ (((v_in[57]) & (b_in[1])) ^ ((v_in[58]) & (b_in[0]))))); |
assign v_out[44] = v_in[60]; |
assign z_out[44] = ((((z_in[44]) ^ ((v_in[44]) & (b_in[15]))) ^ (((v_in[45]) & (b_in[14])) ^ ((v_in[46]) & (b_in[13])))) ^ ((((v_in[48]) & (b_in[11])) ^ ((v_in[47]) & (b_in[12]))) ^ (((v_in[49]) & (b_in[10])) ^ ((v_in[50]) & (b_in[9]))))) ^ ((((((v_in[54]) & (b_in[5])) ^ ((v_in[53]) & (b_in[6]))) ^ ((v_in[55]) & (b_in[4]))) ^ (((v_in[52]) & (b_in[7])) ^ ((v_in[51]) & (b_in[8])))) ^ ((((v_in[57]) & (b_in[2])) ^ ((v_in[56]) & (b_in[3]))) ^ (((v_in[58]) & (b_in[1])) ^ ((v_in[59]) & (b_in[0]))))); |
assign v_out[45] = v_in[61]; |
assign z_out[45] = ((((z_in[45]) ^ ((v_in[45]) & (b_in[15]))) ^ (((v_in[46]) & (b_in[14])) ^ ((v_in[47]) & (b_in[13])))) ^ ((((v_in[49]) & (b_in[11])) ^ ((v_in[48]) & (b_in[12]))) ^ (((v_in[50]) & (b_in[10])) ^ ((v_in[51]) & (b_in[9]))))) ^ ((((((v_in[55]) & (b_in[5])) ^ ((v_in[54]) & (b_in[6]))) ^ ((v_in[56]) & (b_in[4]))) ^ (((v_in[53]) & (b_in[7])) ^ ((v_in[52]) & (b_in[8])))) ^ ((((v_in[58]) & (b_in[2])) ^ ((v_in[57]) & (b_in[3]))) ^ (((v_in[59]) & (b_in[1])) ^ ((v_in[60]) & (b_in[0]))))); |
assign v_out[46] = v_in[62]; |
assign z_out[46] = ((((z_in[46]) ^ ((v_in[46]) & (b_in[15]))) ^ (((v_in[47]) & (b_in[14])) ^ ((v_in[48]) & (b_in[13])))) ^ ((((v_in[50]) & (b_in[11])) ^ ((v_in[49]) & (b_in[12]))) ^ (((v_in[51]) & (b_in[10])) ^ ((v_in[52]) & (b_in[9]))))) ^ ((((((v_in[56]) & (b_in[5])) ^ ((v_in[55]) & (b_in[6]))) ^ ((v_in[57]) & (b_in[4]))) ^ (((v_in[54]) & (b_in[7])) ^ ((v_in[53]) & (b_in[8])))) ^ ((((v_in[59]) & (b_in[2])) ^ ((v_in[58]) & (b_in[3]))) ^ (((v_in[60]) & (b_in[1])) ^ ((v_in[61]) & (b_in[0]))))); |
assign v_out[47] = v_in[63]; |
assign z_out[47] = ((((z_in[47]) ^ ((v_in[47]) & (b_in[15]))) ^ (((v_in[48]) & (b_in[14])) ^ ((v_in[49]) & (b_in[13])))) ^ ((((v_in[51]) & (b_in[11])) ^ ((v_in[50]) & (b_in[12]))) ^ (((v_in[52]) & (b_in[10])) ^ ((v_in[53]) & (b_in[9]))))) ^ ((((((v_in[57]) & (b_in[5])) ^ ((v_in[56]) & (b_in[6]))) ^ ((v_in[58]) & (b_in[4]))) ^ (((v_in[55]) & (b_in[7])) ^ ((v_in[54]) & (b_in[8])))) ^ ((((v_in[60]) & (b_in[2])) ^ ((v_in[59]) & (b_in[3]))) ^ (((v_in[61]) & (b_in[1])) ^ ((v_in[62]) & (b_in[0]))))); |
assign v_out[48] = v_in[64]; |
assign z_out[48] = ((((z_in[48]) ^ ((v_in[48]) & (b_in[15]))) ^ (((v_in[49]) & (b_in[14])) ^ ((v_in[50]) & (b_in[13])))) ^ ((((v_in[52]) & (b_in[11])) ^ ((v_in[51]) & (b_in[12]))) ^ (((v_in[53]) & (b_in[10])) ^ ((v_in[54]) & (b_in[9]))))) ^ ((((((v_in[58]) & (b_in[5])) ^ ((v_in[57]) & (b_in[6]))) ^ ((v_in[59]) & (b_in[4]))) ^ (((v_in[56]) & (b_in[7])) ^ ((v_in[55]) & (b_in[8])))) ^ ((((v_in[61]) & (b_in[2])) ^ ((v_in[60]) & (b_in[3]))) ^ (((v_in[62]) & (b_in[1])) ^ ((v_in[63]) & (b_in[0]))))); |
assign v_out[49] = v_in[65]; |
assign z_out[49] = ((((z_in[49]) ^ ((v_in[49]) & (b_in[15]))) ^ (((v_in[50]) & (b_in[14])) ^ ((v_in[51]) & (b_in[13])))) ^ ((((v_in[53]) & (b_in[11])) ^ ((v_in[52]) & (b_in[12]))) ^ (((v_in[54]) & (b_in[10])) ^ ((v_in[55]) & (b_in[9]))))) ^ ((((((v_in[59]) & (b_in[5])) ^ ((v_in[58]) & (b_in[6]))) ^ ((v_in[60]) & (b_in[4]))) ^ (((v_in[57]) & (b_in[7])) ^ ((v_in[56]) & (b_in[8])))) ^ ((((v_in[62]) & (b_in[2])) ^ ((v_in[61]) & (b_in[3]))) ^ (((v_in[63]) & (b_in[1])) ^ ((v_in[64]) & (b_in[0]))))); |
assign v_out[50] = v_in[66]; |
assign z_out[50] = ((((z_in[50]) ^ ((v_in[50]) & (b_in[15]))) ^ (((v_in[51]) & (b_in[14])) ^ ((v_in[52]) & (b_in[13])))) ^ ((((v_in[54]) & (b_in[11])) ^ ((v_in[53]) & (b_in[12]))) ^ (((v_in[55]) & (b_in[10])) ^ ((v_in[56]) & (b_in[9]))))) ^ ((((((v_in[60]) & (b_in[5])) ^ ((v_in[59]) & (b_in[6]))) ^ ((v_in[61]) & (b_in[4]))) ^ (((v_in[58]) & (b_in[7])) ^ ((v_in[57]) & (b_in[8])))) ^ ((((v_in[63]) & (b_in[2])) ^ ((v_in[62]) & (b_in[3]))) ^ (((v_in[64]) & (b_in[1])) ^ ((v_in[65]) & (b_in[0]))))); |
assign v_out[51] = v_in[67]; |
assign z_out[51] = ((((z_in[51]) ^ ((v_in[51]) & (b_in[15]))) ^ (((v_in[52]) & (b_in[14])) ^ ((v_in[53]) & (b_in[13])))) ^ ((((v_in[55]) & (b_in[11])) ^ ((v_in[54]) & (b_in[12]))) ^ (((v_in[56]) & (b_in[10])) ^ ((v_in[57]) & (b_in[9]))))) ^ ((((((v_in[61]) & (b_in[5])) ^ ((v_in[60]) & (b_in[6]))) ^ ((v_in[62]) & (b_in[4]))) ^ (((v_in[59]) & (b_in[7])) ^ ((v_in[58]) & (b_in[8])))) ^ ((((v_in[64]) & (b_in[2])) ^ ((v_in[63]) & (b_in[3]))) ^ (((v_in[65]) & (b_in[1])) ^ ((v_in[66]) & (b_in[0]))))); |
assign v_out[52] = v_in[68]; |
assign z_out[52] = ((((z_in[52]) ^ ((v_in[52]) & (b_in[15]))) ^ (((v_in[53]) & (b_in[14])) ^ ((v_in[54]) & (b_in[13])))) ^ ((((v_in[56]) & (b_in[11])) ^ ((v_in[55]) & (b_in[12]))) ^ (((v_in[57]) & (b_in[10])) ^ ((v_in[58]) & (b_in[9]))))) ^ ((((((v_in[62]) & (b_in[5])) ^ ((v_in[61]) & (b_in[6]))) ^ ((v_in[63]) & (b_in[4]))) ^ (((v_in[60]) & (b_in[7])) ^ ((v_in[59]) & (b_in[8])))) ^ ((((v_in[65]) & (b_in[2])) ^ ((v_in[64]) & (b_in[3]))) ^ (((v_in[66]) & (b_in[1])) ^ ((v_in[67]) & (b_in[0]))))); |
assign v_out[53] = v_in[69]; |
assign z_out[53] = ((((z_in[53]) ^ ((v_in[53]) & (b_in[15]))) ^ (((v_in[54]) & (b_in[14])) ^ ((v_in[55]) & (b_in[13])))) ^ ((((v_in[57]) & (b_in[11])) ^ ((v_in[56]) & (b_in[12]))) ^ (((v_in[58]) & (b_in[10])) ^ ((v_in[59]) & (b_in[9]))))) ^ ((((((v_in[63]) & (b_in[5])) ^ ((v_in[62]) & (b_in[6]))) ^ ((v_in[64]) & (b_in[4]))) ^ (((v_in[61]) & (b_in[7])) ^ ((v_in[60]) & (b_in[8])))) ^ ((((v_in[66]) & (b_in[2])) ^ ((v_in[65]) & (b_in[3]))) ^ (((v_in[67]) & (b_in[1])) ^ ((v_in[68]) & (b_in[0]))))); |
assign v_out[54] = v_in[70]; |
assign z_out[54] = ((((z_in[54]) ^ ((v_in[54]) & (b_in[15]))) ^ (((v_in[55]) & (b_in[14])) ^ ((v_in[56]) & (b_in[13])))) ^ ((((v_in[58]) & (b_in[11])) ^ ((v_in[57]) & (b_in[12]))) ^ (((v_in[59]) & (b_in[10])) ^ ((v_in[60]) & (b_in[9]))))) ^ ((((((v_in[64]) & (b_in[5])) ^ ((v_in[63]) & (b_in[6]))) ^ ((v_in[65]) & (b_in[4]))) ^ (((v_in[62]) & (b_in[7])) ^ ((v_in[61]) & (b_in[8])))) ^ ((((v_in[67]) & (b_in[2])) ^ ((v_in[66]) & (b_in[3]))) ^ (((v_in[68]) & (b_in[1])) ^ ((v_in[69]) & (b_in[0]))))); |
assign v_out[55] = v_in[71]; |
assign z_out[55] = ((((z_in[55]) ^ ((v_in[55]) & (b_in[15]))) ^ (((v_in[56]) & (b_in[14])) ^ ((v_in[57]) & (b_in[13])))) ^ ((((v_in[59]) & (b_in[11])) ^ ((v_in[58]) & (b_in[12]))) ^ (((v_in[60]) & (b_in[10])) ^ ((v_in[61]) & (b_in[9]))))) ^ ((((((v_in[65]) & (b_in[5])) ^ ((v_in[64]) & (b_in[6]))) ^ ((v_in[66]) & (b_in[4]))) ^ (((v_in[63]) & (b_in[7])) ^ ((v_in[62]) & (b_in[8])))) ^ ((((v_in[68]) & (b_in[2])) ^ ((v_in[67]) & (b_in[3]))) ^ (((v_in[69]) & (b_in[1])) ^ ((v_in[70]) & (b_in[0]))))); |
assign v_out[56] = v_in[72]; |
assign z_out[56] = ((((z_in[56]) ^ ((v_in[56]) & (b_in[15]))) ^ (((v_in[57]) & (b_in[14])) ^ ((v_in[58]) & (b_in[13])))) ^ ((((v_in[60]) & (b_in[11])) ^ ((v_in[59]) & (b_in[12]))) ^ (((v_in[61]) & (b_in[10])) ^ ((v_in[62]) & (b_in[9]))))) ^ ((((((v_in[66]) & (b_in[5])) ^ ((v_in[65]) & (b_in[6]))) ^ ((v_in[67]) & (b_in[4]))) ^ (((v_in[64]) & (b_in[7])) ^ ((v_in[63]) & (b_in[8])))) ^ ((((v_in[69]) & (b_in[2])) ^ ((v_in[68]) & (b_in[3]))) ^ (((v_in[70]) & (b_in[1])) ^ ((v_in[71]) & (b_in[0]))))); |
assign v_out[57] = v_in[73]; |
assign z_out[57] = ((((z_in[57]) ^ ((v_in[57]) & (b_in[15]))) ^ (((v_in[58]) & (b_in[14])) ^ ((v_in[59]) & (b_in[13])))) ^ ((((v_in[61]) & (b_in[11])) ^ ((v_in[60]) & (b_in[12]))) ^ (((v_in[62]) & (b_in[10])) ^ ((v_in[63]) & (b_in[9]))))) ^ ((((((v_in[67]) & (b_in[5])) ^ ((v_in[66]) & (b_in[6]))) ^ ((v_in[68]) & (b_in[4]))) ^ (((v_in[65]) & (b_in[7])) ^ ((v_in[64]) & (b_in[8])))) ^ ((((v_in[70]) & (b_in[2])) ^ ((v_in[69]) & (b_in[3]))) ^ (((v_in[71]) & (b_in[1])) ^ ((v_in[72]) & (b_in[0]))))); |
assign v_out[58] = v_in[74]; |
assign z_out[58] = ((((z_in[58]) ^ ((v_in[58]) & (b_in[15]))) ^ (((v_in[59]) & (b_in[14])) ^ ((v_in[60]) & (b_in[13])))) ^ ((((v_in[62]) & (b_in[11])) ^ ((v_in[61]) & (b_in[12]))) ^ (((v_in[63]) & (b_in[10])) ^ ((v_in[64]) & (b_in[9]))))) ^ ((((((v_in[68]) & (b_in[5])) ^ ((v_in[67]) & (b_in[6]))) ^ ((v_in[69]) & (b_in[4]))) ^ (((v_in[66]) & (b_in[7])) ^ ((v_in[65]) & (b_in[8])))) ^ ((((v_in[71]) & (b_in[2])) ^ ((v_in[70]) & (b_in[3]))) ^ (((v_in[72]) & (b_in[1])) ^ ((v_in[73]) & (b_in[0]))))); |
assign v_out[59] = v_in[75]; |
assign z_out[59] = ((((z_in[59]) ^ ((v_in[59]) & (b_in[15]))) ^ (((v_in[60]) & (b_in[14])) ^ ((v_in[61]) & (b_in[13])))) ^ ((((v_in[63]) & (b_in[11])) ^ ((v_in[62]) & (b_in[12]))) ^ (((v_in[64]) & (b_in[10])) ^ ((v_in[65]) & (b_in[9]))))) ^ ((((((v_in[69]) & (b_in[5])) ^ ((v_in[68]) & (b_in[6]))) ^ ((v_in[70]) & (b_in[4]))) ^ (((v_in[67]) & (b_in[7])) ^ ((v_in[66]) & (b_in[8])))) ^ ((((v_in[72]) & (b_in[2])) ^ ((v_in[71]) & (b_in[3]))) ^ (((v_in[73]) & (b_in[1])) ^ ((v_in[74]) & (b_in[0]))))); |
assign v_out[60] = v_in[76]; |
assign z_out[60] = ((((z_in[60]) ^ ((v_in[60]) & (b_in[15]))) ^ (((v_in[61]) & (b_in[14])) ^ ((v_in[62]) & (b_in[13])))) ^ ((((v_in[64]) & (b_in[11])) ^ ((v_in[63]) & (b_in[12]))) ^ (((v_in[65]) & (b_in[10])) ^ ((v_in[66]) & (b_in[9]))))) ^ ((((((v_in[70]) & (b_in[5])) ^ ((v_in[69]) & (b_in[6]))) ^ ((v_in[71]) & (b_in[4]))) ^ (((v_in[68]) & (b_in[7])) ^ ((v_in[67]) & (b_in[8])))) ^ ((((v_in[73]) & (b_in[2])) ^ ((v_in[72]) & (b_in[3]))) ^ (((v_in[74]) & (b_in[1])) ^ ((v_in[75]) & (b_in[0]))))); |
assign v_out[61] = v_in[77]; |
assign z_out[61] = ((((z_in[61]) ^ ((v_in[61]) & (b_in[15]))) ^ (((v_in[62]) & (b_in[14])) ^ ((v_in[63]) & (b_in[13])))) ^ ((((v_in[65]) & (b_in[11])) ^ ((v_in[64]) & (b_in[12]))) ^ (((v_in[66]) & (b_in[10])) ^ ((v_in[67]) & (b_in[9]))))) ^ ((((((v_in[71]) & (b_in[5])) ^ ((v_in[70]) & (b_in[6]))) ^ ((v_in[72]) & (b_in[4]))) ^ (((v_in[69]) & (b_in[7])) ^ ((v_in[68]) & (b_in[8])))) ^ ((((v_in[74]) & (b_in[2])) ^ ((v_in[73]) & (b_in[3]))) ^ (((v_in[75]) & (b_in[1])) ^ ((v_in[76]) & (b_in[0]))))); |
assign v_out[62] = v_in[78]; |
assign z_out[62] = ((((z_in[62]) ^ ((v_in[62]) & (b_in[15]))) ^ (((v_in[63]) & (b_in[14])) ^ ((v_in[64]) & (b_in[13])))) ^ ((((v_in[66]) & (b_in[11])) ^ ((v_in[65]) & (b_in[12]))) ^ (((v_in[67]) & (b_in[10])) ^ ((v_in[68]) & (b_in[9]))))) ^ ((((((v_in[72]) & (b_in[5])) ^ ((v_in[71]) & (b_in[6]))) ^ ((v_in[73]) & (b_in[4]))) ^ (((v_in[70]) & (b_in[7])) ^ ((v_in[69]) & (b_in[8])))) ^ ((((v_in[75]) & (b_in[2])) ^ ((v_in[74]) & (b_in[3]))) ^ (((v_in[76]) & (b_in[1])) ^ ((v_in[77]) & (b_in[0]))))); |
assign v_out[63] = v_in[79]; |
assign z_out[63] = ((((z_in[63]) ^ ((v_in[63]) & (b_in[15]))) ^ (((v_in[64]) & (b_in[14])) ^ ((v_in[65]) & (b_in[13])))) ^ ((((v_in[67]) & (b_in[11])) ^ ((v_in[66]) & (b_in[12]))) ^ (((v_in[68]) & (b_in[10])) ^ ((v_in[69]) & (b_in[9]))))) ^ ((((((v_in[73]) & (b_in[5])) ^ ((v_in[72]) & (b_in[6]))) ^ ((v_in[74]) & (b_in[4]))) ^ (((v_in[71]) & (b_in[7])) ^ ((v_in[70]) & (b_in[8])))) ^ ((((v_in[76]) & (b_in[2])) ^ ((v_in[75]) & (b_in[3]))) ^ (((v_in[77]) & (b_in[1])) ^ ((v_in[78]) & (b_in[0]))))); |
assign v_out[64] = v_in[80]; |
assign z_out[64] = ((((z_in[64]) ^ ((v_in[64]) & (b_in[15]))) ^ (((v_in[65]) & (b_in[14])) ^ ((v_in[66]) & (b_in[13])))) ^ ((((v_in[68]) & (b_in[11])) ^ ((v_in[67]) & (b_in[12]))) ^ (((v_in[69]) & (b_in[10])) ^ ((v_in[70]) & (b_in[9]))))) ^ ((((((v_in[74]) & (b_in[5])) ^ ((v_in[73]) & (b_in[6]))) ^ ((v_in[75]) & (b_in[4]))) ^ (((v_in[72]) & (b_in[7])) ^ ((v_in[71]) & (b_in[8])))) ^ ((((v_in[77]) & (b_in[2])) ^ ((v_in[76]) & (b_in[3]))) ^ (((v_in[78]) & (b_in[1])) ^ ((v_in[79]) & (b_in[0]))))); |
assign v_out[65] = v_in[81]; |
assign z_out[65] = ((((z_in[65]) ^ ((v_in[65]) & (b_in[15]))) ^ (((v_in[66]) & (b_in[14])) ^ ((v_in[67]) & (b_in[13])))) ^ ((((v_in[69]) & (b_in[11])) ^ ((v_in[68]) & (b_in[12]))) ^ (((v_in[70]) & (b_in[10])) ^ ((v_in[71]) & (b_in[9]))))) ^ ((((((v_in[75]) & (b_in[5])) ^ ((v_in[74]) & (b_in[6]))) ^ ((v_in[76]) & (b_in[4]))) ^ (((v_in[73]) & (b_in[7])) ^ ((v_in[72]) & (b_in[8])))) ^ ((((v_in[78]) & (b_in[2])) ^ ((v_in[77]) & (b_in[3]))) ^ (((v_in[79]) & (b_in[1])) ^ ((v_in[80]) & (b_in[0]))))); |
assign v_out[66] = v_in[82]; |
assign z_out[66] = ((((z_in[66]) ^ ((v_in[66]) & (b_in[15]))) ^ (((v_in[67]) & (b_in[14])) ^ ((v_in[68]) & (b_in[13])))) ^ ((((v_in[70]) & (b_in[11])) ^ ((v_in[69]) & (b_in[12]))) ^ (((v_in[71]) & (b_in[10])) ^ ((v_in[72]) & (b_in[9]))))) ^ ((((((v_in[76]) & (b_in[5])) ^ ((v_in[75]) & (b_in[6]))) ^ ((v_in[77]) & (b_in[4]))) ^ (((v_in[74]) & (b_in[7])) ^ ((v_in[73]) & (b_in[8])))) ^ ((((v_in[79]) & (b_in[2])) ^ ((v_in[78]) & (b_in[3]))) ^ (((v_in[80]) & (b_in[1])) ^ ((v_in[81]) & (b_in[0]))))); |
assign v_out[67] = v_in[83]; |
assign z_out[67] = ((((z_in[67]) ^ ((v_in[67]) & (b_in[15]))) ^ (((v_in[68]) & (b_in[14])) ^ ((v_in[69]) & (b_in[13])))) ^ ((((v_in[71]) & (b_in[11])) ^ ((v_in[70]) & (b_in[12]))) ^ (((v_in[72]) & (b_in[10])) ^ ((v_in[73]) & (b_in[9]))))) ^ ((((((v_in[77]) & (b_in[5])) ^ ((v_in[76]) & (b_in[6]))) ^ ((v_in[78]) & (b_in[4]))) ^ (((v_in[75]) & (b_in[7])) ^ ((v_in[74]) & (b_in[8])))) ^ ((((v_in[80]) & (b_in[2])) ^ ((v_in[79]) & (b_in[3]))) ^ (((v_in[81]) & (b_in[1])) ^ ((v_in[82]) & (b_in[0]))))); |
assign v_out[68] = v_in[84]; |
assign z_out[68] = ((((z_in[68]) ^ ((v_in[68]) & (b_in[15]))) ^ (((v_in[69]) & (b_in[14])) ^ ((v_in[70]) & (b_in[13])))) ^ ((((v_in[72]) & (b_in[11])) ^ ((v_in[71]) & (b_in[12]))) ^ (((v_in[73]) & (b_in[10])) ^ ((v_in[74]) & (b_in[9]))))) ^ ((((((v_in[78]) & (b_in[5])) ^ ((v_in[77]) & (b_in[6]))) ^ ((v_in[79]) & (b_in[4]))) ^ (((v_in[76]) & (b_in[7])) ^ ((v_in[75]) & (b_in[8])))) ^ ((((v_in[81]) & (b_in[2])) ^ ((v_in[80]) & (b_in[3]))) ^ (((v_in[82]) & (b_in[1])) ^ ((v_in[83]) & (b_in[0]))))); |
assign v_out[69] = v_in[85]; |
assign z_out[69] = ((((z_in[69]) ^ ((v_in[69]) & (b_in[15]))) ^ (((v_in[70]) & (b_in[14])) ^ ((v_in[71]) & (b_in[13])))) ^ ((((v_in[73]) & (b_in[11])) ^ ((v_in[72]) & (b_in[12]))) ^ (((v_in[74]) & (b_in[10])) ^ ((v_in[75]) & (b_in[9]))))) ^ ((((((v_in[79]) & (b_in[5])) ^ ((v_in[78]) & (b_in[6]))) ^ ((v_in[80]) & (b_in[4]))) ^ (((v_in[77]) & (b_in[7])) ^ ((v_in[76]) & (b_in[8])))) ^ ((((v_in[82]) & (b_in[2])) ^ ((v_in[81]) & (b_in[3]))) ^ (((v_in[83]) & (b_in[1])) ^ ((v_in[84]) & (b_in[0]))))); |
assign v_out[70] = v_in[86]; |
assign z_out[70] = ((((z_in[70]) ^ ((v_in[70]) & (b_in[15]))) ^ (((v_in[71]) & (b_in[14])) ^ ((v_in[72]) & (b_in[13])))) ^ ((((v_in[74]) & (b_in[11])) ^ ((v_in[73]) & (b_in[12]))) ^ (((v_in[75]) & (b_in[10])) ^ ((v_in[76]) & (b_in[9]))))) ^ ((((((v_in[80]) & (b_in[5])) ^ ((v_in[79]) & (b_in[6]))) ^ ((v_in[81]) & (b_in[4]))) ^ (((v_in[78]) & (b_in[7])) ^ ((v_in[77]) & (b_in[8])))) ^ ((((v_in[83]) & (b_in[2])) ^ ((v_in[82]) & (b_in[3]))) ^ (((v_in[84]) & (b_in[1])) ^ ((v_in[85]) & (b_in[0]))))); |
assign v_out[71] = v_in[87]; |
assign z_out[71] = ((((z_in[71]) ^ ((v_in[71]) & (b_in[15]))) ^ (((v_in[72]) & (b_in[14])) ^ ((v_in[73]) & (b_in[13])))) ^ ((((v_in[75]) & (b_in[11])) ^ ((v_in[74]) & (b_in[12]))) ^ (((v_in[76]) & (b_in[10])) ^ ((v_in[77]) & (b_in[9]))))) ^ ((((((v_in[81]) & (b_in[5])) ^ ((v_in[80]) & (b_in[6]))) ^ ((v_in[82]) & (b_in[4]))) ^ (((v_in[79]) & (b_in[7])) ^ ((v_in[78]) & (b_in[8])))) ^ ((((v_in[84]) & (b_in[2])) ^ ((v_in[83]) & (b_in[3]))) ^ (((v_in[85]) & (b_in[1])) ^ ((v_in[86]) & (b_in[0]))))); |
assign v_out[72] = v_in[88]; |
assign z_out[72] = ((((z_in[72]) ^ ((v_in[72]) & (b_in[15]))) ^ (((v_in[73]) & (b_in[14])) ^ ((v_in[74]) & (b_in[13])))) ^ ((((v_in[76]) & (b_in[11])) ^ ((v_in[75]) & (b_in[12]))) ^ (((v_in[77]) & (b_in[10])) ^ ((v_in[78]) & (b_in[9]))))) ^ ((((((v_in[82]) & (b_in[5])) ^ ((v_in[81]) & (b_in[6]))) ^ ((v_in[83]) & (b_in[4]))) ^ (((v_in[80]) & (b_in[7])) ^ ((v_in[79]) & (b_in[8])))) ^ ((((v_in[85]) & (b_in[2])) ^ ((v_in[84]) & (b_in[3]))) ^ (((v_in[86]) & (b_in[1])) ^ ((v_in[87]) & (b_in[0]))))); |
assign v_out[73] = v_in[89]; |
assign z_out[73] = ((((z_in[73]) ^ ((v_in[73]) & (b_in[15]))) ^ (((v_in[74]) & (b_in[14])) ^ ((v_in[75]) & (b_in[13])))) ^ ((((v_in[77]) & (b_in[11])) ^ ((v_in[76]) & (b_in[12]))) ^ (((v_in[78]) & (b_in[10])) ^ ((v_in[79]) & (b_in[9]))))) ^ ((((((v_in[83]) & (b_in[5])) ^ ((v_in[82]) & (b_in[6]))) ^ ((v_in[84]) & (b_in[4]))) ^ (((v_in[81]) & (b_in[7])) ^ ((v_in[80]) & (b_in[8])))) ^ ((((v_in[86]) & (b_in[2])) ^ ((v_in[85]) & (b_in[3]))) ^ (((v_in[87]) & (b_in[1])) ^ ((v_in[88]) & (b_in[0]))))); |
assign v_out[74] = v_in[90]; |
assign z_out[74] = ((((z_in[74]) ^ ((v_in[74]) & (b_in[15]))) ^ (((v_in[75]) & (b_in[14])) ^ ((v_in[76]) & (b_in[13])))) ^ ((((v_in[78]) & (b_in[11])) ^ ((v_in[77]) & (b_in[12]))) ^ (((v_in[79]) & (b_in[10])) ^ ((v_in[80]) & (b_in[9]))))) ^ ((((((v_in[84]) & (b_in[5])) ^ ((v_in[83]) & (b_in[6]))) ^ ((v_in[85]) & (b_in[4]))) ^ (((v_in[82]) & (b_in[7])) ^ ((v_in[81]) & (b_in[8])))) ^ ((((v_in[87]) & (b_in[2])) ^ ((v_in[86]) & (b_in[3]))) ^ (((v_in[88]) & (b_in[1])) ^ ((v_in[89]) & (b_in[0]))))); |
assign v_out[75] = v_in[91]; |
assign z_out[75] = ((((z_in[75]) ^ ((v_in[75]) & (b_in[15]))) ^ (((v_in[76]) & (b_in[14])) ^ ((v_in[77]) & (b_in[13])))) ^ ((((v_in[79]) & (b_in[11])) ^ ((v_in[78]) & (b_in[12]))) ^ (((v_in[80]) & (b_in[10])) ^ ((v_in[81]) & (b_in[9]))))) ^ ((((((v_in[85]) & (b_in[5])) ^ ((v_in[84]) & (b_in[6]))) ^ ((v_in[86]) & (b_in[4]))) ^ (((v_in[83]) & (b_in[7])) ^ ((v_in[82]) & (b_in[8])))) ^ ((((v_in[88]) & (b_in[2])) ^ ((v_in[87]) & (b_in[3]))) ^ (((v_in[89]) & (b_in[1])) ^ ((v_in[90]) & (b_in[0]))))); |
assign v_out[76] = v_in[92]; |
assign z_out[76] = ((((z_in[76]) ^ ((v_in[76]) & (b_in[15]))) ^ (((v_in[77]) & (b_in[14])) ^ ((v_in[78]) & (b_in[13])))) ^ ((((v_in[80]) & (b_in[11])) ^ ((v_in[79]) & (b_in[12]))) ^ (((v_in[81]) & (b_in[10])) ^ ((v_in[82]) & (b_in[9]))))) ^ ((((((v_in[86]) & (b_in[5])) ^ ((v_in[85]) & (b_in[6]))) ^ ((v_in[87]) & (b_in[4]))) ^ (((v_in[84]) & (b_in[7])) ^ ((v_in[83]) & (b_in[8])))) ^ ((((v_in[89]) & (b_in[2])) ^ ((v_in[88]) & (b_in[3]))) ^ (((v_in[90]) & (b_in[1])) ^ ((v_in[91]) & (b_in[0]))))); |
assign v_out[77] = v_in[93]; |
assign z_out[77] = ((((z_in[77]) ^ ((v_in[77]) & (b_in[15]))) ^ (((v_in[78]) & (b_in[14])) ^ ((v_in[79]) & (b_in[13])))) ^ ((((v_in[81]) & (b_in[11])) ^ ((v_in[80]) & (b_in[12]))) ^ (((v_in[82]) & (b_in[10])) ^ ((v_in[83]) & (b_in[9]))))) ^ ((((((v_in[87]) & (b_in[5])) ^ ((v_in[86]) & (b_in[6]))) ^ ((v_in[88]) & (b_in[4]))) ^ (((v_in[85]) & (b_in[7])) ^ ((v_in[84]) & (b_in[8])))) ^ ((((v_in[90]) & (b_in[2])) ^ ((v_in[89]) & (b_in[3]))) ^ (((v_in[91]) & (b_in[1])) ^ ((v_in[92]) & (b_in[0]))))); |
assign v_out[78] = v_in[94]; |
assign z_out[78] = ((((z_in[78]) ^ ((v_in[78]) & (b_in[15]))) ^ (((v_in[79]) & (b_in[14])) ^ ((v_in[80]) & (b_in[13])))) ^ ((((v_in[82]) & (b_in[11])) ^ ((v_in[81]) & (b_in[12]))) ^ (((v_in[83]) & (b_in[10])) ^ ((v_in[84]) & (b_in[9]))))) ^ ((((((v_in[88]) & (b_in[5])) ^ ((v_in[87]) & (b_in[6]))) ^ ((v_in[89]) & (b_in[4]))) ^ (((v_in[86]) & (b_in[7])) ^ ((v_in[85]) & (b_in[8])))) ^ ((((v_in[91]) & (b_in[2])) ^ ((v_in[90]) & (b_in[3]))) ^ (((v_in[92]) & (b_in[1])) ^ ((v_in[93]) & (b_in[0]))))); |
assign v_out[79] = v_in[95]; |
assign z_out[79] = ((((z_in[79]) ^ ((v_in[79]) & (b_in[15]))) ^ (((v_in[80]) & (b_in[14])) ^ ((v_in[81]) & (b_in[13])))) ^ ((((v_in[83]) & (b_in[11])) ^ ((v_in[82]) & (b_in[12]))) ^ (((v_in[84]) & (b_in[10])) ^ ((v_in[85]) & (b_in[9]))))) ^ ((((((v_in[89]) & (b_in[5])) ^ ((v_in[88]) & (b_in[6]))) ^ ((v_in[90]) & (b_in[4]))) ^ (((v_in[87]) & (b_in[7])) ^ ((v_in[86]) & (b_in[8])))) ^ ((((v_in[92]) & (b_in[2])) ^ ((v_in[91]) & (b_in[3]))) ^ (((v_in[93]) & (b_in[1])) ^ ((v_in[94]) & (b_in[0]))))); |
assign v_out[80] = v_in[96]; |
assign z_out[80] = ((((z_in[80]) ^ ((v_in[80]) & (b_in[15]))) ^ (((v_in[81]) & (b_in[14])) ^ ((v_in[82]) & (b_in[13])))) ^ ((((v_in[84]) & (b_in[11])) ^ ((v_in[83]) & (b_in[12]))) ^ (((v_in[85]) & (b_in[10])) ^ ((v_in[86]) & (b_in[9]))))) ^ ((((((v_in[90]) & (b_in[5])) ^ ((v_in[89]) & (b_in[6]))) ^ ((v_in[91]) & (b_in[4]))) ^ (((v_in[88]) & (b_in[7])) ^ ((v_in[87]) & (b_in[8])))) ^ ((((v_in[93]) & (b_in[2])) ^ ((v_in[92]) & (b_in[3]))) ^ (((v_in[94]) & (b_in[1])) ^ ((v_in[95]) & (b_in[0]))))); |
assign v_out[81] = v_in[97]; |
assign z_out[81] = ((((z_in[81]) ^ ((v_in[81]) & (b_in[15]))) ^ (((v_in[82]) & (b_in[14])) ^ ((v_in[83]) & (b_in[13])))) ^ ((((v_in[85]) & (b_in[11])) ^ ((v_in[84]) & (b_in[12]))) ^ (((v_in[86]) & (b_in[10])) ^ ((v_in[87]) & (b_in[9]))))) ^ ((((((v_in[91]) & (b_in[5])) ^ ((v_in[90]) & (b_in[6]))) ^ ((v_in[92]) & (b_in[4]))) ^ (((v_in[89]) & (b_in[7])) ^ ((v_in[88]) & (b_in[8])))) ^ ((((v_in[94]) & (b_in[2])) ^ ((v_in[93]) & (b_in[3]))) ^ (((v_in[95]) & (b_in[1])) ^ ((v_in[96]) & (b_in[0]))))); |
assign v_out[82] = v_in[98]; |
assign z_out[82] = ((((z_in[82]) ^ ((v_in[82]) & (b_in[15]))) ^ (((v_in[83]) & (b_in[14])) ^ ((v_in[84]) & (b_in[13])))) ^ ((((v_in[86]) & (b_in[11])) ^ ((v_in[85]) & (b_in[12]))) ^ (((v_in[87]) & (b_in[10])) ^ ((v_in[88]) & (b_in[9]))))) ^ ((((((v_in[92]) & (b_in[5])) ^ ((v_in[91]) & (b_in[6]))) ^ ((v_in[93]) & (b_in[4]))) ^ (((v_in[90]) & (b_in[7])) ^ ((v_in[89]) & (b_in[8])))) ^ ((((v_in[95]) & (b_in[2])) ^ ((v_in[94]) & (b_in[3]))) ^ (((v_in[96]) & (b_in[1])) ^ ((v_in[97]) & (b_in[0]))))); |
assign v_out[83] = v_in[99]; |
assign z_out[83] = ((((z_in[83]) ^ ((v_in[83]) & (b_in[15]))) ^ (((v_in[84]) & (b_in[14])) ^ ((v_in[85]) & (b_in[13])))) ^ ((((v_in[87]) & (b_in[11])) ^ ((v_in[86]) & (b_in[12]))) ^ (((v_in[88]) & (b_in[10])) ^ ((v_in[89]) & (b_in[9]))))) ^ ((((((v_in[93]) & (b_in[5])) ^ ((v_in[92]) & (b_in[6]))) ^ ((v_in[94]) & (b_in[4]))) ^ (((v_in[91]) & (b_in[7])) ^ ((v_in[90]) & (b_in[8])))) ^ ((((v_in[96]) & (b_in[2])) ^ ((v_in[95]) & (b_in[3]))) ^ (((v_in[97]) & (b_in[1])) ^ ((v_in[98]) & (b_in[0]))))); |
assign v_out[84] = v_in[100]; |
assign z_out[84] = ((((z_in[84]) ^ ((v_in[84]) & (b_in[15]))) ^ (((v_in[85]) & (b_in[14])) ^ ((v_in[86]) & (b_in[13])))) ^ ((((v_in[88]) & (b_in[11])) ^ ((v_in[87]) & (b_in[12]))) ^ (((v_in[89]) & (b_in[10])) ^ ((v_in[90]) & (b_in[9]))))) ^ ((((((v_in[94]) & (b_in[5])) ^ ((v_in[93]) & (b_in[6]))) ^ ((v_in[95]) & (b_in[4]))) ^ (((v_in[92]) & (b_in[7])) ^ ((v_in[91]) & (b_in[8])))) ^ ((((v_in[97]) & (b_in[2])) ^ ((v_in[96]) & (b_in[3]))) ^ (((v_in[98]) & (b_in[1])) ^ ((v_in[99]) & (b_in[0]))))); |
assign v_out[85] = v_in[101]; |
assign z_out[85] = ((((z_in[85]) ^ ((v_in[85]) & (b_in[15]))) ^ (((v_in[86]) & (b_in[14])) ^ ((v_in[87]) & (b_in[13])))) ^ ((((v_in[89]) & (b_in[11])) ^ ((v_in[88]) & (b_in[12]))) ^ (((v_in[90]) & (b_in[10])) ^ ((v_in[91]) & (b_in[9]))))) ^ ((((((v_in[95]) & (b_in[5])) ^ ((v_in[94]) & (b_in[6]))) ^ ((v_in[96]) & (b_in[4]))) ^ (((v_in[93]) & (b_in[7])) ^ ((v_in[92]) & (b_in[8])))) ^ ((((v_in[98]) & (b_in[2])) ^ ((v_in[97]) & (b_in[3]))) ^ (((v_in[99]) & (b_in[1])) ^ ((v_in[100]) & (b_in[0]))))); |
assign v_out[86] = v_in[102]; |
assign z_out[86] = ((((z_in[86]) ^ ((v_in[86]) & (b_in[15]))) ^ (((v_in[87]) & (b_in[14])) ^ ((v_in[88]) & (b_in[13])))) ^ ((((v_in[90]) & (b_in[11])) ^ ((v_in[89]) & (b_in[12]))) ^ (((v_in[91]) & (b_in[10])) ^ ((v_in[92]) & (b_in[9]))))) ^ ((((((v_in[96]) & (b_in[5])) ^ ((v_in[95]) & (b_in[6]))) ^ ((v_in[97]) & (b_in[4]))) ^ (((v_in[94]) & (b_in[7])) ^ ((v_in[93]) & (b_in[8])))) ^ ((((v_in[99]) & (b_in[2])) ^ ((v_in[98]) & (b_in[3]))) ^ (((v_in[100]) & (b_in[1])) ^ ((v_in[101]) & (b_in[0]))))); |
assign v_out[87] = v_in[103]; |
assign z_out[87] = ((((z_in[87]) ^ ((v_in[87]) & (b_in[15]))) ^ (((v_in[88]) & (b_in[14])) ^ ((v_in[89]) & (b_in[13])))) ^ ((((v_in[91]) & (b_in[11])) ^ ((v_in[90]) & (b_in[12]))) ^ (((v_in[92]) & (b_in[10])) ^ ((v_in[93]) & (b_in[9]))))) ^ ((((((v_in[97]) & (b_in[5])) ^ ((v_in[96]) & (b_in[6]))) ^ ((v_in[98]) & (b_in[4]))) ^ (((v_in[95]) & (b_in[7])) ^ ((v_in[94]) & (b_in[8])))) ^ ((((v_in[100]) & (b_in[2])) ^ ((v_in[99]) & (b_in[3]))) ^ (((v_in[101]) & (b_in[1])) ^ ((v_in[102]) & (b_in[0]))))); |
assign v_out[88] = v_in[104]; |
assign z_out[88] = ((((z_in[88]) ^ ((v_in[88]) & (b_in[15]))) ^ (((v_in[89]) & (b_in[14])) ^ ((v_in[90]) & (b_in[13])))) ^ ((((v_in[92]) & (b_in[11])) ^ ((v_in[91]) & (b_in[12]))) ^ (((v_in[93]) & (b_in[10])) ^ ((v_in[94]) & (b_in[9]))))) ^ ((((((v_in[98]) & (b_in[5])) ^ ((v_in[97]) & (b_in[6]))) ^ ((v_in[99]) & (b_in[4]))) ^ (((v_in[96]) & (b_in[7])) ^ ((v_in[95]) & (b_in[8])))) ^ ((((v_in[101]) & (b_in[2])) ^ ((v_in[100]) & (b_in[3]))) ^ (((v_in[102]) & (b_in[1])) ^ ((v_in[103]) & (b_in[0]))))); |
assign v_out[89] = v_in[105]; |
assign z_out[89] = ((((z_in[89]) ^ ((v_in[89]) & (b_in[15]))) ^ (((v_in[90]) & (b_in[14])) ^ ((v_in[91]) & (b_in[13])))) ^ ((((v_in[93]) & (b_in[11])) ^ ((v_in[92]) & (b_in[12]))) ^ (((v_in[94]) & (b_in[10])) ^ ((v_in[95]) & (b_in[9]))))) ^ ((((((v_in[99]) & (b_in[5])) ^ ((v_in[98]) & (b_in[6]))) ^ ((v_in[100]) & (b_in[4]))) ^ (((v_in[97]) & (b_in[7])) ^ ((v_in[96]) & (b_in[8])))) ^ ((((v_in[102]) & (b_in[2])) ^ ((v_in[101]) & (b_in[3]))) ^ (((v_in[103]) & (b_in[1])) ^ ((v_in[104]) & (b_in[0]))))); |
assign v_out[90] = v_in[106]; |
assign z_out[90] = ((((z_in[90]) ^ ((v_in[90]) & (b_in[15]))) ^ (((v_in[91]) & (b_in[14])) ^ ((v_in[92]) & (b_in[13])))) ^ ((((v_in[94]) & (b_in[11])) ^ ((v_in[93]) & (b_in[12]))) ^ (((v_in[95]) & (b_in[10])) ^ ((v_in[96]) & (b_in[9]))))) ^ ((((((v_in[100]) & (b_in[5])) ^ ((v_in[99]) & (b_in[6]))) ^ ((v_in[101]) & (b_in[4]))) ^ (((v_in[98]) & (b_in[7])) ^ ((v_in[97]) & (b_in[8])))) ^ ((((v_in[103]) & (b_in[2])) ^ ((v_in[102]) & (b_in[3]))) ^ (((v_in[104]) & (b_in[1])) ^ ((v_in[105]) & (b_in[0]))))); |
assign v_out[91] = v_in[107]; |
assign z_out[91] = ((((z_in[91]) ^ ((v_in[91]) & (b_in[15]))) ^ (((v_in[92]) & (b_in[14])) ^ ((v_in[93]) & (b_in[13])))) ^ ((((v_in[95]) & (b_in[11])) ^ ((v_in[94]) & (b_in[12]))) ^ (((v_in[96]) & (b_in[10])) ^ ((v_in[97]) & (b_in[9]))))) ^ ((((((v_in[101]) & (b_in[5])) ^ ((v_in[100]) & (b_in[6]))) ^ ((v_in[102]) & (b_in[4]))) ^ (((v_in[99]) & (b_in[7])) ^ ((v_in[98]) & (b_in[8])))) ^ ((((v_in[104]) & (b_in[2])) ^ ((v_in[103]) & (b_in[3]))) ^ (((v_in[105]) & (b_in[1])) ^ ((v_in[106]) & (b_in[0]))))); |
assign v_out[92] = v_in[108]; |
assign z_out[92] = ((((z_in[92]) ^ ((v_in[92]) & (b_in[15]))) ^ (((v_in[93]) & (b_in[14])) ^ ((v_in[94]) & (b_in[13])))) ^ ((((v_in[96]) & (b_in[11])) ^ ((v_in[95]) & (b_in[12]))) ^ (((v_in[97]) & (b_in[10])) ^ ((v_in[98]) & (b_in[9]))))) ^ ((((((v_in[102]) & (b_in[5])) ^ ((v_in[101]) & (b_in[6]))) ^ ((v_in[103]) & (b_in[4]))) ^ (((v_in[100]) & (b_in[7])) ^ ((v_in[99]) & (b_in[8])))) ^ ((((v_in[105]) & (b_in[2])) ^ ((v_in[104]) & (b_in[3]))) ^ (((v_in[106]) & (b_in[1])) ^ ((v_in[107]) & (b_in[0]))))); |
assign v_out[93] = v_in[109]; |
assign z_out[93] = ((((z_in[93]) ^ ((v_in[93]) & (b_in[15]))) ^ (((v_in[94]) & (b_in[14])) ^ ((v_in[95]) & (b_in[13])))) ^ ((((v_in[97]) & (b_in[11])) ^ ((v_in[96]) & (b_in[12]))) ^ (((v_in[98]) & (b_in[10])) ^ ((v_in[99]) & (b_in[9]))))) ^ ((((((v_in[103]) & (b_in[5])) ^ ((v_in[102]) & (b_in[6]))) ^ ((v_in[104]) & (b_in[4]))) ^ (((v_in[101]) & (b_in[7])) ^ ((v_in[100]) & (b_in[8])))) ^ ((((v_in[106]) & (b_in[2])) ^ ((v_in[105]) & (b_in[3]))) ^ (((v_in[107]) & (b_in[1])) ^ ((v_in[108]) & (b_in[0]))))); |
assign v_out[94] = v_in[110]; |
assign z_out[94] = ((((z_in[94]) ^ ((v_in[94]) & (b_in[15]))) ^ (((v_in[95]) & (b_in[14])) ^ ((v_in[96]) & (b_in[13])))) ^ ((((v_in[98]) & (b_in[11])) ^ ((v_in[97]) & (b_in[12]))) ^ (((v_in[99]) & (b_in[10])) ^ ((v_in[100]) & (b_in[9]))))) ^ ((((((v_in[104]) & (b_in[5])) ^ ((v_in[103]) & (b_in[6]))) ^ ((v_in[105]) & (b_in[4]))) ^ (((v_in[102]) & (b_in[7])) ^ ((v_in[101]) & (b_in[8])))) ^ ((((v_in[107]) & (b_in[2])) ^ ((v_in[106]) & (b_in[3]))) ^ (((v_in[108]) & (b_in[1])) ^ ((v_in[109]) & (b_in[0]))))); |
assign v_out[95] = v_in[111]; |
assign z_out[95] = ((((z_in[95]) ^ ((v_in[95]) & (b_in[15]))) ^ (((v_in[96]) & (b_in[14])) ^ ((v_in[97]) & (b_in[13])))) ^ ((((v_in[99]) & (b_in[11])) ^ ((v_in[98]) & (b_in[12]))) ^ (((v_in[100]) & (b_in[10])) ^ ((v_in[101]) & (b_in[9]))))) ^ ((((((v_in[105]) & (b_in[5])) ^ ((v_in[104]) & (b_in[6]))) ^ ((v_in[106]) & (b_in[4]))) ^ (((v_in[103]) & (b_in[7])) ^ ((v_in[102]) & (b_in[8])))) ^ ((((v_in[108]) & (b_in[2])) ^ ((v_in[107]) & (b_in[3]))) ^ (((v_in[109]) & (b_in[1])) ^ ((v_in[110]) & (b_in[0]))))); |
assign v_out[96] = v_in[112]; |
assign z_out[96] = ((((z_in[96]) ^ ((v_in[96]) & (b_in[15]))) ^ (((v_in[97]) & (b_in[14])) ^ ((v_in[98]) & (b_in[13])))) ^ ((((v_in[100]) & (b_in[11])) ^ ((v_in[99]) & (b_in[12]))) ^ (((v_in[101]) & (b_in[10])) ^ ((v_in[102]) & (b_in[9]))))) ^ ((((((v_in[106]) & (b_in[5])) ^ ((v_in[105]) & (b_in[6]))) ^ ((v_in[107]) & (b_in[4]))) ^ (((v_in[104]) & (b_in[7])) ^ ((v_in[103]) & (b_in[8])))) ^ ((((v_in[109]) & (b_in[2])) ^ ((v_in[108]) & (b_in[3]))) ^ (((v_in[110]) & (b_in[1])) ^ ((v_in[111]) & (b_in[0]))))); |
assign v_out[97] = v_in[113]; |
assign z_out[97] = ((((z_in[97]) ^ ((v_in[97]) & (b_in[15]))) ^ (((v_in[98]) & (b_in[14])) ^ ((v_in[99]) & (b_in[13])))) ^ ((((v_in[101]) & (b_in[11])) ^ ((v_in[100]) & (b_in[12]))) ^ (((v_in[102]) & (b_in[10])) ^ ((v_in[103]) & (b_in[9]))))) ^ ((((((v_in[107]) & (b_in[5])) ^ ((v_in[106]) & (b_in[6]))) ^ ((v_in[108]) & (b_in[4]))) ^ (((v_in[105]) & (b_in[7])) ^ ((v_in[104]) & (b_in[8])))) ^ ((((v_in[110]) & (b_in[2])) ^ ((v_in[109]) & (b_in[3]))) ^ (((v_in[111]) & (b_in[1])) ^ ((v_in[112]) & (b_in[0]))))); |
assign v_out[98] = v_in[114]; |
assign z_out[98] = ((((z_in[98]) ^ ((v_in[98]) & (b_in[15]))) ^ (((v_in[99]) & (b_in[14])) ^ ((v_in[100]) & (b_in[13])))) ^ ((((v_in[102]) & (b_in[11])) ^ ((v_in[101]) & (b_in[12]))) ^ (((v_in[103]) & (b_in[10])) ^ ((v_in[104]) & (b_in[9]))))) ^ ((((((v_in[108]) & (b_in[5])) ^ ((v_in[107]) & (b_in[6]))) ^ ((v_in[109]) & (b_in[4]))) ^ (((v_in[106]) & (b_in[7])) ^ ((v_in[105]) & (b_in[8])))) ^ ((((v_in[111]) & (b_in[2])) ^ ((v_in[110]) & (b_in[3]))) ^ (((v_in[112]) & (b_in[1])) ^ ((v_in[113]) & (b_in[0]))))); |
assign v_out[99] = v_in[115]; |
assign z_out[99] = ((((z_in[99]) ^ ((v_in[99]) & (b_in[15]))) ^ (((v_in[100]) & (b_in[14])) ^ ((v_in[101]) & (b_in[13])))) ^ ((((v_in[103]) & (b_in[11])) ^ ((v_in[102]) & (b_in[12]))) ^ (((v_in[104]) & (b_in[10])) ^ ((v_in[105]) & (b_in[9]))))) ^ ((((((v_in[109]) & (b_in[5])) ^ ((v_in[108]) & (b_in[6]))) ^ ((v_in[110]) & (b_in[4]))) ^ (((v_in[107]) & (b_in[7])) ^ ((v_in[106]) & (b_in[8])))) ^ ((((v_in[112]) & (b_in[2])) ^ ((v_in[111]) & (b_in[3]))) ^ (((v_in[113]) & (b_in[1])) ^ ((v_in[114]) & (b_in[0]))))); |
assign v_out[100] = v_in[116]; |
assign z_out[100] = ((((z_in[100]) ^ ((v_in[100]) & (b_in[15]))) ^ (((v_in[101]) & (b_in[14])) ^ ((v_in[102]) & (b_in[13])))) ^ ((((v_in[104]) & (b_in[11])) ^ ((v_in[103]) & (b_in[12]))) ^ (((v_in[105]) & (b_in[10])) ^ ((v_in[106]) & (b_in[9]))))) ^ ((((((v_in[110]) & (b_in[5])) ^ ((v_in[109]) & (b_in[6]))) ^ ((v_in[111]) & (b_in[4]))) ^ (((v_in[108]) & (b_in[7])) ^ ((v_in[107]) & (b_in[8])))) ^ ((((v_in[113]) & (b_in[2])) ^ ((v_in[112]) & (b_in[3]))) ^ (((v_in[114]) & (b_in[1])) ^ ((v_in[115]) & (b_in[0]))))); |
assign v_out[101] = v_in[117]; |
assign z_out[101] = ((((z_in[101]) ^ ((v_in[101]) & (b_in[15]))) ^ (((v_in[102]) & (b_in[14])) ^ ((v_in[103]) & (b_in[13])))) ^ ((((v_in[105]) & (b_in[11])) ^ ((v_in[104]) & (b_in[12]))) ^ (((v_in[106]) & (b_in[10])) ^ ((v_in[107]) & (b_in[9]))))) ^ ((((((v_in[111]) & (b_in[5])) ^ ((v_in[110]) & (b_in[6]))) ^ ((v_in[112]) & (b_in[4]))) ^ (((v_in[109]) & (b_in[7])) ^ ((v_in[108]) & (b_in[8])))) ^ ((((v_in[114]) & (b_in[2])) ^ ((v_in[113]) & (b_in[3]))) ^ (((v_in[115]) & (b_in[1])) ^ ((v_in[116]) & (b_in[0]))))); |
assign v_out[102] = v_in[118]; |
assign z_out[102] = ((((z_in[102]) ^ ((v_in[102]) & (b_in[15]))) ^ (((v_in[103]) & (b_in[14])) ^ ((v_in[104]) & (b_in[13])))) ^ ((((v_in[106]) & (b_in[11])) ^ ((v_in[105]) & (b_in[12]))) ^ (((v_in[107]) & (b_in[10])) ^ ((v_in[108]) & (b_in[9]))))) ^ ((((((v_in[112]) & (b_in[5])) ^ ((v_in[111]) & (b_in[6]))) ^ ((v_in[113]) & (b_in[4]))) ^ (((v_in[110]) & (b_in[7])) ^ ((v_in[109]) & (b_in[8])))) ^ ((((v_in[115]) & (b_in[2])) ^ ((v_in[114]) & (b_in[3]))) ^ (((v_in[116]) & (b_in[1])) ^ ((v_in[117]) & (b_in[0]))))); |
assign v_out[103] = v_in[119]; |
assign z_out[103] = ((((z_in[103]) ^ ((v_in[103]) & (b_in[15]))) ^ (((v_in[104]) & (b_in[14])) ^ ((v_in[105]) & (b_in[13])))) ^ ((((v_in[107]) & (b_in[11])) ^ ((v_in[106]) & (b_in[12]))) ^ (((v_in[108]) & (b_in[10])) ^ ((v_in[109]) & (b_in[9]))))) ^ ((((((v_in[113]) & (b_in[5])) ^ ((v_in[112]) & (b_in[6]))) ^ ((v_in[114]) & (b_in[4]))) ^ (((v_in[111]) & (b_in[7])) ^ ((v_in[110]) & (b_in[8])))) ^ ((((v_in[116]) & (b_in[2])) ^ ((v_in[115]) & (b_in[3]))) ^ (((v_in[117]) & (b_in[1])) ^ ((v_in[118]) & (b_in[0]))))); |
assign v_out[104] = v_in[120]; |
assign z_out[104] = ((((z_in[104]) ^ ((v_in[104]) & (b_in[15]))) ^ (((v_in[105]) & (b_in[14])) ^ ((v_in[106]) & (b_in[13])))) ^ ((((v_in[108]) & (b_in[11])) ^ ((v_in[107]) & (b_in[12]))) ^ (((v_in[109]) & (b_in[10])) ^ ((v_in[110]) & (b_in[9]))))) ^ ((((((v_in[114]) & (b_in[5])) ^ ((v_in[113]) & (b_in[6]))) ^ ((v_in[115]) & (b_in[4]))) ^ (((v_in[112]) & (b_in[7])) ^ ((v_in[111]) & (b_in[8])))) ^ ((((v_in[117]) & (b_in[2])) ^ ((v_in[116]) & (b_in[3]))) ^ (((v_in[118]) & (b_in[1])) ^ ((v_in[119]) & (b_in[0]))))); |
assign v_out[105] = (v_in[0]) ^ (v_in[121]); |
assign z_out[105] = ((((z_in[105]) ^ ((v_in[105]) & (b_in[15]))) ^ (((v_in[106]) & (b_in[14])) ^ ((v_in[107]) & (b_in[13])))) ^ ((((v_in[109]) & (b_in[11])) ^ ((v_in[108]) & (b_in[12]))) ^ (((v_in[110]) & (b_in[10])) ^ ((v_in[111]) & (b_in[9]))))) ^ ((((((v_in[115]) & (b_in[5])) ^ ((v_in[114]) & (b_in[6]))) ^ ((v_in[116]) & (b_in[4]))) ^ (((v_in[113]) & (b_in[7])) ^ ((v_in[112]) & (b_in[8])))) ^ ((((v_in[118]) & (b_in[2])) ^ ((v_in[117]) & (b_in[3]))) ^ (((v_in[119]) & (b_in[1])) ^ ((v_in[120]) & (b_in[0]))))); |
assign v_out[106] = (v_in[1]) ^ (v_in[122]); |
assign z_out[106] = ((((z_in[106]) ^ ((v_in[106]) & (b_in[15]))) ^ (((v_in[107]) & (b_in[14])) ^ ((v_in[108]) & (b_in[13])))) ^ (((((v_in[110]) & (b_in[11])) ^ ((v_in[111]) & (b_in[10]))) ^ ((v_in[109]) & (b_in[12]))) ^ (((v_in[112]) & (b_in[9])) ^ ((v_in[113]) & (b_in[8]))))) ^ ((((((v_in[117]) & (b_in[4])) ^ ((v_in[116]) & (b_in[5]))) ^ ((v_in[118]) & (b_in[3]))) ^ (((v_in[115]) & (b_in[6])) ^ ((v_in[114]) & (b_in[7])))) ^ ((((v_in[120]) & (b_in[1])) ^ ((v_in[119]) & (b_in[2]))) ^ (((v_in[0]) ^ (v_in[121])) & (b_in[0])))); |
assign v_out[107] = (v_in[2]) ^ (v_in[123]); |
assign z_out[107] = ((((z_in[107]) ^ ((v_in[107]) & (b_in[15]))) ^ (((v_in[108]) & (b_in[14])) ^ ((v_in[109]) & (b_in[13])))) ^ (((((v_in[111]) & (b_in[11])) ^ ((v_in[112]) & (b_in[10]))) ^ ((v_in[110]) & (b_in[12]))) ^ (((v_in[113]) & (b_in[9])) ^ ((v_in[114]) & (b_in[8]))))) ^ ((((((v_in[118]) & (b_in[4])) ^ ((v_in[117]) & (b_in[5]))) ^ ((v_in[119]) & (b_in[3]))) ^ (((v_in[116]) & (b_in[6])) ^ ((v_in[115]) & (b_in[7])))) ^ (((((v_in[0]) ^ (v_in[121])) & (b_in[1])) ^ ((v_in[120]) & (b_in[2]))) ^ (((v_in[1]) ^ (v_in[122])) & (b_in[0])))); |
assign v_out[108] = (v_in[3]) ^ (v_in[124]); |
assign z_out[108] = ((((z_in[108]) ^ ((v_in[108]) & (b_in[15]))) ^ (((v_in[109]) & (b_in[14])) ^ ((v_in[110]) & (b_in[13])))) ^ (((((v_in[112]) & (b_in[11])) ^ ((v_in[113]) & (b_in[10]))) ^ ((v_in[111]) & (b_in[12]))) ^ (((v_in[114]) & (b_in[9])) ^ ((v_in[115]) & (b_in[8]))))) ^ ((((((v_in[119]) & (b_in[4])) ^ ((v_in[118]) & (b_in[5]))) ^ ((v_in[120]) & (b_in[3]))) ^ (((v_in[117]) & (b_in[6])) ^ ((v_in[116]) & (b_in[7])))) ^ (((((v_in[1]) ^ (v_in[122])) & (b_in[1])) ^ (((v_in[0]) ^ (v_in[121])) & (b_in[2]))) ^ (((v_in[2]) ^ (v_in[123])) & (b_in[0])))); |
assign v_out[109] = (v_in[4]) ^ (v_in[125]); |
assign z_out[109] = ((((z_in[109]) ^ ((v_in[109]) & (b_in[15]))) ^ (((v_in[110]) & (b_in[14])) ^ ((v_in[111]) & (b_in[13])))) ^ (((((v_in[113]) & (b_in[11])) ^ ((v_in[114]) & (b_in[10]))) ^ ((v_in[112]) & (b_in[12]))) ^ (((v_in[115]) & (b_in[9])) ^ ((v_in[116]) & (b_in[8]))))) ^ (((((v_in[120]) & (b_in[4])) ^ (((v_in[0]) ^ (v_in[121])) & (b_in[3]))) ^ ((((v_in[118]) & (b_in[6])) ^ ((v_in[119]) & (b_in[5]))) ^ ((v_in[117]) & (b_in[7])))) ^ (((((v_in[2]) ^ (v_in[123])) & (b_in[1])) ^ (((v_in[1]) ^ (v_in[122])) & (b_in[2]))) ^ (((v_in[3]) ^ (v_in[124])) & (b_in[0])))); |
assign v_out[110] = (v_in[5]) ^ ((v_in[0]) ^ (v_in[126])); |
assign z_out[110] = ((((z_in[110]) ^ ((v_in[110]) & (b_in[15]))) ^ (((v_in[111]) & (b_in[14])) ^ ((v_in[112]) & (b_in[13])))) ^ (((((v_in[114]) & (b_in[11])) ^ ((v_in[115]) & (b_in[10]))) ^ ((v_in[113]) & (b_in[12]))) ^ (((v_in[116]) & (b_in[9])) ^ ((v_in[117]) & (b_in[8]))))) ^ ((((((v_in[0]) ^ (v_in[121])) & (b_in[4])) ^ (((v_in[1]) ^ (v_in[122])) & (b_in[3]))) ^ ((((v_in[119]) & (b_in[6])) ^ ((v_in[120]) & (b_in[5]))) ^ ((v_in[118]) & (b_in[7])))) ^ (((((v_in[3]) ^ (v_in[124])) & (b_in[1])) ^ (((v_in[2]) ^ (v_in[123])) & (b_in[2]))) ^ (((v_in[4]) ^ (v_in[125])) & (b_in[0])))); |
assign v_out[111] = (v_in[6]) ^ ((v_in[1]) ^ ((v_in[0]) ^ (v_in[127]))); |
assign z_out[111] = ((((z_in[111]) ^ ((v_in[111]) & (b_in[15]))) ^ (((v_in[112]) & (b_in[14])) ^ ((v_in[113]) & (b_in[13])))) ^ (((((v_in[115]) & (b_in[11])) ^ ((v_in[116]) & (b_in[10]))) ^ ((v_in[114]) & (b_in[12]))) ^ (((v_in[117]) & (b_in[9])) ^ ((v_in[118]) & (b_in[8]))))) ^ ((((((v_in[1]) ^ (v_in[122])) & (b_in[4])) ^ (((v_in[2]) ^ (v_in[123])) & (b_in[3]))) ^ ((((v_in[0]) ^ (v_in[121])) & (b_in[5])) ^ (((v_in[120]) & (b_in[6])) ^ ((v_in[119]) & (b_in[7]))))) ^ (((((v_in[4]) ^ (v_in[125])) & (b_in[1])) ^ (((v_in[3]) ^ (v_in[124])) & (b_in[2]))) ^ ((((v_in[0]) ^ (v_in[5])) ^ (v_in[126])) & (b_in[0])))); |
assign v_out[112] = (v_in[7]) ^ ((v_in[2]) ^ ((v_in[1]) ^ (v_in[0]))); |
assign z_out[112] = ((((z_in[112]) ^ ((v_in[112]) & (b_in[15]))) ^ ((((v_in[114]) & (b_in[13])) ^ ((v_in[113]) & (b_in[14]))) ^ ((v_in[115]) & (b_in[12])))) ^ (((((v_in[117]) & (b_in[10])) ^ ((v_in[118]) & (b_in[9]))) ^ ((v_in[116]) & (b_in[11]))) ^ (((v_in[119]) & (b_in[8])) ^ ((v_in[120]) & (b_in[7]))))) ^ (((((((v_in[3]) ^ (v_in[124])) & (b_in[3])) ^ (((v_in[2]) ^ (v_in[123])) & (b_in[4]))) ^ (((v_in[4]) ^ (v_in[125])) & (b_in[2]))) ^ ((((v_in[1]) ^ (v_in[122])) & (b_in[5])) ^ (((v_in[0]) ^ (v_in[121])) & (b_in[6])))) ^ ((((v_in[0]) ^ ((v_in[5]) ^ (v_in[126]))) & (b_in[1])) ^ ((((v_in[1]) ^ (v_in[6])) ^ ((v_in[0]) ^ (v_in[127]))) & (b_in[0])))); |
assign v_out[113] = (v_in[8]) ^ ((v_in[3]) ^ ((v_in[2]) ^ (v_in[1]))); |
assign z_out[113] = ((((z_in[113]) ^ ((v_in[113]) & (b_in[15]))) ^ ((((v_in[115]) & (b_in[13])) ^ ((v_in[114]) & (b_in[14]))) ^ ((v_in[116]) & (b_in[12])))) ^ (((((v_in[118]) & (b_in[10])) ^ ((v_in[119]) & (b_in[9]))) ^ ((v_in[117]) & (b_in[11]))) ^ (((v_in[120]) & (b_in[8])) ^ (((v_in[0]) ^ (v_in[121])) & (b_in[7]))))) ^ ((((((v_in[4]) ^ (v_in[125])) & (b_in[3])) ^ ((((v_in[5]) ^ (v_in[0])) ^ (v_in[126])) & (b_in[2]))) ^ (((((v_in[2]) ^ (v_in[123])) & (b_in[5])) ^ (((v_in[3]) ^ (v_in[124])) & (b_in[4]))) ^ (((v_in[1]) ^ (v_in[122])) & (b_in[6])))) ^ (((((v_in[1]) ^ (v_in[6])) ^ ((v_in[0]) ^ (v_in[127]))) & (b_in[1])) ^ ((((v_in[2]) ^ (v_in[7])) ^ ((v_in[1]) ^ (v_in[0]))) & (b_in[0])))); |
assign v_out[114] = (v_in[9]) ^ ((v_in[4]) ^ ((v_in[3]) ^ (v_in[2]))); |
assign z_out[114] = ((((z_in[114]) ^ ((v_in[114]) & (b_in[15]))) ^ ((((v_in[116]) & (b_in[13])) ^ ((v_in[115]) & (b_in[14]))) ^ ((v_in[117]) & (b_in[12])))) ^ (((((v_in[119]) & (b_in[10])) ^ ((v_in[120]) & (b_in[9]))) ^ ((v_in[118]) & (b_in[11]))) ^ ((((v_in[0]) ^ (v_in[121])) & (b_in[8])) ^ (((v_in[1]) ^ (v_in[122])) & (b_in[7]))))) ^ ((((((v_in[5]) ^ ((v_in[0]) ^ (v_in[126]))) & (b_in[3])) ^ ((((v_in[1]) ^ (v_in[6])) ^ ((v_in[0]) ^ (v_in[127]))) & (b_in[2]))) ^ (((((v_in[3]) ^ (v_in[124])) & (b_in[5])) ^ (((v_in[4]) ^ (v_in[125])) & (b_in[4]))) ^ (((v_in[2]) ^ (v_in[123])) & (b_in[6])))) ^ (((((v_in[2]) ^ (v_in[7])) ^ ((v_in[1]) ^ (v_in[0]))) & (b_in[1])) ^ ((((v_in[3]) ^ (v_in[8])) ^ ((v_in[2]) ^ (v_in[1]))) & (b_in[0])))); |
assign v_out[115] = (v_in[10]) ^ ((v_in[5]) ^ ((v_in[4]) ^ (v_in[3]))); |
assign z_out[115] = ((((z_in[115]) ^ ((v_in[115]) & (b_in[15]))) ^ ((((v_in[117]) & (b_in[13])) ^ ((v_in[116]) & (b_in[14]))) ^ ((v_in[118]) & (b_in[12])))) ^ (((((v_in[0]) ^ (v_in[121])) & (b_in[9])) ^ (((v_in[120]) & (b_in[10])) ^ ((v_in[119]) & (b_in[11])))) ^ ((((v_in[1]) ^ (v_in[122])) & (b_in[8])) ^ (((v_in[2]) ^ (v_in[123])) & (b_in[7]))))) ^ (((((((v_in[1]) ^ (v_in[6])) ^ ((v_in[0]) ^ (v_in[127]))) & (b_in[3])) ^ ((((v_in[2]) ^ (v_in[7])) ^ ((v_in[1]) ^ (v_in[0]))) & (b_in[2]))) ^ (((((v_in[0]) ^ (v_in[5])) ^ (v_in[126])) & (b_in[4])) ^ ((((v_in[4]) ^ (v_in[125])) & (b_in[5])) ^ (((v_in[3]) ^ (v_in[124])) & (b_in[6]))))) ^ (((((v_in[3]) ^ (v_in[8])) ^ ((v_in[2]) ^ (v_in[1]))) & (b_in[1])) ^ ((((v_in[4]) ^ (v_in[9])) ^ ((v_in[3]) ^ (v_in[2]))) & (b_in[0])))); |
assign v_out[116] = (v_in[11]) ^ ((v_in[6]) ^ ((v_in[5]) ^ (v_in[4]))); |
assign z_out[116] = ((((z_in[116]) ^ ((v_in[116]) & (b_in[15]))) ^ ((((v_in[118]) & (b_in[13])) ^ ((v_in[117]) & (b_in[14]))) ^ ((v_in[119]) & (b_in[12])))) ^ ((((((v_in[0]) ^ (v_in[121])) & (b_in[10])) ^ (((v_in[1]) ^ (v_in[122])) & (b_in[9]))) ^ ((v_in[120]) & (b_in[11]))) ^ ((((v_in[2]) ^ (v_in[123])) & (b_in[8])) ^ (((v_in[3]) ^ (v_in[124])) & (b_in[7]))))) ^ (((((((v_in[1]) ^ (v_in[6])) ^ ((v_in[0]) ^ (v_in[127]))) & (b_in[4])) ^ ((((v_in[2]) ^ (v_in[7])) ^ ((v_in[1]) ^ (v_in[0]))) & (b_in[3]))) ^ ((((v_in[0]) ^ ((v_in[5]) ^ (v_in[126]))) & (b_in[5])) ^ (((v_in[4]) ^ (v_in[125])) & (b_in[6])))) ^ ((((((v_in[4]) ^ (v_in[9])) ^ ((v_in[3]) ^ (v_in[2]))) & (b_in[1])) ^ ((((v_in[3]) ^ (v_in[8])) ^ ((v_in[2]) ^ (v_in[1]))) & (b_in[2]))) ^ ((((v_in[5]) ^ (v_in[10])) ^ ((v_in[4]) ^ (v_in[3]))) & (b_in[0])))); |
assign v_out[117] = (v_in[12]) ^ ((v_in[7]) ^ ((v_in[6]) ^ (v_in[5]))); |
assign z_out[117] = ((((z_in[117]) ^ ((v_in[117]) & (b_in[15]))) ^ ((((v_in[119]) & (b_in[13])) ^ ((v_in[118]) & (b_in[14]))) ^ ((v_in[120]) & (b_in[12])))) ^ ((((((v_in[1]) ^ (v_in[122])) & (b_in[10])) ^ (((v_in[2]) ^ (v_in[123])) & (b_in[9]))) ^ (((v_in[0]) ^ (v_in[121])) & (b_in[11]))) ^ ((((v_in[3]) ^ (v_in[124])) & (b_in[8])) ^ (((v_in[4]) ^ (v_in[125])) & (b_in[7]))))) ^ (((((((v_in[2]) ^ (v_in[7])) ^ ((v_in[1]) ^ (v_in[0]))) & (b_in[4])) ^ ((((v_in[3]) ^ (v_in[8])) ^ ((v_in[2]) ^ (v_in[1]))) & (b_in[3]))) ^ (((((v_in[1]) ^ (v_in[6])) ^ ((v_in[0]) ^ (v_in[127]))) & (b_in[5])) ^ ((((v_in[5]) ^ (v_in[0])) ^ (v_in[126])) & (b_in[6])))) ^ ((((((v_in[5]) ^ (v_in[10])) ^ ((v_in[4]) ^ (v_in[3]))) & (b_in[1])) ^ ((((v_in[4]) ^ (v_in[9])) ^ ((v_in[3]) ^ (v_in[2]))) & (b_in[2]))) ^ ((((v_in[6]) ^ (v_in[11])) ^ ((v_in[5]) ^ (v_in[4]))) & (b_in[0])))); |
assign v_out[118] = (v_in[13]) ^ ((v_in[8]) ^ ((v_in[7]) ^ (v_in[6]))); |
assign z_out[118] = ((((z_in[118]) ^ (((v_in[118]) & (b_in[15])) ^ ((v_in[119]) & (b_in[14])))) ^ (((((v_in[0]) ^ (v_in[121])) & (b_in[12])) ^ ((v_in[120]) & (b_in[13]))) ^ (((v_in[1]) ^ (v_in[122])) & (b_in[11])))) ^ ((((((v_in[3]) ^ (v_in[124])) & (b_in[9])) ^ (((v_in[4]) ^ (v_in[125])) & (b_in[8]))) ^ (((v_in[2]) ^ (v_in[123])) & (b_in[10]))) ^ (((v_in[5]) ^ ((v_in[0]) ^ (v_in[126]))) & (b_in[7])))) ^ (((((((v_in[3]) ^ (v_in[8])) ^ ((v_in[2]) ^ (v_in[1]))) & (b_in[4])) ^ ((((v_in[4]) ^ (v_in[9])) ^ ((v_in[3]) ^ (v_in[2]))) & (b_in[3]))) ^ (((((v_in[2]) ^ (v_in[7])) ^ ((v_in[1]) ^ (v_in[0]))) & (b_in[5])) ^ ((((v_in[1]) ^ (v_in[6])) ^ ((v_in[0]) ^ (v_in[127]))) & (b_in[6])))) ^ ((((((v_in[6]) ^ (v_in[11])) ^ ((v_in[5]) ^ (v_in[4]))) & (b_in[1])) ^ ((((v_in[5]) ^ (v_in[10])) ^ ((v_in[4]) ^ (v_in[3]))) & (b_in[2]))) ^ ((((v_in[7]) ^ (v_in[12])) ^ ((v_in[6]) ^ (v_in[5]))) & (b_in[0])))); |
assign v_out[119] = (v_in[14]) ^ ((v_in[9]) ^ ((v_in[8]) ^ (v_in[7]))); |
assign z_out[119] = ((((z_in[119]) ^ (((v_in[119]) & (b_in[15])) ^ ((v_in[120]) & (b_in[14])))) ^ (((((v_in[1]) ^ (v_in[122])) & (b_in[12])) ^ (((v_in[0]) ^ (v_in[121])) & (b_in[13]))) ^ (((v_in[2]) ^ (v_in[123])) & (b_in[11])))) ^ ((((((v_in[0]) ^ (v_in[5])) ^ (v_in[126])) & (b_in[8])) ^ ((((v_in[4]) ^ (v_in[125])) & (b_in[9])) ^ (((v_in[3]) ^ (v_in[124])) & (b_in[10])))) ^ ((((v_in[1]) ^ (v_in[6])) ^ ((v_in[0]) ^ (v_in[127]))) & (b_in[7])))) ^ (((((((v_in[4]) ^ (v_in[9])) ^ ((v_in[3]) ^ (v_in[2]))) & (b_in[4])) ^ ((((v_in[5]) ^ (v_in[10])) ^ ((v_in[4]) ^ (v_in[3]))) & (b_in[3]))) ^ (((((v_in[3]) ^ (v_in[8])) ^ ((v_in[2]) ^ (v_in[1]))) & (b_in[5])) ^ ((((v_in[2]) ^ (v_in[7])) ^ ((v_in[1]) ^ (v_in[0]))) & (b_in[6])))) ^ ((((((v_in[7]) ^ (v_in[12])) ^ ((v_in[6]) ^ (v_in[5]))) & (b_in[1])) ^ ((((v_in[6]) ^ (v_in[11])) ^ ((v_in[5]) ^ (v_in[4]))) & (b_in[2]))) ^ ((((v_in[8]) ^ (v_in[13])) ^ ((v_in[7]) ^ (v_in[6]))) & (b_in[0])))); |
assign v_out[120] = (v_in[15]) ^ ((v_in[10]) ^ ((v_in[9]) ^ (v_in[8]))); |
assign z_out[120] = (((((z_in[120]) ^ ((v_in[120]) & (b_in[15]))) ^ (((v_in[0]) ^ (v_in[121])) & (b_in[14]))) ^ (((((v_in[2]) ^ (v_in[123])) & (b_in[12])) ^ (((v_in[1]) ^ (v_in[122])) & (b_in[13]))) ^ (((v_in[3]) ^ (v_in[124])) & (b_in[11])))) ^ (((((v_in[0]) ^ ((v_in[5]) ^ (v_in[126]))) & (b_in[9])) ^ (((v_in[4]) ^ (v_in[125])) & (b_in[10]))) ^ (((((v_in[1]) ^ (v_in[6])) ^ ((v_in[0]) ^ (v_in[127]))) & (b_in[8])) ^ ((((v_in[2]) ^ (v_in[7])) ^ ((v_in[1]) ^ (v_in[0]))) & (b_in[7]))))) ^ (((((((v_in[5]) ^ (v_in[10])) ^ ((v_in[4]) ^ (v_in[3]))) & (b_in[4])) ^ ((((v_in[6]) ^ (v_in[11])) ^ ((v_in[5]) ^ (v_in[4]))) & (b_in[3]))) ^ (((((v_in[4]) ^ (v_in[9])) ^ ((v_in[3]) ^ (v_in[2]))) & (b_in[5])) ^ ((((v_in[3]) ^ (v_in[8])) ^ ((v_in[2]) ^ (v_in[1]))) & (b_in[6])))) ^ ((((((v_in[8]) ^ (v_in[13])) ^ ((v_in[7]) ^ (v_in[6]))) & (b_in[1])) ^ ((((v_in[7]) ^ (v_in[12])) ^ ((v_in[6]) ^ (v_in[5]))) & (b_in[2]))) ^ ((((v_in[9]) ^ (v_in[14])) ^ ((v_in[8]) ^ (v_in[7]))) & (b_in[0])))); |
assign v_out[121] = (v_in[11]) ^ ((v_in[10]) ^ (v_in[9])); |
assign z_out[121] = ((((z_in[121]) ^ ((v_in[121]) & (b_in[15]))) ^ ((((v_in[123]) & (b_in[13])) ^ ((v_in[122]) & (b_in[14]))) ^ ((v_in[124]) & (b_in[12])))) ^ ((((((v_in[0]) ^ (v_in[1])) ^ (v_in[127])) & (b_in[9])) ^ ((((v_in[0]) ^ (v_in[126])) & (b_in[10])) ^ ((v_in[125]) & (b_in[11])))) ^ ((((v_in[1]) ^ (v_in[2])) ^ (v_in[0])) & (b_in[8])))) ^ (((((((v_in[4]) ^ (v_in[5])) ^ (v_in[3])) & (b_in[5])) ^ ((((v_in[5]) ^ (v_in[6])) ^ (v_in[4])) & (b_in[4]))) ^ (((((v_in[3]) ^ (v_in[4])) ^ (v_in[2])) & (b_in[6])) ^ ((((v_in[2]) ^ (v_in[3])) ^ (v_in[1])) & (b_in[7])))) ^ ((((((v_in[7]) ^ (v_in[8])) ^ (v_in[6])) & (b_in[2])) ^ ((((v_in[6]) ^ (v_in[7])) ^ (v_in[5])) & (b_in[3]))) ^ (((((v_in[8]) ^ (v_in[9])) ^ (v_in[7])) & (b_in[1])) ^ ((((v_in[9]) ^ (v_in[10])) ^ (v_in[8])) & (b_in[0]))))); |
assign v_out[122] = (v_in[12]) ^ ((v_in[11]) ^ (v_in[10])); |
assign z_out[122] = ((((z_in[122]) ^ ((v_in[122]) & (b_in[15]))) ^ ((((v_in[124]) & (b_in[13])) ^ ((v_in[123]) & (b_in[14]))) ^ ((v_in[125]) & (b_in[12])))) ^ (((((v_in[0]) ^ ((v_in[1]) ^ (v_in[127]))) & (b_in[10])) ^ (((v_in[0]) ^ (v_in[126])) & (b_in[11]))) ^ ((((v_in[1]) ^ ((v_in[2]) ^ (v_in[0]))) & (b_in[9])) ^ (((v_in[2]) ^ ((v_in[3]) ^ (v_in[1]))) & (b_in[8]))))) ^ ((((((v_in[5]) ^ ((v_in[6]) ^ (v_in[4]))) & (b_in[5])) ^ (((v_in[6]) ^ ((v_in[7]) ^ (v_in[5]))) & (b_in[4]))) ^ ((((v_in[4]) ^ ((v_in[5]) ^ (v_in[3]))) & (b_in[6])) ^ (((v_in[3]) ^ ((v_in[4]) ^ (v_in[2]))) & (b_in[7])))) ^ (((((v_in[8]) ^ ((v_in[9]) ^ (v_in[7]))) & (b_in[2])) ^ (((v_in[7]) ^ ((v_in[8]) ^ (v_in[6]))) & (b_in[3]))) ^ ((((v_in[9]) ^ ((v_in[10]) ^ (v_in[8]))) & (b_in[1])) ^ ((((v_in[10]) ^ (v_in[11])) ^ (v_in[9])) & (b_in[0]))))); |
assign v_out[123] = (v_in[13]) ^ ((v_in[12]) ^ (v_in[11])); |
assign z_out[123] = ((((z_in[123]) ^ (((v_in[123]) & (b_in[15])) ^ ((v_in[124]) & (b_in[14])))) ^ (((v_in[125]) & (b_in[13])) ^ (((v_in[0]) ^ (v_in[126])) & (b_in[12])))) ^ ((((((v_in[2]) ^ (v_in[1])) ^ (v_in[0])) & (b_in[10])) ^ ((((v_in[1]) ^ (v_in[0])) ^ (v_in[127])) & (b_in[11]))) ^ (((((v_in[3]) ^ (v_in[2])) ^ (v_in[1])) & (b_in[9])) ^ ((((v_in[4]) ^ (v_in[3])) ^ (v_in[2])) & (b_in[8]))))) ^ (((((((v_in[7]) ^ (v_in[6])) ^ (v_in[5])) & (b_in[5])) ^ ((((v_in[8]) ^ (v_in[7])) ^ (v_in[6])) & (b_in[4]))) ^ (((((v_in[6]) ^ (v_in[5])) ^ (v_in[4])) & (b_in[6])) ^ ((((v_in[5]) ^ (v_in[4])) ^ (v_in[3])) & (b_in[7])))) ^ ((((((v_in[10]) ^ (v_in[9])) ^ (v_in[8])) & (b_in[2])) ^ ((((v_in[9]) ^ (v_in[8])) ^ (v_in[7])) & (b_in[3]))) ^ ((((v_in[10]) ^ ((v_in[11]) ^ (v_in[9]))) & (b_in[1])) ^ ((((v_in[11]) ^ (v_in[12])) ^ (v_in[10])) & (b_in[0]))))); |
assign v_out[124] = (v_in[14]) ^ ((v_in[13]) ^ (v_in[12])); |
assign z_out[124] = ((((z_in[124]) ^ (((v_in[124]) & (b_in[15])) ^ ((v_in[125]) & (b_in[14])))) ^ ((((v_in[0]) ^ (v_in[126])) & (b_in[13])) ^ (((v_in[1]) ^ ((v_in[0]) ^ (v_in[127]))) & (b_in[12])))) ^ (((((v_in[3]) ^ ((v_in[2]) ^ (v_in[1]))) & (b_in[10])) ^ (((v_in[2]) ^ ((v_in[1]) ^ (v_in[0]))) & (b_in[11]))) ^ ((((v_in[4]) ^ ((v_in[3]) ^ (v_in[2]))) & (b_in[9])) ^ (((v_in[5]) ^ ((v_in[4]) ^ (v_in[3]))) & (b_in[8]))))) ^ ((((((v_in[8]) ^ ((v_in[7]) ^ (v_in[6]))) & (b_in[5])) ^ (((v_in[9]) ^ ((v_in[8]) ^ (v_in[7]))) & (b_in[4]))) ^ ((((v_in[7]) ^ ((v_in[6]) ^ (v_in[5]))) & (b_in[6])) ^ (((v_in[6]) ^ ((v_in[5]) ^ (v_in[4]))) & (b_in[7])))) ^ ((((((v_in[11]) ^ (v_in[10])) ^ (v_in[9])) & (b_in[2])) ^ (((v_in[10]) ^ ((v_in[9]) ^ (v_in[8]))) & (b_in[3]))) ^ ((((v_in[11]) ^ ((v_in[12]) ^ (v_in[10]))) & (b_in[1])) ^ ((((v_in[12]) ^ (v_in[13])) ^ (v_in[11])) & (b_in[0]))))); |
assign v_out[125] = (v_in[15]) ^ ((v_in[14]) ^ (v_in[13])); |
assign z_out[125] = (((((z_in[125]) ^ ((v_in[125]) & (b_in[15]))) ^ (((v_in[0]) ^ (v_in[126])) & (b_in[14]))) ^ (((((v_in[0]) ^ (v_in[1])) ^ (v_in[127])) & (b_in[13])) ^ ((((v_in[1]) ^ (v_in[2])) ^ (v_in[0])) & (b_in[12])))) ^ ((((((v_in[3]) ^ (v_in[4])) ^ (v_in[2])) & (b_in[10])) ^ ((((v_in[2]) ^ (v_in[3])) ^ (v_in[1])) & (b_in[11]))) ^ (((((v_in[4]) ^ (v_in[5])) ^ (v_in[3])) & (b_in[9])) ^ ((((v_in[5]) ^ (v_in[6])) ^ (v_in[4])) & (b_in[8]))))) ^ (((((((v_in[8]) ^ (v_in[9])) ^ (v_in[7])) & (b_in[5])) ^ ((((v_in[9]) ^ (v_in[10])) ^ (v_in[8])) & (b_in[4]))) ^ (((((v_in[7]) ^ (v_in[8])) ^ (v_in[6])) & (b_in[6])) ^ ((((v_in[6]) ^ (v_in[7])) ^ (v_in[5])) & (b_in[7])))) ^ ((((((v_in[12]) ^ (v_in[11])) ^ (v_in[10])) & (b_in[2])) ^ (((v_in[11]) ^ ((v_in[10]) ^ (v_in[9]))) & (b_in[3]))) ^ ((((v_in[12]) ^ ((v_in[13]) ^ (v_in[11]))) & (b_in[1])) ^ ((((v_in[13]) ^ (v_in[14])) ^ (v_in[12])) & (b_in[0]))))); |
assign v_out[126] = (v_in[15]) ^ (v_in[14]); |
assign z_out[126] = (((((z_in[126]) ^ ((v_in[126]) & (b_in[15]))) ^ (((v_in[0]) ^ (v_in[127])) & (b_in[14]))) ^ ((((v_in[1]) ^ (v_in[0])) & (b_in[13])) ^ (((v_in[2]) ^ (v_in[1])) & (b_in[12])))) ^ (((((v_in[4]) ^ (v_in[3])) & (b_in[10])) ^ (((v_in[3]) ^ (v_in[2])) & (b_in[11]))) ^ ((((v_in[5]) ^ (v_in[4])) & (b_in[9])) ^ (((v_in[6]) ^ (v_in[5])) & (b_in[8]))))) ^ ((((((v_in[9]) ^ (v_in[8])) & (b_in[5])) ^ (((v_in[10]) ^ (v_in[9])) & (b_in[4]))) ^ ((((v_in[8]) ^ (v_in[7])) & (b_in[6])) ^ (((v_in[7]) ^ (v_in[6])) & (b_in[7])))) ^ (((((v_in[12]) ^ (v_in[11])) & (b_in[2])) ^ (((v_in[11]) ^ (v_in[10])) & (b_in[3]))) ^ ((((v_in[13]) ^ (v_in[12])) & (b_in[1])) ^ (((v_in[14]) ^ (v_in[13])) & (b_in[0]))))); |
assign v_out[127] = v_in[15]; |
assign z_out[127] = ((((z_in[127]) ^ ((v_in[127]) & (b_in[15]))) ^ (((v_in[0]) & (b_in[14])) ^ ((v_in[1]) & (b_in[13])))) ^ ((((v_in[3]) & (b_in[11])) ^ ((v_in[2]) & (b_in[12]))) ^ (((v_in[4]) & (b_in[10])) ^ ((v_in[5]) & (b_in[9]))))) ^ ((((((v_in[9]) & (b_in[5])) ^ ((v_in[8]) & (b_in[6]))) ^ ((v_in[10]) & (b_in[4]))) ^ (((v_in[7]) & (b_in[7])) ^ ((v_in[6]) & (b_in[8])))) ^ ((((v_in[12]) & (b_in[2])) ^ ((v_in[11]) & (b_in[3]))) ^ (((v_in[13]) & (b_in[1])) ^ ((v_in[14]) & (b_in[0]))))); |
endmodule |
/trunk/env/test_bench.v
0,0 → 1,227
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Test Bench for GCM-AES //// |
//// //// |
//// //// |
//// Author: Tariq Bashir Ahmad and Guy Hutchison //// |
//// tariq.bashir@gmail.com //// |
//// ghutchis@gmail.com //// |
//// //// |
//// Downloaded from: http://www.opencores.org/ //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Copyright (C) 2010 Tariq Bashir Ahmad and //// |
//// Guy Hutchison //// |
//// http://www.ecs.umass.edu/~tbashir //// |
//// //// |
//// //// |
//// This source file may be used and distributed without //// |
//// restriction provided that this copyright statement is not //// |
//// removed from the file and that any derivative work contains //// |
//// the original copyright notice and the associated disclaimer.//// |
//// //// |
//// THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY //// |
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED //// |
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS //// |
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR //// |
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, //// |
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES //// |
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE //// |
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR //// |
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF //// |
//// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT //// |
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT //// |
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //// |
//// POSSIBILITY OF SUCH DAMAGE. //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
|
|
|
`timescale 1ns / 1ps |
`define SIZE 128 |
|
module test_bench; |
|
// Inputs |
reg clk; |
reg rst; |
reg [`SIZE-1:0] dii_data; |
reg [3:0] dii_data_size; |
reg dii_data_vld; |
reg dii_data_type; |
reg dii_last_word; |
|
reg [`SIZE-1:0] cii_K; |
reg cii_ctl_vld; |
reg cii_IV_vld; |
|
|
// Outputs |
wire dii_data_not_ready; |
wire [`SIZE-1:0] Out_data; |
wire Out_vld; |
wire Tag_vld; |
wire [3:0] Out_data_size; |
wire Out_last_word; |
|
|
initial |
begin |
// Initialize Inputs |
clk = 0; |
cii_ctl_vld = 1'b0; |
cii_IV_vld = 1'b0; |
dii_data_vld = 1'b0; |
dii_last_word = 1'b0; |
dii_data_type = 1'b0; |
dii_data = 0; |
dii_data_size = 0; |
cii_K = 0; |
|
|
rst = 0; |
repeat(1) @(posedge clk); |
rst = 1; |
repeat(10) @(posedge clk); |
rst = 0; |
|
|
@(negedge clk); |
|
cii_ctl_vld = 1'b1; |
cii_K = 128'hfeffe9928665731c6d6a8f9467308308; // {`SIZE{1'b0}}; //key |
|
|
@(negedge clk); |
cii_ctl_vld = 1'b0; |
|
|
cii_IV_vld = 1'b1; |
dii_data = 128'hcafebabefacedbaddecaf888_00000001; // {{(`SIZE-1){1'b0}},1'b1}; //IV (128 bits) |
|
|
|
while(dii_data_not_ready) |
@(negedge clk); |
|
cii_IV_vld = 1'b0; |
dii_data_size = 4'd15; //SIZE IS SET HERE |
dii_data_vld = 1'b1; // AAD |
dii_data = 128'hfeedfacedeadbeeffeedfacedeadbeef; // {`SIZE{1'b1}}; |
dii_data_type = 1'b1; //type = AAD |
dii_last_word = 1'b0; //last word is false |
|
@(negedge clk); |
dii_data_vld = 1'b0; |
|
|
while(dii_data_not_ready) |
@(negedge clk); |
|
dii_data_vld = 1'b1; |
dii_data_size = 4'd3; //SIZE IS SET HERE |
dii_data = 32'habaddad2;//{`SIZE{1'b1}}; |
dii_data_type = 1'b1; //type = AAD |
dii_last_word = 1'b0; //last word is false |
|
@(negedge clk); |
dii_data_vld = 1'b0; |
|
|
while(dii_data_not_ready) |
@(negedge clk); |
|
dii_data_vld = 1'b1; |
dii_data_size = 4'd15; //SIZE IS SET HERE |
dii_data = 128'hd9313225f88406e5a55909c5aff5269a;//{`SIZE{1'b1}}; |
dii_data_type = 1'b0; //type = PT |
dii_last_word = 1'b0; //last word is true |
|
@(negedge clk); |
dii_data_vld = 1'b0; |
|
|
while(dii_data_not_ready) |
@(negedge clk); |
|
dii_data_vld = 1'b1; |
dii_data_size = 4'd15; //SIZE IS SET HERE |
dii_data = 128'h86a7a9531534f7da2e4c303d8a318a72;//{`SIZE{1'b1}}; |
dii_data_type = 1'b0; //type = PT |
dii_last_word = 1'b0; //last word is true |
|
@(negedge clk); |
dii_data_vld = 1'b0; |
|
while(dii_data_not_ready) |
@(negedge clk); |
|
dii_data_vld = 1'b1; |
dii_data_size = 4'd15; //SIZE IS SET HERE |
dii_data = 128'h1c3c0c95956809532fcf0e2449a6b525;//{`SIZE{1'b1}}; |
dii_data_type = 1'b0; //type = PT |
dii_last_word = 1'b0; //last word is true |
|
@(negedge clk); |
dii_data_vld = 1'b0; |
|
|
while(dii_data_not_ready) |
@(negedge clk); |
|
dii_data_vld = 1'b1; |
dii_data_size = 4'd11; //SIZE IS SET HERE |
dii_data = 128'hb16aedf5aa0de657ba637b39;//{`SIZE{1'b1}}; |
dii_data_type = 1'b0; //type = PT |
dii_last_word = 1'b1; //last word is true |
|
@(negedge clk); |
dii_data_vld = 1'b0; |
|
end |
|
|
|
always |
#7 clk = ~clk; |
|
|
|
|
gcm_aes_v0 uut ( |
.clk(clk), |
.rst(rst), |
.dii_data(dii_data), |
.dii_data_size(dii_data_size), |
.dii_data_vld(dii_data_vld), |
.dii_data_type(dii_data_type), |
.dii_data_not_ready(dii_data_not_ready), |
.dii_last_word(dii_last_word), |
.cii_K(cii_K), |
.cii_ctl_vld(cii_ctl_vld), |
.cii_IV_vld(cii_IV_vld), |
.Out_data(Out_data), |
.Out_vld(Out_vld), |
.Tag_vld(Tag_vld), |
.Out_data_size(Out_data_size), |
.Out_last_word(Out_last_word) |
); |
|
|
|
initial |
begin |
// $vcdpluson; |
#5000; |
$stop; |
end |
|
initial |
$monitor($time,":DNR = %b, Out_data = %h, Out_vld = %b, Tag_vld = %b, Out_data_size=%d, Out_last_word=%d\n",dii_data_not_ready,Out_data,Out_vld,Tag_vld,Out_data_size,Out_last_word); |
|
|
endmodule |
|
|