mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Commented sha instructions
This commit is contained in:
		
							parent
							
								
									ac153bc4ed
								
							
						
					
					
						commit
						b0d1344121
					
				| @ -37,24 +37,24 @@ module sha256 ( | |||||||
|    // sha256{sig0/sig1/sum0/sum1} select shifted operands for 32-bit xor3 and then sign-extend
 |    // sha256{sig0/sig1/sum0/sum1} select shifted operands for 32-bit xor3 and then sign-extend
 | ||||||
| 
 | 
 | ||||||
|    // sha256sig0
 |    // sha256sig0
 | ||||||
|    assign x[0][0] = {A[6:0], A[31:7]}; |    assign x[0][0] = {A[6:0], A[31:7]};    // ror 7
 | ||||||
|    assign x[0][1] = {A[17:0], A[31:18]}; |    assign x[0][1] = {A[17:0], A[31:18]};  // ror 18
 | ||||||
|    assign x[0][2] = {3'b0, A[31:3]}; |    assign x[0][2] = {3'b0, A[31:3]};      // >> 3
 | ||||||
| 
 | 
 | ||||||
|    // sha256sig1
 |    // sha256sig1
 | ||||||
|    assign x[1][0] = {A[16:0], A[31:17]}; |    assign x[1][0] = {A[16:0], A[31:17]};  // ror 17
 | ||||||
|    assign x[1][1] = {A[18:0], A[31:19]}; |    assign x[1][1] = {A[18:0], A[31:19]};  // ror 19
 | ||||||
|    assign x[1][2] = {10'b0, A[31:10]}; |    assign x[1][2] = {10'b0, A[31:10]};    // >> 10
 | ||||||
| 
 | 
 | ||||||
|    // sha256sum0
 |    // sha256sum0
 | ||||||
|    assign x[2][0] = {A[1:0],  A[31:2]}; |    assign x[2][0] = {A[1:0],  A[31:2]};   // ror 2
 | ||||||
|    assign x[2][1] = {A[12:0], A[31:13]}; |    assign x[2][1] = {A[12:0], A[31:13]};  // ror 13
 | ||||||
|    assign x[2][2] = {A[21:0], A[31:22]}; |    assign x[2][2] = {A[21:0], A[31:22]};  // ror 22
 | ||||||
| 
 | 
 | ||||||
|    // sha256sum1
 |    // sha256sum1
 | ||||||
|    assign x[3][0] = {A[5:0], A[31:6]}; |    assign x[3][0] = {A[5:0], A[31:6]};    // ror 6
 | ||||||
|    assign x[3][1] ={A[10:0], A[31:11]}; |    assign x[3][1] ={ A[10:0], A[31:11]};  // ror 11
 | ||||||
|    assign x[3][2] = {A[24:0], A[31:25]}; |    assign x[3][2] = {A[24:0], A[31:25]};  // ror 25
 | ||||||
| 
 | 
 | ||||||
|    // 32-bit muxes to select inputs to xor3 for sha256 
 |    // 32-bit muxes to select inputs to xor3 for sha256 
 | ||||||
|    assign y[0] = x[ZKNHSelect[1:0]][0]; |    assign y[0] = x[ZKNHSelect[1:0]][0]; | ||||||
|  | |||||||
| @ -34,29 +34,30 @@ module sha512_32 ( | |||||||
|    logic [31:0] x[4][3]; |    logic [31:0] x[4][3]; | ||||||
|    logic [31:0] y[3]; |    logic [31:0] y[3]; | ||||||
| 
 | 
 | ||||||
|  |    // rotate/shift a 64-bit value contained in {B, A} and select 32 bits
 | ||||||
|    // sha512{sig0h/sig0l/sig1h/sig1l/sum0r/sum1r} select shifted operands for 32-bit xor
 |    // sha512{sig0h/sig0l/sig1h/sig1l/sum0r/sum1r} select shifted operands for 32-bit xor
 | ||||||
| 
 | 
 | ||||||
|    // The l flavors differ from h by using low bits of B instead of zeros in x[0/1][2]
 |    // The l flavors differ from h by using low bits of B instead of zeros in x[0/1][2]
 | ||||||
| 
 | 
 | ||||||
|    // sha512sig0h/l
 |    // sha512sig0h/l
 | ||||||
|    assign x[0][0] = {B[0], A[31:1]}; |    assign x[0][0] = {B[0], A[31:1]};                           // ror 1
 | ||||||
|    assign x[0][1] = {B[7:0], A[31:8]};  |    assign x[0][1] = {B[7:0], A[31:8]};                         // ror 8
 | ||||||
|    assign x[0][2] = {B[6:0] & {7{ZKNHSelect[0]}}, A[31:7]}; |    assign x[0][2] = {B[6:0] & {7{ZKNHSelect[0]}}, A[31:7]};    // ror/srl 7
 | ||||||
| 
 | 
 | ||||||
|    // sha512sig1h/l
 |    // sha512sig1h/l
 | ||||||
|    assign x[1][0] = {A[28:0], B[31:29]}; |    assign x[1][0] = {A[28:0], B[31:29]};                       // ror 61
 | ||||||
|    assign x[1][1] = {B[18:0], A[31:19]}; |    assign x[1][1] = {B[18:0], A[31:19]};                       // ror 19
 | ||||||
|    assign x[1][2] = {B[5:0] & {6{ZKNHSelect[0]}}, A[31:6]};   |    assign x[1][2] = {B[5:0] & {6{ZKNHSelect[0]}}, A[31:6]};    // ror/srl 6
 | ||||||
| 
 | 
 | ||||||
|    // sha512sum0r
 |    // sha512sum0r
 | ||||||
|    assign x[2][0] = {A[6:0], B[31:7]}; |    assign x[2][0] = {A[6:0], B[31:7]};                         // ror 39
 | ||||||
|    assign x[2][1] = {A[1:0], B[31:2]}; |    assign x[2][1] = {A[1:0], B[31:2]};                         // ror 34
 | ||||||
|    assign x[2][2] = {B[27:0], A[31:28]}; |    assign x[2][2] = {B[27:0], A[31:28]};                       // ror 28
 | ||||||
| 
 | 
 | ||||||
|    // sha512sum1r
 |    // sha512sum1r
 | ||||||
|    assign x[3][0] = {A[8:0], B[31:9]};  |    assign x[3][0] = {A[8:0], B[31:9]};                         // ror 41
 | ||||||
|    assign x[3][1] = {B[13:0], A[31:14]}; |    assign x[3][1] = {B[13:0], A[31:14]};                       // ror 14
 | ||||||
|    assign x[3][2] = {B[17:0], A[31:18]};  |    assign x[3][2] = {B[17:0], A[31:18]};                       // ror 18
 | ||||||
| 
 | 
 | ||||||
|    // 32-bit muxes to select inputs to xor6 for sha512
 |    // 32-bit muxes to select inputs to xor6 for sha512
 | ||||||
|    assign y[0] = x[ZKNHSelect[2:1]][0]; |    assign y[0] = x[ZKNHSelect[2:1]][0]; | ||||||
|  | |||||||
| @ -34,27 +34,27 @@ module sha512_64 ( | |||||||
|    logic [63:0] x[4][3]; |    logic [63:0] x[4][3]; | ||||||
|    logic [63:0] y[3]; |    logic [63:0] y[3]; | ||||||
| 
 | 
 | ||||||
|    // sha512{sig0/sig1/sum0/sum1} select shifted operands for 64-bit xor3
 |    // sha512{sig0/sig1/sum0/sum1} select rotated/shifted operands for 64-bit xor3
 | ||||||
| 
 | 
 | ||||||
|    // sha512sig0
 |    // sha512sig0
 | ||||||
|    assign x[0][0] = {A[0],   A[63:1]}; |    assign x[0][0] = {A[0],   A[63:1]};    // ror 1
 | ||||||
|    assign x[0][1] = {A[7:0], A[63:8]}; |    assign x[0][1] = {A[7:0], A[63:8]};    // ror 8
 | ||||||
|    assign x[0][2] = A >> 7; |    assign x[0][2] = {7'b0,   A[63:7]};    // >> 7
 | ||||||
| 
 | 
 | ||||||
|    // sha512sig1
 |    // sha512sig1
 | ||||||
|    assign x[1][0] = {A[18:0], A[63:19]}; |    assign x[1][0] = {A[18:0], A[63:19]};  // ror 19
 | ||||||
|    assign x[1][1] = {A[60:0], A[63:61]}; |    assign x[1][1] = {A[60:0], A[63:61]};  // ror 61
 | ||||||
|    assign x[1][2] = A >> 6; |    assign x[1][2] = {6'b0,    A[63:6]};   // >> 6
 | ||||||
| 
 | 
 | ||||||
|    // sha512sum0
 |    // sha512sum0
 | ||||||
|    assign x[2][0] = {A[27:0], A[63:28]}; |    assign x[2][0] = {A[27:0], A[63:28]};  // ror 28
 | ||||||
|    assign x[2][1] = {A[33:0], A[63:34]}; |    assign x[2][1] = {A[33:0], A[63:34]};  // ror 34
 | ||||||
|    assign x[2][2] = {A[38:0], A[63:39]}; |    assign x[2][2] = {A[38:0], A[63:39]};  // ror 39
 | ||||||
| 
 | 
 | ||||||
|    // sha512sum1
 |    // sha512sum1
 | ||||||
|    assign x[3][0] = {A[13:0], A[63:14]}; |    assign x[3][0] = {A[13:0], A[63:14]};  // ror 14
 | ||||||
|    assign x[3][1] = {A[17:0], A[63:18]}; |    assign x[3][1] = {A[17:0], A[63:18]};  // ror 18
 | ||||||
|    assign x[3][2] = {A[40:0], A[63:41]}; |    assign x[3][2] = {A[40:0], A[63:41]};  // ror 41
 | ||||||
| 
 | 
 | ||||||
|    // 64-bit muxes to select inputs to xor3 for sha512
 |    // 64-bit muxes to select inputs to xor3 for sha512
 | ||||||
|    assign y[0] = x[ZKNHSelect[1:0]][0]; |    assign y[0] = x[ZKNHSelect[1:0]][0]; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user