URL
https://opencores.org/ocsvn/des/des/trunk
Subversion Repositories des
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 6 to Rev 7
- ↔ Reverse comparison
Rev 6 → Rev 7
/trunk/bench/verilog/des3_test_po.v
0,0 → 1,155
///////////////////////////////////////////////////////////////////// |
//// //// |
//// DES TEST BENCH //// |
//// //// |
//// Author: Rudolf Usselmann //// |
//// rudi@asics.ws //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Copyright (C) 2001 Rudolf Usselmann //// |
//// 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. //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
|
module test; |
|
reg clk; |
reg [319:0] x[512:0]; |
reg [319:0] tmp; |
reg [3:0] cnt; |
integer select; |
wire [63:0] desOut; |
wire [63:0] des_in; |
wire [63:0] exp_out_d; |
wire [55:0] key1; |
wire [55:0] key2; |
wire [55:0] key3; |
integer ZZZ; |
reg [63:0] des_exp[0:52]; |
integer decrypt; |
|
integer i; |
|
always @(posedge clk) |
des_exp[0] <= #1 exp_out_d; |
|
always @(posedge clk) |
for(i=0;i<51;i=i+1) |
des_exp[i+1] <= #1 des_exp[i]; |
|
initial |
begin |
$display("\n\n"); |
$display("*********************************************************"); |
$display("* Performance Optimized DES core simulation started ... *"); |
$display("*********************************************************"); |
$display("\n"); |
|
`ifdef WAVES |
$shm_open("waves"); |
$shm_probe("AS",test,"AS"); |
$display("INFO: Signal dump enabled ...\n\n"); |
`endif |
clk=0; |
ZZZ=0; |
|
// key1 key2 key3 Test data Out data |
x[0]=320'h0101010101010101_0101010101010101_0101010101010101_95F8A5E5DD31D900_8000000000000000; |
x[1]=320'h0101010101010101_0101010101010101_0101010101010101_9D64555A9A10B852_0000001000000000; |
x[2]=320'h3849674C2602319E_3849674C2602319E_3849674C2602319E_51454B582DDF440A_7178876E01F19B2A; |
x[3]=320'h04B915BA43FEB5B6_04B915BA43FEB5B6_04B915BA43FEB5B6_42FD443059577FA2_AF37FB421F8C4095; |
x[4]=320'h0123456789ABCDEF_0123456789ABCDEF_0123456789ABCDEF_736F6D6564617461_3D124FE2198BA318; |
x[5]=320'h0123456789ABCDEF_5555555555555555_0123456789ABCDEF_736F6D6564617461_FBABA1FF9D05E9B1; |
x[6]=320'h0123456789ABCDEF_5555555555555555_FEDCBA9876543210_736F6D6564617461_18d748e563620572; |
x[7]=320'h0352020767208217_8602876659082198_64056ABDFEA93457_7371756967676C65_c07d2a0fa566fa30; |
x[8]=320'h0101010101010101_8001010101010101_0101010101010102_0000000000000000_e6e6dd5b7e722974; |
x[9]=320'h1046103489988020_9107D01589190101_19079210981A0101_0000000000000000_e1ef62c332fe825b; |
|
|
|
// Wait for clock edge |
decrypt = 0; |
@(posedge clk); |
|
$display(""); |
$display("**************************************"); |
$display("* Starting DES Test ... *"); |
$display("**************************************"); |
$display(""); |
|
for(decrypt=0;decrypt<2;decrypt=decrypt+1) |
begin |
if(decrypt) $display("Running Encrypt test ...\n"); |
else $display("Running Decrypt test ...\n"); |
// Begin for loop |
for(select=0;select<(9+50);select=select+1) |
begin |
tmp=x[select]; |
@(posedge clk); |
if(select>50) |
if((des_exp[50] !== desOut) | (^des_exp[50]===1'bx) | (^desOut===1'bx)) |
$display("ERROR: (%0d) Expected %x Got %x", select-51, des_exp[50], desOut); |
else |
$display("PASS : (%0d) Expected %x Got %x", select-51, des_exp[50], desOut); |
|
//#2 $display("%h %h %h %h %h", key3, key2, key1, des_in, exp_out_d); |
end |
end |
|
$display(""); |
$display("**************************************"); |
$display("* DES Test done ... *"); |
$display("**************************************"); |
$display(""); |
|
|
$finish; |
end // end of initial |
|
// DES Clock |
always #50 clk=~clk; |
|
// Create the key w/o the parity bits |
assign #1 key1 = {tmp[319:313],tmp[311:305],tmp[303:297],tmp[295:289], |
tmp[287:281],tmp[279:273],tmp[271:265],tmp[263:257]}; |
|
assign #1 key2 = {tmp[255:249],tmp[247:241],tmp[239:233],tmp[231:225], |
tmp[223:217],tmp[215:209],tmp[207:201],tmp[199:193]}; |
|
assign #1 key3 = {tmp[191:185],tmp[183:177],tmp[175:169],tmp[167:161], |
tmp[159:153],tmp[151:145],tmp[143:137],tmp[135:129]}; |
|
assign #1 des_in = decrypt[0] ? tmp[63:0] : tmp[127:64]; |
assign exp_out_d = decrypt[0] ? tmp[127:64] : tmp[63:0]; |
|
// The DES instance |
des3 u0(.clk( clk ), |
.desOut( desOut ), |
.desIn( des_in ), |
.key1( key1 ), |
.key2( key2 ), |
.key3( key3 ), |
.decrypt( decrypt[0] ) |
); |
|
endmodule |
/trunk/bench/verilog/des3_test_ao.v
0,0 → 1,148
///////////////////////////////////////////////////////////////////// |
//// //// |
//// DES TEST BENCH //// |
//// //// |
//// Author: Rudolf Usselmann //// |
//// rudi@asics.ws //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Copyright (C) 2001 Rudolf Usselmann //// |
//// 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. //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
|
module test; |
|
reg clk; |
reg [319:0] x[512:0]; |
|
reg [319:0] tmp; |
|
reg [5:0] cnt; |
integer select; |
integer decrypt; |
wire [63:0] desOut; |
wire [63:0] des_in; |
wire [63:0] exp_out; |
wire [55:0] key1; |
wire [55:0] key2; |
wire [55:0] key3; |
integer ZZZ; |
|
initial |
begin |
$display("\n\n"); |
$display("*********************************************************"); |
$display("* Area Optimized DES core simulation started ... *"); |
$display("*********************************************************"); |
$display("\n"); |
|
`ifdef WAVES |
$shm_open("waves"); |
$shm_probe("AS",test,"AS"); |
$display("INFO: Signal dump enabled ...\n\n"); |
`endif |
|
clk=0; |
|
ZZZ=0; |
|
// key1 key2 key3 Test data Out data |
x[0]=320'h0101010101010101_0101010101010101_0101010101010101_95F8A5E5DD31D900_8000000000000000; |
x[1]=320'h0101010101010101_0101010101010101_0101010101010101_9D64555A9A10B852_0000001000000000; |
x[2]=320'h3849674C2602319E_3849674C2602319E_3849674C2602319E_51454B582DDF440A_7178876E01F19B2A; |
x[3]=320'h04B915BA43FEB5B6_04B915BA43FEB5B6_04B915BA43FEB5B6_42FD443059577FA2_AF37FB421F8C4095; |
x[4]=320'h0123456789ABCDEF_0123456789ABCDEF_0123456789ABCDEF_736F6D6564617461_3D124FE2198BA318; |
x[5]=320'h0123456789ABCDEF_5555555555555555_0123456789ABCDEF_736F6D6564617461_FBABA1FF9D05E9B1; |
x[6]=320'h0123456789ABCDEF_5555555555555555_FEDCBA9876543210_736F6D6564617461_18d748e563620572; |
x[7]=320'h0352020767208217_8602876659082198_64056ABDFEA93457_7371756967676C65_c07d2a0fa566fa30; |
x[8]=320'h0101010101010101_8001010101010101_0101010101010102_0000000000000000_e6e6dd5b7e722974; |
x[9]=320'h1046103489988020_9107D01589190101_19079210981A0101_0000000000000000_e1ef62c332fe825b; |
|
|
decrypt = 0; |
@(posedge clk); |
|
$display(""); |
$display("**************************************"); |
$display("* Starting DES Test ... *"); |
$display("**************************************"); |
$display(""); |
|
for(decrypt=0;decrypt<2;decrypt=decrypt+1) |
begin |
if(decrypt) $display("Running Encrypt test ...\n"); |
else $display("Running Decrypt test ...\n"); |
|
for(select=0;select<16;select=select+1) |
begin |
tmp=x[select]; |
for(cnt=0;cnt<47;cnt=cnt+1) @(posedge clk); |
|
#10; |
if((exp_out !== desOut) | (^exp_out===1'bx) | (^desOut===1'bx)) |
|
$display("ERROR: (%0d) Expected %x Got %x", select, exp_out, desOut); |
else |
$display("PASS : (%0d) Expected %x Got %x", select, exp_out, desOut); |
|
//#2 $display("%h %h %h %h %h", key3, key2, key1, des_in, exp_out); |
@(posedge clk); |
end |
end |
|
$display(""); |
$display("**************************************"); |
$display("* DES Test done ... *"); |
$display("**************************************"); |
$display(""); |
|
$finish; |
end // end of innitial |
|
always #100 clk=~clk; |
|
assign #1 key1 = {tmp[319:313],tmp[311:305],tmp[303:297],tmp[295:289], |
tmp[287:281],tmp[279:273],tmp[271:265],tmp[263:257]}; |
|
assign #1 key2 = {tmp[255:249],tmp[247:241],tmp[239:233],tmp[231:225], |
tmp[223:217],tmp[215:209],tmp[207:201],tmp[199:193]}; |
|
assign #1 key3 = {tmp[191:185],tmp[183:177],tmp[175:169],tmp[167:161], |
tmp[159:153],tmp[151:145],tmp[143:137],tmp[135:129]}; |
|
|
assign #1 des_in = decrypt[0] ? tmp[63:0] : tmp[127:64]; |
assign exp_out = decrypt[0] ? tmp[127:64] : tmp[63:0]; |
|
des3 u0( .clk( clk ), |
.desOut( desOut ), |
.desIn( des_in ), |
.key1( key1 ), |
.key2( key2 ), |
.key3( key3 ), |
.roundSel( cnt ), |
.decrypt( decrypt[0] ) |
); |
|
endmodule |
/trunk/bench/verilog/des_test_po.v
34,7 → 34,7
module test; |
|
reg clk; |
reg [191:0] x[128:0]; |
reg [191:0] x[512:0]; |
reg [191:0] tmp; |
reg [3:0] cnt; |
integer select; |
42,6 → 42,7
wire [63:0] des_in; |
wire [63:0] exp_out_d; |
wire [55:0] key; |
integer ZZZ; |
reg [63:0] des_exp[0:17]; |
integer decrypt; |
|
68,98 → 69,344
$display("INFO: Signal dump enabled ...\n\n"); |
`endif |
clk=0; |
ZZZ=0; |
|
// Key Test data Out data |
x[00]=192'h8001010101010101_0000000000000000_95A8D72813DAA94D; |
x[01]=192'h4001010101010101_0000000000000000_0EEC1487DD8C26D5; |
x[02]=192'h2001010101010101_0000000000000000_7AD16FFB79C45926; |
x[03]=192'h1001010101010101_0000000000000000_D3746294CA6A6CF3; |
x[04]=192'h0801010101010101_0000000000000000_809F5F873C1FD761; |
x[05]=192'h0401010101010101_0000000000000000_C02FAFFEC989D1FC; |
x[06]=192'h0201010101010101_0000000000000000_4615AA1D33E72F10; |
x[07]=192'h0180010101010101_0000000000000000_2055123350C00858; |
x[08]=192'h0140010101010101_0000000000000000_DF3B99D6577397C8; |
x[09]=192'h0120010101010101_0000000000000000_31FE17369B5288C9; |
x[10]=192'h0110010101010101_0000000000000000_DFDD3CC64DAE1642; |
x[11]=192'h0108010101010101_0000000000000000_178C83CE2B399D94; |
x[12]=192'h0104010101010101_0000000000000000_50F636324A9B7F80; |
x[13]=192'h0102010101010101_0000000000000000_A8468EE3BC18F06D; |
x[14]=192'h0101800101010101_0000000000000000_A2DC9E92FD3CDE92; |
x[15]=192'h0101400101010101_0000000000000000_CAC09F797D031287; |
x[16]=192'h0101200101010101_0000000000000000_90BA680B22AEB525; |
x[17]=192'h0101100101010101_0000000000000000_CE7A24F350E280B6; |
x[18]=192'h0101080101010101_0000000000000000_882BFF0AA01A0B87; |
x[19]=192'h0101040101010101_0000000000000000_25610288924511C2; |
x[20]=192'h0101020101010101_0000000000000000_C71516C29C75D170; |
x[21]=192'h0101018001010101_0000000000000000_5199C29A52C9F059; |
x[22]=192'h0101014001010101_0000000000000000_C22F0A294A71F29F; |
x[23]=192'h0101012001010101_0000000000000000_EE371483714C02EA; |
x[24]=192'h0101011001010101_0000000000000000_A81FBD448F9E522F; |
x[25]=192'h0101010801010101_0000000000000000_4F644C92E192DFED; |
x[26]=192'h0101010401010101_0000000000000000_1AFA9A66A6DF92AE; |
x[27]=192'h0101010201010101_0000000000000000_B3C1CC715CB879D8; |
x[28]=192'h0101010180010101_0000000000000000_19D032E64AB0BD8B; |
x[29]=192'h0101010140010101_0000000000000000_3CFAA7A7DC8720DC; |
x[30]=192'h0101010120010101_0000000000000000_B7265F7F447AC6F3; |
x[31]=192'h0101010110010101_0000000000000000_9DB73B3C0D163F54; |
x[32]=192'h0101010108010101_0000000000000000_8181B65BABF4A975; |
x[33]=192'h0101010104010101_0000000000000000_93C9B64042EAA240; |
x[34]=192'h0101010102010101_0000000000000000_5570530829705592; |
x[35]=192'h0101010101800101_0000000000000000_8638809E878787A0; |
x[36]=192'h0101010101400101_0000000000000000_41B9A79AF79AC208; |
x[37]=192'h0101010101200101_0000000000000000_7A9BE42F2009A892; |
x[38]=192'h0101010101100101_0000000000000000_29038D56BA6D2745; |
x[39]=192'h0101010101080101_0000000000000000_5495C6ABF1E5DF51; |
x[40]=192'h0101010101040101_0000000000000000_AE13DBD561488933; |
x[41]=192'h0101010101020101_0000000000000000_024D1FFA8904E389; |
x[42]=192'h0101010101018001_0000000000000000_D1399712F99BF02E; |
x[43]=192'h0101010101014001_0000000000000000_14C1D7C1CFFEC79E; |
x[44]=192'h0101010101012001_0000000000000000_1DE5279DAE3BED6F; |
x[45]=192'h0101010101011001_0000000000000000_E941A33F85501303; |
x[46]=192'h0101010101010801_0000000000000000_DA99DBBC9A03F379; |
x[47]=192'h0101010101010401_0000000000000000_B7FC92F91D8E92E9; |
x[48]=192'h0101010101010201_0000000000000000_AE8E5CAA3CA04E85; |
x[49]=192'h0101010101010180_0000000000000000_9CC62DF43B6EED74; |
x[50]=192'h0101010101010140_0000000000000000_D863DBB5C59A91A0; |
x[51]=192'h0101010101010120_0000000000000000_A1AB2190545B91D7; |
x[52]=192'h0101010101010110_0000000000000000_0875041E64C570F7; |
x[53]=192'h0101010101010108_0000000000000000_5A594528BEBEF1CC; |
x[54]=192'h0101010101010104_0000000000000000_FCDB3291DE21F0C0; |
x[55]=192'h0101010101010102_0000000000000000_869EFD7F9F265A09; |
x[56]=192'h0000000000000000_0000000000000000_8CA64DE9C1B123A7; |
x[57]=192'hFFFFFFFFFFFFFFFF_FFFFFFFFFFFFFFFF_7359B2163E4EDC58; |
x[58]=192'h3000000000000000_1000000000000001_958E6E627A05557B; |
x[59]=192'h1111111111111111_1111111111111111_F40379AB9E0EC533; |
x[60]=192'h0123456789ABCDEF_1111111111111111_17668DFC7292532D; |
x[61]=192'h1111111111111111_0123456789ABCDEF_8A5AE1F81AB8F2DD; |
x[62]=192'h0000000000000000_0000000000000000_8CA64DE9C1B123A7; |
x[63]=192'hFEDCBA9876543210_0123456789ABCDEF_ED39D950FA74BCC4; |
x[64]=192'h7CA110454A1A6E57_01A1D6D039776742_690F5B0D9A26939B; |
x[65]=192'h0131D9619DC1376E_5CD54CA83DEF57DA_7A389D10354BD271; |
x[66]=192'h07A1133E4A0B2686_0248D43806F67172_868EBB51CAB4599A; |
x[67]=192'h3849674C2602319E_51454B582DDF440A_7178876E01F19B2A; |
x[68]=192'h04B915BA43FEB5B6_42FD443059577FA2_AF37FB421F8C4095; |
x[69]=192'h0113B970FD34F2CE_059B5E0851CF143A_86A560F10EC6D85B; |
x[70]=192'h0170F175468FB5E6_0756D8E0774761D2_0CD3DA020021DC09; |
x[71]=192'h43297FAD38E373FE_762514B829BF486A_EA676B2CB7DB2B7A; |
x[72]=192'h07A7137045DA2A16_3BDD119049372802_DFD64A815CAF1A0F; |
x[73]=192'h04689104C2FD3B2F_26955F6835AF609A_5C513C9C4886C088; |
x[74]=192'h37D06BB516CB7546_164D5E404F275232_0A2AEEAE3FF4AB77; |
x[75]=192'h1F08260D1AC2465E_6B056E18759F5CCA_EF1BF03E5DFA575A; |
x[76]=192'h584023641ABA6176_004BD6EF09176062_88BF0DB6D70DEE56; |
x[77]=192'h025816164629B007_480D39006EE762F2_A1F9915541020B56; |
x[78]=192'h49793EBC79B3258F_437540C8698F3CFA_6FBF1CAFCFFD0556; |
x[79]=192'h4FB05E1515AB73A7_072D43A077075292_2F22E49BAB7CA1AC; |
x[80]=192'h49E95D6D4CA229BF_02FE55778117F12A_5A6B612CC26CCE4A; |
x[81]=192'h018310DC409B26D6_1D9D5C5018F728C2_5F4C038ED12B2E41; |
x[82]=192'h1C587F1C13924FEF_305532286D6F295A_63FAC0D034D9F793; |
x[83]=192'h0101010101010101_0123456789ABCDEF_617B3A0CE8F07100; |
x[84]=192'h1F1F1F1F0E0E0E0E_0123456789ABCDEF_DB958605F8C8C606; |
x[85]=192'hE0FEE0FEF1FEF1FE_0123456789ABCDEF_EDBFD1C66C29CCC7; |
x[86]=192'h0000000000000000_FFFFFFFFFFFFFFFF_355550B2150E2451; |
x[87]=192'hFFFFFFFFFFFFFFFF_0000000000000000_CAAAAF4DEAF1DBAE; |
x[88]=192'h0123456789ABCDEF_0000000000000000_D5D44FF720683D0D; |
x[89]=192'hFEDCBA9876543210_FFFFFFFFFFFFFFFF_2A2BB008DF97C2F2; |
|
x[ZZZ]=192'h10316E028C8F3B4A_0000000000000000_82DCBAFBDEAB6602; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_95F8A5E5DD31D900_8000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_DD7F121CA5015619_4000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_2E8653104F3834EA_2000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_4BD388FF6CD81D4F_1000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_20B9E767B2FB1456_0800000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_55579380D77138EF_0400000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_6CC5DEFAAF04512F_0200000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0D9F279BA5D87260_0100000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_D9031B0271BD5A0A_0080000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_424250B37C3DD951_0040000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_B8061B7ECD9A21E5_0020000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_F15D0F286B65BD28_0010000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_ADD0CC8D6E5DEBA1_0008000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E6D5F82752AD63D1_0004000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_ECBFE3BD3F591A5E_0002000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_F356834379D165CD_0001000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_2B9F982F20037FA9_0000800000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_889DE068A16F0BE6_0000400000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E19E275D846A1298_0000200000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_329A8ED523D71AEC_0000100000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E7FCE22557D23C97_0000080000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_12A9F5817FF2D65D_0000040000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_A484C3AD38DC9C19_0000020000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_FBE00A8A1EF8AD72_0000010000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_750D079407521363_0000008000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_64FEED9C724C2FAF_0000004000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_F02B263B328E2B60_0000002000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_9D64555A9A10B852_0000001000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_D106FF0BED5255D7_0000000800000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E1652C6B138C64A5_0000000400000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E428581186EC8F46_0000000200000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_AEB5F5EDE22D1A36_0000000100000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E943D7568AEC0C5C_0000000080000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_DF98C8276F54B04B_0000000040000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_B160E4680F6C696F_0000000020000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_FA0752B07D9C4AB8_0000000010000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_CA3A2B036DBC8502_0000000008000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_5E0905517BB59BCF_0000000004000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_814EEB3B91D90726_0000000002000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_4D49DB1532919C9F_0000000001000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_25EB5FC3F8CF0621_0000000000800000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_AB6A20C0620D1C6F_0000000000400000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_79E90DBC98F92CCA_0000000000200000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_866ECEDD8072BB0E_0000000000100000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_8B54536F2F3E64A8_0000000000080000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_EA51D3975595B86B_0000000000040000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_CAFFC6AC4542DE31_0000000000020000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_8DD45A2DDF90796C_0000000000010000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_1029D55E880EC2D0_0000000000008000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_5D86CB23639DBEA9_0000000000004000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_1D1CA853AE7C0C5F_0000000000002000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_CE332329248F3228_0000000000001000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_8405D1ABE24FB942_0000000000000800; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E643D78090CA4207_0000000000000400; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_48221B9937748A23_0000000000000200; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_DD7C0BBD61FAFD54_0000000000000100; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_2FBC291A570DB5C4_0000000000000080; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E07C30D7E4E26E12_0000000000000040; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0953E2258E8E90A1_0000000000000020; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_5B711BC4CEEBF2EE_0000000000000010; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_CC083F1E6D9E85F6_0000000000000008; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_D2FD8867D50D2DFE_0000000000000004; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_06E7EA22CE92708F_0000000000000002; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_166B40B44ABA4BD6_0000000000000001; ZZZ=ZZZ+1; |
|
x[ZZZ]=192'h0101010101010101_8000000000000000_95F8A5E5DD31D900; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_4000000000000000_DD7F121CA5015619; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_2000000000000000_2E8653104F3834EA; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_1000000000000000_4BD388FF6CD81D4F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0800000000000000_20B9E767B2FB1456; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0400000000000000_55579380D77138EF; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0200000000000000_6CC5DEFAAF04512F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0100000000000000_0D9F279BA5D87260; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0080000000000000_D9031B0271BD5A0A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0040000000000000_424250B37C3DD951; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0020000000000000_B8061B7ECD9A21E5; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0010000000000000_F15D0F286B65BD28; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0008000000000000_ADD0CC8D6E5DEBA1; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0004000000000000_E6D5F82752AD63D1; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0002000000000000_ECBFE3BD3F591A5E; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0001000000000000_F356834379D165CD; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000800000000000_2B9F982F20037FA9; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000400000000000_889DE068A16F0BE6; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000200000000000_E19E275D846A1298; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000100000000000_329A8ED523D71AEC; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000080000000000_E7FCE22557D23C97; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000040000000000_12A9F5817FF2D65D; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000020000000000_A484C3AD38DC9C19; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000010000000000_FBE00A8A1EF8AD72; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000008000000000_750D079407521363; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000004000000000_64FEED9C724C2FAF; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000002000000000_F02B263B328E2B60; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000001000000000_9D64555A9A10B852; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000800000000_D106FF0BED5255D7; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000400000000_E1652C6B138C64A5; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000200000000_E428581186EC8F46; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000100000000_AEB5F5EDE22D1A36; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000080000000_E943D7568AEC0C5C; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000040000000_DF98C8276F54B04B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000020000000_B160E4680F6C696F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000010000000_FA0752B07D9C4AB8; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000008000000_CA3A2B036DBC8502; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000004000000_5E0905517BB59BCF; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000002000000_814EEB3B91D90726; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000001000000_4D49DB1532919C9F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000800000_25EB5FC3F8CF0621; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000400000_AB6A20C0620D1C6F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000200000_79E90DBC98F92CCA; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000100000_866ECEDD8072BB0E; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000080000_8B54536F2F3E64A8; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000040000_EA51D3975595B86B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000020000_CAFFC6AC4542DE31; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000010000_8DD45A2DDF90796C; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000008000_1029D55E880EC2D0; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000004000_5D86CB23639DBEA9; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000002000_1D1CA853AE7C0C5F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000001000_CE332329248F3228; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000800_8405D1ABE24FB942; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000400_E643D78090CA4207; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000200_48221B9937748A23; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000100_DD7C0BBD61FAFD54; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000080_2FBC291A570DB5C4; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000040_E07C30D7E4E26E12; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000020_0953E2258E8E90A1; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000010_5B711BC4CEEBF2EE; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000008_CC083F1E6D9E85F6; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000004_D2FD8867D50D2DFE; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000002_06E7EA22CE92708F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000001_166B40B44ABA4BD6; ZZZ=ZZZ+1; |
|
x[ZZZ]=192'h8001010101010101_0000000000000000_95A8D72813DAA94D; ZZZ=ZZZ+1; |
x[ZZZ]=192'h4001010101010101_0000000000000000_0EEC1487DD8C26D5; ZZZ=ZZZ+1; |
x[ZZZ]=192'h2001010101010101_0000000000000000_7AD16FFB79C45926; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1001010101010101_0000000000000000_D3746294CA6A6CF3; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0801010101010101_0000000000000000_809F5F873C1FD761; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0401010101010101_0000000000000000_C02FAFFEC989D1FC; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0201010101010101_0000000000000000_4615AA1D33E72F10; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0180010101010101_0000000000000000_2055123350C00858; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0140010101010101_0000000000000000_DF3B99D6577397C8; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0120010101010101_0000000000000000_31FE17369B5288C9; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0110010101010101_0000000000000000_DFDD3CC64DAE1642; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0108010101010101_0000000000000000_178C83CE2B399D94; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0104010101010101_0000000000000000_50F636324A9B7F80; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0102010101010101_0000000000000000_A8468EE3BC18F06D; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101800101010101_0000000000000000_A2DC9E92FD3CDE92; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101400101010101_0000000000000000_CAC09F797D031287; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101200101010101_0000000000000000_90BA680B22AEB525; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101100101010101_0000000000000000_CE7A24F350E280B6; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101080101010101_0000000000000000_882BFF0AA01A0B87; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101040101010101_0000000000000000_25610288924511C2; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101020101010101_0000000000000000_C71516C29C75D170; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101018001010101_0000000000000000_5199C29A52C9F059; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101014001010101_0000000000000000_C22F0A294A71F29F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101012001010101_0000000000000000_EE371483714C02EA; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101011001010101_0000000000000000_A81FBD448F9E522F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010801010101_0000000000000000_4F644C92E192DFED; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010401010101_0000000000000000_1AFA9A66A6DF92AE; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010201010101_0000000000000000_B3C1CC715CB879D8; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010180010101_0000000000000000_19D032E64AB0BD8B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010140010101_0000000000000000_3CFAA7A7DC8720DC; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010120010101_0000000000000000_B7265F7F447AC6F3; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010110010101_0000000000000000_9DB73B3C0D163F54; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010108010101_0000000000000000_8181B65BABF4A975; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010104010101_0000000000000000_93C9B64042EAA240; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010102010101_0000000000000000_5570530829705592; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101800101_0000000000000000_8638809E878787A0; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101400101_0000000000000000_41B9A79AF79AC208; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101200101_0000000000000000_7A9BE42F2009A892; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101100101_0000000000000000_29038D56BA6D2745; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101080101_0000000000000000_5495C6ABF1E5DF51; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101040101_0000000000000000_AE13DBD561488933; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101020101_0000000000000000_024D1FFA8904E389; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101018001_0000000000000000_D1399712F99BF02E; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101014001_0000000000000000_14C1D7C1CFFEC79E; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101012001_0000000000000000_1DE5279DAE3BED6F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101011001_0000000000000000_E941A33F85501303; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010801_0000000000000000_DA99DBBC9A03F379; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010401_0000000000000000_B7FC92F91D8E92E9; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010201_0000000000000000_AE8E5CAA3CA04E85; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010180_0000000000000000_9CC62DF43B6EED74; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010140_0000000000000000_D863DBB5C59A91A0; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010120_0000000000000000_A1AB2190545B91D7; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010110_0000000000000000_0875041E64C570F7; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010108_0000000000000000_5A594528BEBEF1CC; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010104_0000000000000000_FCDB3291DE21F0C0; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010102_0000000000000000_869EFD7F9F265A09; ZZZ=ZZZ+1; |
|
x[ZZZ]=192'h1046913489980131_0000000000000000_88D55E54F54C97B4; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1007103489988020_0000000000000000_0C0CC00C83EA48FD; ZZZ=ZZZ+1; |
x[ZZZ]=192'h10071034C8980120_0000000000000000_83BC8EF3A6570183; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1046103489988020_0000000000000000_DF725DCAD94EA2E9; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1086911519190101_0000000000000000_E652B53B550BE8B0; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1086911519580101_0000000000000000_AF527120C485CBB0; ZZZ=ZZZ+1; |
x[ZZZ]=192'h5107B01519580101_0000000000000000_0F04CE393DB926D5; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1007B01519190101_0000000000000000_C9F00FFC74079067; ZZZ=ZZZ+1; |
x[ZZZ]=192'h3107915498080101_0000000000000000_7CFD82A593252B4E; ZZZ=ZZZ+1; |
x[ZZZ]=192'h3107919498080101_0000000000000000_CB49A2F9E91363E3; ZZZ=ZZZ+1; |
x[ZZZ]=192'h10079115B9080140_0000000000000000_00B588BE70D23F56; ZZZ=ZZZ+1; |
x[ZZZ]=192'h3107911598080140_0000000000000000_406A9A6AB43399AE; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1007D01589980101_0000000000000000_6CB773611DCA9ADA; ZZZ=ZZZ+1; |
x[ZZZ]=192'h9107911589980101_0000000000000000_67FD21C17DBB5D70; ZZZ=ZZZ+1; |
x[ZZZ]=192'h9107D01589190101_0000000000000000_9592CB4110430787; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1007D01598980120_0000000000000000_A6B7FF68A318DDD3; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1007940498190101_0000000000000000_4D102196C914CA16; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0107910491190401_0000000000000000_2DFA9F4573594965; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0107910491190101_0000000000000000_B46604816C0E0774; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0107940491190401_0000000000000000_6E7E6221A4F34E87; ZZZ=ZZZ+1; |
x[ZZZ]=192'h19079210981A0101_0000000000000000_AA85E74643233199; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1007911998190801_0000000000000000_2E5A19DB4D1962D6; ZZZ=ZZZ+1; |
x[ZZZ]=192'h10079119981A0801_0000000000000000_23A866A809D30894; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1007921098190101_0000000000000000_D812D961F017D320; ZZZ=ZZZ+1; |
x[ZZZ]=192'h100791159819010B_0000000000000000_055605816E58608F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1004801598190101_0000000000000000_ABD88E8B1B7716F1; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1004801598190102_0000000000000000_537AC95BE69DA1E1; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1004801598190108_0000000000000000_AED0F6AE3C25CDD8; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1002911498100104_0000000000000000_B3E35A5EE53E7B8D; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1002911598190104_0000000000000000_61C79C71921A2EF8; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1002911598100201_0000000000000000_E2F5728F0995013C; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1002911698100101_0000000000000000_1AEAC39A61F0A464; ZZZ=ZZZ+1; |
|
x[ZZZ]=192'h7CA110454A1A6E57_01A1D6D039776742_690F5B0D9A26939B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0131D9619DC1376E_5CD54CA83DEF57DA_7A389D10354BD271; ZZZ=ZZZ+1; |
x[ZZZ]=192'h07A1133E4A0B2686_0248D43806F67172_868EBB51CAB4599A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h3849674C2602319E_51454B582DDF440A_7178876E01F19B2A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h04B915BA43FEB5B6_42FD443059577FA2_AF37FB421F8C4095; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0113B970FD34F2CE_059B5E0851CF143A_86A560F10EC6D85B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0170F175468FB5E6_0756D8E0774761D2_0CD3DA020021DC09; ZZZ=ZZZ+1; |
x[ZZZ]=192'h43297FAD38E373FE_762514B829BF486A_EA676B2CB7DB2B7A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h07A7137045DA2A16_3BDD119049372802_DFD64A815CAF1A0F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h04689104C2FD3B2F_26955F6835AF609A_5C513C9C4886C088; ZZZ=ZZZ+1; |
x[ZZZ]=192'h37D06BB516CB7546_164D5E404F275232_0A2AEEAE3FF4AB77; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1F08260D1AC2465E_6B056E18759F5CCA_EF1BF03E5DFA575A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h584023641ABA6176_004BD6EF09176062_88BF0DB6D70DEE56; ZZZ=ZZZ+1; |
x[ZZZ]=192'h025816164629B007_480D39006EE762F2_A1F9915541020B56; ZZZ=ZZZ+1; |
x[ZZZ]=192'h49793EBC79B3258F_437540C8698F3CFA_6FBF1CAFCFFD0556; ZZZ=ZZZ+1; |
x[ZZZ]=192'h4FB05E1515AB73A7_072D43A077075292_2F22E49BAB7CA1AC; ZZZ=ZZZ+1; |
x[ZZZ]=192'h49E95D6D4CA229BF_02FE55778117F12A_5A6B612CC26CCE4A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h018310DC409B26D6_1D9D5C5018F728C2_5F4C038ED12B2E41; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1C587F1C13924FEF_305532286D6F295A_63FAC0D034D9F793; ZZZ=ZZZ+1; |
|
x[ZZZ]=192'h0000000000000000_0000000000000000_8CA64DE9C1B123A7; ZZZ=ZZZ+1; |
x[ZZZ]=192'hFFFFFFFFFFFFFFFF_FFFFFFFFFFFFFFFF_7359B2163E4EDC58; ZZZ=ZZZ+1; |
x[ZZZ]=192'h3000000000000000_1000000000000001_958E6E627A05557B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1111111111111111_1111111111111111_F40379AB9E0EC533; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0123456789ABCDEF_1111111111111111_17668DFC7292532D; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1111111111111111_0123456789ABCDEF_8A5AE1F81AB8F2DD; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0000000000000000_0000000000000000_8CA64DE9C1B123A7; ZZZ=ZZZ+1; |
x[ZZZ]=192'hFEDCBA9876543210_0123456789ABCDEF_ED39D950FA74BCC4; ZZZ=ZZZ+1; |
x[ZZZ]=192'h7CA110454A1A6E57_01A1D6D039776742_690F5B0D9A26939B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0131D9619DC1376E_5CD54CA83DEF57DA_7A389D10354BD271; ZZZ=ZZZ+1; |
x[ZZZ]=192'h07A1133E4A0B2686_0248D43806F67172_868EBB51CAB4599A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h3849674C2602319E_51454B582DDF440A_7178876E01F19B2A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h04B915BA43FEB5B6_42FD443059577FA2_AF37FB421F8C4095; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0113B970FD34F2CE_059B5E0851CF143A_86A560F10EC6D85B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0170F175468FB5E6_0756D8E0774761D2_0CD3DA020021DC09; ZZZ=ZZZ+1; |
x[ZZZ]=192'h43297FAD38E373FE_762514B829BF486A_EA676B2CB7DB2B7A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h07A7137045DA2A16_3BDD119049372802_DFD64A815CAF1A0F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h04689104C2FD3B2F_26955F6835AF609A_5C513C9C4886C088; ZZZ=ZZZ+1; |
x[ZZZ]=192'h37D06BB516CB7546_164D5E404F275232_0A2AEEAE3FF4AB77; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1F08260D1AC2465E_6B056E18759F5CCA_EF1BF03E5DFA575A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h584023641ABA6176_004BD6EF09176062_88BF0DB6D70DEE56; ZZZ=ZZZ+1; |
x[ZZZ]=192'h025816164629B007_480D39006EE762F2_A1F9915541020B56; ZZZ=ZZZ+1; |
x[ZZZ]=192'h49793EBC79B3258F_437540C8698F3CFA_6FBF1CAFCFFD0556; ZZZ=ZZZ+1; |
x[ZZZ]=192'h4FB05E1515AB73A7_072D43A077075292_2F22E49BAB7CA1AC; ZZZ=ZZZ+1; |
x[ZZZ]=192'h49E95D6D4CA229BF_02FE55778117F12A_5A6B612CC26CCE4A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h018310DC409B26D6_1D9D5C5018F728C2_5F4C038ED12B2E41; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1C587F1C13924FEF_305532286D6F295A_63FAC0D034D9F793; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0123456789ABCDEF_617B3A0CE8F07100; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1F1F1F1F0E0E0E0E_0123456789ABCDEF_DB958605F8C8C606; ZZZ=ZZZ+1; |
x[ZZZ]=192'hE0FEE0FEF1FEF1FE_0123456789ABCDEF_EDBFD1C66C29CCC7; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0000000000000000_FFFFFFFFFFFFFFFF_355550B2150E2451; ZZZ=ZZZ+1; |
x[ZZZ]=192'hFFFFFFFFFFFFFFFF_0000000000000000_CAAAAF4DEAF1DBAE; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0123456789ABCDEF_0000000000000000_D5D44FF720683D0D; ZZZ=ZZZ+1; |
x[ZZZ]=192'hFEDCBA9876543210_FFFFFFFFFFFFFFFF_2A2BB008DF97C2F2; ZZZ=ZZZ+1; |
|
//decrypt |
|
x[ZZZ]=192'h8001010101010101_95A8D72813DAA94D_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h4001010101010101_0EEC1487DD8C26D5_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h2001010101010101_7AD16FFB79C45926_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1001010101010101_D3746294CA6A6CF3_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0801010101010101_809F5F873C1FD761_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0401010101010101_C02FAFFEC989D1FC_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0201010101010101_4615AA1D33E72F10_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0180010101010101_2055123350C00858_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0140010101010101_DF3B99D6577397C8_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0120010101010101_31FE17369B5288C9_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0110010101010101_DFDD3CC64DAE1642_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0108010101010101_178C83CE2B399D94_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0104010101010101_50F636324A9B7F80_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0102010101010101_A8468EE3BC18F06D_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101800101010101_A2DC9E92FD3CDE92_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101400101010101_CAC09F797D031287_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101200101010101_90BA680B22AEB525_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101100101010101_CE7A24F350E280B6_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101080101010101_882BFF0AA01A0B87_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101040101010101_25610288924511C2_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101020101010101_C71516C29C75D170_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101018001010101_5199C29A52C9F059_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101014001010101_C22F0A294A71F29F_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101012001010101_EE371483714C02EA_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101011001010101_A81FBD448F9E522F_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010801010101_4F644C92E192DFED_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010401010101_1AFA9A66A6DF92AE_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010201010101_B3C1CC715CB879D8_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010180010101_19D032E64AB0BD8B_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010140010101_3CFAA7A7DC8720DC_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010120010101_B7265F7F447AC6F3_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010110010101_9DB73B3C0D163F54_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010108010101_8181B65BABF4A975_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010104010101_93C9B64042EAA240_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010102010101_5570530829705592_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101800101_8638809E878787A0_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101400101_41B9A79AF79AC208_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101200101_7A9BE42F2009A892_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101100101_29038D56BA6D2745_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101080101_5495C6ABF1E5DF51_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101040101_AE13DBD561488933_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101020101_024D1FFA8904E389_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101018001_D1399712F99BF02E_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101014001_14C1D7C1CFFEC79E_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101012001_1DE5279DAE3BED6F_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101011001_E941A33F85501303_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010801_DA99DBBC9A03F379_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010401_B7FC92F91D8E92E9_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010201_AE8E5CAA3CA04E85_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010180_9CC62DF43B6EED74_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010140_D863DBB5C59A91A0_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010120_A1AB2190545B91D7_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010110_0875041E64C570F7_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010108_5A594528BEBEF1CC_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010104_FCDB3291DE21F0C0_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010102_869EFD7F9F265A09_0000000000000000; ZZZ=ZZZ+1; |
|
// Wait for clock edge |
decrypt = 0; |
@(posedge clk); |
175,7 → 422,7
if(decrypt) $display("Running Encrypt test ...\n"); |
else $display("Running Decrypt test ...\n"); |
// Begin for loop |
for(select=0;select<107;select=select+1) |
for(select=0;select<(326+16);select=select+1) |
begin |
tmp=x[select]; |
@(posedge clk); |
199,12 → 446,13
|
// DES Clock |
always #50 clk=~clk; |
wire reverse = select > 269; |
|
// Create the key w/o the parity bits |
assign #1 key = {tmp[191:185],tmp[183:177],tmp[175:169],tmp[167:161], |
tmp[159:153],tmp[151:145],tmp[143:137],tmp[135:129]}; |
assign #1 des_in = decrypt ? tmp[63:0] : tmp[127:64]; |
assign exp_out_d = decrypt ? tmp[127:64] : tmp[63:0]; |
assign #1 des_in = (decrypt[0]^reverse) ? tmp[63:0] : tmp[127:64]; |
assign exp_out_d = (decrypt[0]^reverse) ? tmp[127:64] : tmp[63:0]; |
|
// The DES instance |
des u0( .clk( clk ), |
/trunk/bench/verilog/des_test_ao.v
34,7 → 34,7
module test; |
|
reg clk; |
reg [191:0] x[128:0]; |
reg [191:0] x[512:0]; |
|
reg [191:0] tmp; |
|
45,6 → 45,7
wire [63:0] des_in; |
wire [63:0] exp_out; |
wire [55:0] key; |
integer ZZZ; |
|
initial |
begin |
61,124 → 62,370
`endif |
|
clk=0; |
|
ZZZ=0; |
|
// Key Test data Out data |
x[00]=192'h8001010101010101_0000000000000000_95A8D72813DAA94D; |
x[01]=192'h4001010101010101_0000000000000000_0EEC1487DD8C26D5; |
x[02]=192'h2001010101010101_0000000000000000_7AD16FFB79C45926; |
x[03]=192'h1001010101010101_0000000000000000_D3746294CA6A6CF3; |
x[04]=192'h0801010101010101_0000000000000000_809F5F873C1FD761; |
x[05]=192'h0401010101010101_0000000000000000_C02FAFFEC989D1FC; |
x[06]=192'h0201010101010101_0000000000000000_4615AA1D33E72F10; |
x[07]=192'h0180010101010101_0000000000000000_2055123350C00858; |
x[08]=192'h0140010101010101_0000000000000000_DF3B99D6577397C8; |
x[09]=192'h0120010101010101_0000000000000000_31FE17369B5288C9; |
x[10]=192'h0110010101010101_0000000000000000_DFDD3CC64DAE1642; |
x[11]=192'h0108010101010101_0000000000000000_178C83CE2B399D94; |
x[12]=192'h0104010101010101_0000000000000000_50F636324A9B7F80; |
x[13]=192'h0102010101010101_0000000000000000_A8468EE3BC18F06D; |
x[14]=192'h0101800101010101_0000000000000000_A2DC9E92FD3CDE92; |
x[15]=192'h0101400101010101_0000000000000000_CAC09F797D031287; |
x[16]=192'h0101200101010101_0000000000000000_90BA680B22AEB525; |
x[17]=192'h0101100101010101_0000000000000000_CE7A24F350E280B6; |
x[18]=192'h0101080101010101_0000000000000000_882BFF0AA01A0B87; |
x[19]=192'h0101040101010101_0000000000000000_25610288924511C2; |
x[20]=192'h0101020101010101_0000000000000000_C71516C29C75D170; |
x[21]=192'h0101018001010101_0000000000000000_5199C29A52C9F059; |
x[22]=192'h0101014001010101_0000000000000000_C22F0A294A71F29F; |
x[23]=192'h0101012001010101_0000000000000000_EE371483714C02EA; |
x[24]=192'h0101011001010101_0000000000000000_A81FBD448F9E522F; |
x[25]=192'h0101010801010101_0000000000000000_4F644C92E192DFED; |
x[26]=192'h0101010401010101_0000000000000000_1AFA9A66A6DF92AE; |
x[27]=192'h0101010201010101_0000000000000000_B3C1CC715CB879D8; |
x[28]=192'h0101010180010101_0000000000000000_19D032E64AB0BD8B; |
x[29]=192'h0101010140010101_0000000000000000_3CFAA7A7DC8720DC; |
x[30]=192'h0101010120010101_0000000000000000_B7265F7F447AC6F3; |
x[31]=192'h0101010110010101_0000000000000000_9DB73B3C0D163F54; |
x[32]=192'h0101010108010101_0000000000000000_8181B65BABF4A975; |
x[33]=192'h0101010104010101_0000000000000000_93C9B64042EAA240; |
x[34]=192'h0101010102010101_0000000000000000_5570530829705592; |
x[35]=192'h0101010101800101_0000000000000000_8638809E878787A0; |
x[36]=192'h0101010101400101_0000000000000000_41B9A79AF79AC208; |
x[37]=192'h0101010101200101_0000000000000000_7A9BE42F2009A892; |
x[38]=192'h0101010101100101_0000000000000000_29038D56BA6D2745; |
x[39]=192'h0101010101080101_0000000000000000_5495C6ABF1E5DF51; |
x[40]=192'h0101010101040101_0000000000000000_AE13DBD561488933; |
x[41]=192'h0101010101020101_0000000000000000_024D1FFA8904E389; |
x[42]=192'h0101010101018001_0000000000000000_D1399712F99BF02E; |
x[43]=192'h0101010101014001_0000000000000000_14C1D7C1CFFEC79E; |
x[44]=192'h0101010101012001_0000000000000000_1DE5279DAE3BED6F; |
x[45]=192'h0101010101011001_0000000000000000_E941A33F85501303; |
x[46]=192'h0101010101010801_0000000000000000_DA99DBBC9A03F379; |
x[47]=192'h0101010101010401_0000000000000000_B7FC92F91D8E92E9; |
x[48]=192'h0101010101010201_0000000000000000_AE8E5CAA3CA04E85; |
x[49]=192'h0101010101010180_0000000000000000_9CC62DF43B6EED74; |
x[50]=192'h0101010101010140_0000000000000000_D863DBB5C59A91A0; |
x[51]=192'h0101010101010120_0000000000000000_A1AB2190545B91D7; |
x[52]=192'h0101010101010110_0000000000000000_0875041E64C570F7; |
x[53]=192'h0101010101010108_0000000000000000_5A594528BEBEF1CC; |
x[54]=192'h0101010101010104_0000000000000000_FCDB3291DE21F0C0; |
x[55]=192'h0101010101010102_0000000000000000_869EFD7F9F265A09; |
x[56]=192'h0000000000000000_0000000000000000_8CA64DE9C1B123A7; |
x[57]=192'hFFFFFFFFFFFFFFFF_FFFFFFFFFFFFFFFF_7359B2163E4EDC58; |
x[58]=192'h3000000000000000_1000000000000001_958E6E627A05557B; |
x[59]=192'h1111111111111111_1111111111111111_F40379AB9E0EC533; |
x[60]=192'h0123456789ABCDEF_1111111111111111_17668DFC7292532D; |
x[61]=192'h1111111111111111_0123456789ABCDEF_8A5AE1F81AB8F2DD; |
x[62]=192'h0000000000000000_0000000000000000_8CA64DE9C1B123A7; |
x[63]=192'hFEDCBA9876543210_0123456789ABCDEF_ED39D950FA74BCC4; |
x[64]=192'h7CA110454A1A6E57_01A1D6D039776742_690F5B0D9A26939B; |
x[65]=192'h0131D9619DC1376E_5CD54CA83DEF57DA_7A389D10354BD271; |
x[66]=192'h07A1133E4A0B2686_0248D43806F67172_868EBB51CAB4599A; |
x[67]=192'h3849674C2602319E_51454B582DDF440A_7178876E01F19B2A; |
x[68]=192'h04B915BA43FEB5B6_42FD443059577FA2_AF37FB421F8C4095; |
x[69]=192'h0113B970FD34F2CE_059B5E0851CF143A_86A560F10EC6D85B; |
x[70]=192'h0170F175468FB5E6_0756D8E0774761D2_0CD3DA020021DC09; |
x[71]=192'h43297FAD38E373FE_762514B829BF486A_EA676B2CB7DB2B7A; |
x[72]=192'h07A7137045DA2A16_3BDD119049372802_DFD64A815CAF1A0F; |
x[73]=192'h04689104C2FD3B2F_26955F6835AF609A_5C513C9C4886C088; |
x[74]=192'h37D06BB516CB7546_164D5E404F275232_0A2AEEAE3FF4AB77; |
x[75]=192'h1F08260D1AC2465E_6B056E18759F5CCA_EF1BF03E5DFA575A; |
x[76]=192'h584023641ABA6176_004BD6EF09176062_88BF0DB6D70DEE56; |
x[77]=192'h025816164629B007_480D39006EE762F2_A1F9915541020B56; |
x[78]=192'h49793EBC79B3258F_437540C8698F3CFA_6FBF1CAFCFFD0556; |
x[79]=192'h4FB05E1515AB73A7_072D43A077075292_2F22E49BAB7CA1AC; |
x[80]=192'h49E95D6D4CA229BF_02FE55778117F12A_5A6B612CC26CCE4A; |
x[81]=192'h018310DC409B26D6_1D9D5C5018F728C2_5F4C038ED12B2E41; |
x[82]=192'h1C587F1C13924FEF_305532286D6F295A_63FAC0D034D9F793; |
x[83]=192'h0101010101010101_0123456789ABCDEF_617B3A0CE8F07100; |
x[84]=192'h1F1F1F1F0E0E0E0E_0123456789ABCDEF_DB958605F8C8C606; |
x[85]=192'hE0FEE0FEF1FEF1FE_0123456789ABCDEF_EDBFD1C66C29CCC7; |
x[86]=192'h0000000000000000_FFFFFFFFFFFFFFFF_355550B2150E2451; |
x[87]=192'hFFFFFFFFFFFFFFFF_0000000000000000_CAAAAF4DEAF1DBAE; |
x[88]=192'h0123456789ABCDEF_0000000000000000_D5D44FF720683D0D; |
x[89]=192'hFEDCBA9876543210_FFFFFFFFFFFFFFFF_2A2BB008DF97C2F2; |
|
x[ZZZ]=192'h10316E028C8F3B4A_0000000000000000_82DCBAFBDEAB6602; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_95F8A5E5DD31D900_8000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_DD7F121CA5015619_4000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_2E8653104F3834EA_2000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_4BD388FF6CD81D4F_1000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_20B9E767B2FB1456_0800000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_55579380D77138EF_0400000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_6CC5DEFAAF04512F_0200000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0D9F279BA5D87260_0100000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_D9031B0271BD5A0A_0080000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_424250B37C3DD951_0040000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_B8061B7ECD9A21E5_0020000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_F15D0F286B65BD28_0010000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_ADD0CC8D6E5DEBA1_0008000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E6D5F82752AD63D1_0004000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_ECBFE3BD3F591A5E_0002000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_F356834379D165CD_0001000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_2B9F982F20037FA9_0000800000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_889DE068A16F0BE6_0000400000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E19E275D846A1298_0000200000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_329A8ED523D71AEC_0000100000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E7FCE22557D23C97_0000080000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_12A9F5817FF2D65D_0000040000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_A484C3AD38DC9C19_0000020000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_FBE00A8A1EF8AD72_0000010000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_750D079407521363_0000008000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_64FEED9C724C2FAF_0000004000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_F02B263B328E2B60_0000002000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_9D64555A9A10B852_0000001000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_D106FF0BED5255D7_0000000800000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E1652C6B138C64A5_0000000400000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E428581186EC8F46_0000000200000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_AEB5F5EDE22D1A36_0000000100000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E943D7568AEC0C5C_0000000080000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_DF98C8276F54B04B_0000000040000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_B160E4680F6C696F_0000000020000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_FA0752B07D9C4AB8_0000000010000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_CA3A2B036DBC8502_0000000008000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_5E0905517BB59BCF_0000000004000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_814EEB3B91D90726_0000000002000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_4D49DB1532919C9F_0000000001000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_25EB5FC3F8CF0621_0000000000800000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_AB6A20C0620D1C6F_0000000000400000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_79E90DBC98F92CCA_0000000000200000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_866ECEDD8072BB0E_0000000000100000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_8B54536F2F3E64A8_0000000000080000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_EA51D3975595B86B_0000000000040000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_CAFFC6AC4542DE31_0000000000020000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_8DD45A2DDF90796C_0000000000010000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_1029D55E880EC2D0_0000000000008000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_5D86CB23639DBEA9_0000000000004000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_1D1CA853AE7C0C5F_0000000000002000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_CE332329248F3228_0000000000001000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_8405D1ABE24FB942_0000000000000800; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E643D78090CA4207_0000000000000400; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_48221B9937748A23_0000000000000200; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_DD7C0BBD61FAFD54_0000000000000100; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_2FBC291A570DB5C4_0000000000000080; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_E07C30D7E4E26E12_0000000000000040; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0953E2258E8E90A1_0000000000000020; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_5B711BC4CEEBF2EE_0000000000000010; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_CC083F1E6D9E85F6_0000000000000008; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_D2FD8867D50D2DFE_0000000000000004; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_06E7EA22CE92708F_0000000000000002; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_166B40B44ABA4BD6_0000000000000001; ZZZ=ZZZ+1; |
|
x[ZZZ]=192'h0101010101010101_8000000000000000_95F8A5E5DD31D900; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_4000000000000000_DD7F121CA5015619; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_2000000000000000_2E8653104F3834EA; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_1000000000000000_4BD388FF6CD81D4F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0800000000000000_20B9E767B2FB1456; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0400000000000000_55579380D77138EF; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0200000000000000_6CC5DEFAAF04512F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0100000000000000_0D9F279BA5D87260; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0080000000000000_D9031B0271BD5A0A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0040000000000000_424250B37C3DD951; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0020000000000000_B8061B7ECD9A21E5; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0010000000000000_F15D0F286B65BD28; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0008000000000000_ADD0CC8D6E5DEBA1; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0004000000000000_E6D5F82752AD63D1; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0002000000000000_ECBFE3BD3F591A5E; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0001000000000000_F356834379D165CD; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000800000000000_2B9F982F20037FA9; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000400000000000_889DE068A16F0BE6; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000200000000000_E19E275D846A1298; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000100000000000_329A8ED523D71AEC; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000080000000000_E7FCE22557D23C97; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000040000000000_12A9F5817FF2D65D; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000020000000000_A484C3AD38DC9C19; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000010000000000_FBE00A8A1EF8AD72; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000008000000000_750D079407521363; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000004000000000_64FEED9C724C2FAF; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000002000000000_F02B263B328E2B60; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000001000000000_9D64555A9A10B852; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000800000000_D106FF0BED5255D7; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000400000000_E1652C6B138C64A5; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000200000000_E428581186EC8F46; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000100000000_AEB5F5EDE22D1A36; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000080000000_E943D7568AEC0C5C; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000040000000_DF98C8276F54B04B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000020000000_B160E4680F6C696F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000010000000_FA0752B07D9C4AB8; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000008000000_CA3A2B036DBC8502; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000004000000_5E0905517BB59BCF; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000002000000_814EEB3B91D90726; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000001000000_4D49DB1532919C9F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000800000_25EB5FC3F8CF0621; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000400000_AB6A20C0620D1C6F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000200000_79E90DBC98F92CCA; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000100000_866ECEDD8072BB0E; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000080000_8B54536F2F3E64A8; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000040000_EA51D3975595B86B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000020000_CAFFC6AC4542DE31; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000010000_8DD45A2DDF90796C; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000008000_1029D55E880EC2D0; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000004000_5D86CB23639DBEA9; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000002000_1D1CA853AE7C0C5F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000001000_CE332329248F3228; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000800_8405D1ABE24FB942; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000400_E643D78090CA4207; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000200_48221B9937748A23; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000100_DD7C0BBD61FAFD54; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000080_2FBC291A570DB5C4; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000040_E07C30D7E4E26E12; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000020_0953E2258E8E90A1; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000010_5B711BC4CEEBF2EE; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000008_CC083F1E6D9E85F6; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000004_D2FD8867D50D2DFE; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000002_06E7EA22CE92708F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0000000000000001_166B40B44ABA4BD6; ZZZ=ZZZ+1; |
|
x[ZZZ]=192'h8001010101010101_0000000000000000_95A8D72813DAA94D; ZZZ=ZZZ+1; |
x[ZZZ]=192'h4001010101010101_0000000000000000_0EEC1487DD8C26D5; ZZZ=ZZZ+1; |
x[ZZZ]=192'h2001010101010101_0000000000000000_7AD16FFB79C45926; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1001010101010101_0000000000000000_D3746294CA6A6CF3; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0801010101010101_0000000000000000_809F5F873C1FD761; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0401010101010101_0000000000000000_C02FAFFEC989D1FC; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0201010101010101_0000000000000000_4615AA1D33E72F10; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0180010101010101_0000000000000000_2055123350C00858; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0140010101010101_0000000000000000_DF3B99D6577397C8; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0120010101010101_0000000000000000_31FE17369B5288C9; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0110010101010101_0000000000000000_DFDD3CC64DAE1642; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0108010101010101_0000000000000000_178C83CE2B399D94; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0104010101010101_0000000000000000_50F636324A9B7F80; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0102010101010101_0000000000000000_A8468EE3BC18F06D; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101800101010101_0000000000000000_A2DC9E92FD3CDE92; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101400101010101_0000000000000000_CAC09F797D031287; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101200101010101_0000000000000000_90BA680B22AEB525; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101100101010101_0000000000000000_CE7A24F350E280B6; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101080101010101_0000000000000000_882BFF0AA01A0B87; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101040101010101_0000000000000000_25610288924511C2; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101020101010101_0000000000000000_C71516C29C75D170; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101018001010101_0000000000000000_5199C29A52C9F059; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101014001010101_0000000000000000_C22F0A294A71F29F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101012001010101_0000000000000000_EE371483714C02EA; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101011001010101_0000000000000000_A81FBD448F9E522F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010801010101_0000000000000000_4F644C92E192DFED; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010401010101_0000000000000000_1AFA9A66A6DF92AE; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010201010101_0000000000000000_B3C1CC715CB879D8; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010180010101_0000000000000000_19D032E64AB0BD8B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010140010101_0000000000000000_3CFAA7A7DC8720DC; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010120010101_0000000000000000_B7265F7F447AC6F3; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010110010101_0000000000000000_9DB73B3C0D163F54; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010108010101_0000000000000000_8181B65BABF4A975; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010104010101_0000000000000000_93C9B64042EAA240; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010102010101_0000000000000000_5570530829705592; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101800101_0000000000000000_8638809E878787A0; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101400101_0000000000000000_41B9A79AF79AC208; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101200101_0000000000000000_7A9BE42F2009A892; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101100101_0000000000000000_29038D56BA6D2745; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101080101_0000000000000000_5495C6ABF1E5DF51; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101040101_0000000000000000_AE13DBD561488933; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101020101_0000000000000000_024D1FFA8904E389; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101018001_0000000000000000_D1399712F99BF02E; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101014001_0000000000000000_14C1D7C1CFFEC79E; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101012001_0000000000000000_1DE5279DAE3BED6F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101011001_0000000000000000_E941A33F85501303; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010801_0000000000000000_DA99DBBC9A03F379; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010401_0000000000000000_B7FC92F91D8E92E9; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010201_0000000000000000_AE8E5CAA3CA04E85; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010180_0000000000000000_9CC62DF43B6EED74; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010140_0000000000000000_D863DBB5C59A91A0; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010120_0000000000000000_A1AB2190545B91D7; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010110_0000000000000000_0875041E64C570F7; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010108_0000000000000000_5A594528BEBEF1CC; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010104_0000000000000000_FCDB3291DE21F0C0; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010102_0000000000000000_869EFD7F9F265A09; ZZZ=ZZZ+1; |
|
x[ZZZ]=192'h1046913489980131_0000000000000000_88D55E54F54C97B4; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1007103489988020_0000000000000000_0C0CC00C83EA48FD; ZZZ=ZZZ+1; |
x[ZZZ]=192'h10071034C8980120_0000000000000000_83BC8EF3A6570183; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1046103489988020_0000000000000000_DF725DCAD94EA2E9; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1086911519190101_0000000000000000_E652B53B550BE8B0; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1086911519580101_0000000000000000_AF527120C485CBB0; ZZZ=ZZZ+1; |
x[ZZZ]=192'h5107B01519580101_0000000000000000_0F04CE393DB926D5; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1007B01519190101_0000000000000000_C9F00FFC74079067; ZZZ=ZZZ+1; |
x[ZZZ]=192'h3107915498080101_0000000000000000_7CFD82A593252B4E; ZZZ=ZZZ+1; |
x[ZZZ]=192'h3107919498080101_0000000000000000_CB49A2F9E91363E3; ZZZ=ZZZ+1; |
x[ZZZ]=192'h10079115B9080140_0000000000000000_00B588BE70D23F56; ZZZ=ZZZ+1; |
x[ZZZ]=192'h3107911598080140_0000000000000000_406A9A6AB43399AE; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1007D01589980101_0000000000000000_6CB773611DCA9ADA; ZZZ=ZZZ+1; |
x[ZZZ]=192'h9107911589980101_0000000000000000_67FD21C17DBB5D70; ZZZ=ZZZ+1; |
x[ZZZ]=192'h9107D01589190101_0000000000000000_9592CB4110430787; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1007D01598980120_0000000000000000_A6B7FF68A318DDD3; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1007940498190101_0000000000000000_4D102196C914CA16; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0107910491190401_0000000000000000_2DFA9F4573594965; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0107910491190101_0000000000000000_B46604816C0E0774; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0107940491190401_0000000000000000_6E7E6221A4F34E87; ZZZ=ZZZ+1; |
x[ZZZ]=192'h19079210981A0101_0000000000000000_AA85E74643233199; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1007911998190801_0000000000000000_2E5A19DB4D1962D6; ZZZ=ZZZ+1; |
x[ZZZ]=192'h10079119981A0801_0000000000000000_23A866A809D30894; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1007921098190101_0000000000000000_D812D961F017D320; ZZZ=ZZZ+1; |
x[ZZZ]=192'h100791159819010B_0000000000000000_055605816E58608F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1004801598190101_0000000000000000_ABD88E8B1B7716F1; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1004801598190102_0000000000000000_537AC95BE69DA1E1; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1004801598190108_0000000000000000_AED0F6AE3C25CDD8; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1002911498100104_0000000000000000_B3E35A5EE53E7B8D; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1002911598190104_0000000000000000_61C79C71921A2EF8; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1002911598100201_0000000000000000_E2F5728F0995013C; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1002911698100101_0000000000000000_1AEAC39A61F0A464; ZZZ=ZZZ+1; |
|
x[ZZZ]=192'h7CA110454A1A6E57_01A1D6D039776742_690F5B0D9A26939B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0131D9619DC1376E_5CD54CA83DEF57DA_7A389D10354BD271; ZZZ=ZZZ+1; |
x[ZZZ]=192'h07A1133E4A0B2686_0248D43806F67172_868EBB51CAB4599A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h3849674C2602319E_51454B582DDF440A_7178876E01F19B2A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h04B915BA43FEB5B6_42FD443059577FA2_AF37FB421F8C4095; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0113B970FD34F2CE_059B5E0851CF143A_86A560F10EC6D85B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0170F175468FB5E6_0756D8E0774761D2_0CD3DA020021DC09; ZZZ=ZZZ+1; |
x[ZZZ]=192'h43297FAD38E373FE_762514B829BF486A_EA676B2CB7DB2B7A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h07A7137045DA2A16_3BDD119049372802_DFD64A815CAF1A0F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h04689104C2FD3B2F_26955F6835AF609A_5C513C9C4886C088; ZZZ=ZZZ+1; |
x[ZZZ]=192'h37D06BB516CB7546_164D5E404F275232_0A2AEEAE3FF4AB77; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1F08260D1AC2465E_6B056E18759F5CCA_EF1BF03E5DFA575A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h584023641ABA6176_004BD6EF09176062_88BF0DB6D70DEE56; ZZZ=ZZZ+1; |
x[ZZZ]=192'h025816164629B007_480D39006EE762F2_A1F9915541020B56; ZZZ=ZZZ+1; |
x[ZZZ]=192'h49793EBC79B3258F_437540C8698F3CFA_6FBF1CAFCFFD0556; ZZZ=ZZZ+1; |
x[ZZZ]=192'h4FB05E1515AB73A7_072D43A077075292_2F22E49BAB7CA1AC; ZZZ=ZZZ+1; |
x[ZZZ]=192'h49E95D6D4CA229BF_02FE55778117F12A_5A6B612CC26CCE4A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h018310DC409B26D6_1D9D5C5018F728C2_5F4C038ED12B2E41; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1C587F1C13924FEF_305532286D6F295A_63FAC0D034D9F793; ZZZ=ZZZ+1; |
|
x[ZZZ]=192'h0000000000000000_0000000000000000_8CA64DE9C1B123A7; ZZZ=ZZZ+1; |
x[ZZZ]=192'hFFFFFFFFFFFFFFFF_FFFFFFFFFFFFFFFF_7359B2163E4EDC58; ZZZ=ZZZ+1; |
x[ZZZ]=192'h3000000000000000_1000000000000001_958E6E627A05557B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1111111111111111_1111111111111111_F40379AB9E0EC533; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0123456789ABCDEF_1111111111111111_17668DFC7292532D; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1111111111111111_0123456789ABCDEF_8A5AE1F81AB8F2DD; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0000000000000000_0000000000000000_8CA64DE9C1B123A7; ZZZ=ZZZ+1; |
x[ZZZ]=192'hFEDCBA9876543210_0123456789ABCDEF_ED39D950FA74BCC4; ZZZ=ZZZ+1; |
x[ZZZ]=192'h7CA110454A1A6E57_01A1D6D039776742_690F5B0D9A26939B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0131D9619DC1376E_5CD54CA83DEF57DA_7A389D10354BD271; ZZZ=ZZZ+1; |
x[ZZZ]=192'h07A1133E4A0B2686_0248D43806F67172_868EBB51CAB4599A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h3849674C2602319E_51454B582DDF440A_7178876E01F19B2A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h04B915BA43FEB5B6_42FD443059577FA2_AF37FB421F8C4095; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0113B970FD34F2CE_059B5E0851CF143A_86A560F10EC6D85B; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0170F175468FB5E6_0756D8E0774761D2_0CD3DA020021DC09; ZZZ=ZZZ+1; |
x[ZZZ]=192'h43297FAD38E373FE_762514B829BF486A_EA676B2CB7DB2B7A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h07A7137045DA2A16_3BDD119049372802_DFD64A815CAF1A0F; ZZZ=ZZZ+1; |
x[ZZZ]=192'h04689104C2FD3B2F_26955F6835AF609A_5C513C9C4886C088; ZZZ=ZZZ+1; |
x[ZZZ]=192'h37D06BB516CB7546_164D5E404F275232_0A2AEEAE3FF4AB77; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1F08260D1AC2465E_6B056E18759F5CCA_EF1BF03E5DFA575A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h584023641ABA6176_004BD6EF09176062_88BF0DB6D70DEE56; ZZZ=ZZZ+1; |
x[ZZZ]=192'h025816164629B007_480D39006EE762F2_A1F9915541020B56; ZZZ=ZZZ+1; |
x[ZZZ]=192'h49793EBC79B3258F_437540C8698F3CFA_6FBF1CAFCFFD0556; ZZZ=ZZZ+1; |
x[ZZZ]=192'h4FB05E1515AB73A7_072D43A077075292_2F22E49BAB7CA1AC; ZZZ=ZZZ+1; |
x[ZZZ]=192'h49E95D6D4CA229BF_02FE55778117F12A_5A6B612CC26CCE4A; ZZZ=ZZZ+1; |
x[ZZZ]=192'h018310DC409B26D6_1D9D5C5018F728C2_5F4C038ED12B2E41; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1C587F1C13924FEF_305532286D6F295A_63FAC0D034D9F793; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010101_0123456789ABCDEF_617B3A0CE8F07100; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1F1F1F1F0E0E0E0E_0123456789ABCDEF_DB958605F8C8C606; ZZZ=ZZZ+1; |
x[ZZZ]=192'hE0FEE0FEF1FEF1FE_0123456789ABCDEF_EDBFD1C66C29CCC7; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0000000000000000_FFFFFFFFFFFFFFFF_355550B2150E2451; ZZZ=ZZZ+1; |
x[ZZZ]=192'hFFFFFFFFFFFFFFFF_0000000000000000_CAAAAF4DEAF1DBAE; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0123456789ABCDEF_0000000000000000_D5D44FF720683D0D; ZZZ=ZZZ+1; |
x[ZZZ]=192'hFEDCBA9876543210_FFFFFFFFFFFFFFFF_2A2BB008DF97C2F2; ZZZ=ZZZ+1; |
|
//decrypt |
|
x[ZZZ]=192'h8001010101010101_95A8D72813DAA94D_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h4001010101010101_0EEC1487DD8C26D5_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h2001010101010101_7AD16FFB79C45926_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h1001010101010101_D3746294CA6A6CF3_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0801010101010101_809F5F873C1FD761_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0401010101010101_C02FAFFEC989D1FC_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0201010101010101_4615AA1D33E72F10_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0180010101010101_2055123350C00858_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0140010101010101_DF3B99D6577397C8_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0120010101010101_31FE17369B5288C9_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0110010101010101_DFDD3CC64DAE1642_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0108010101010101_178C83CE2B399D94_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0104010101010101_50F636324A9B7F80_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0102010101010101_A8468EE3BC18F06D_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101800101010101_A2DC9E92FD3CDE92_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101400101010101_CAC09F797D031287_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101200101010101_90BA680B22AEB525_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101100101010101_CE7A24F350E280B6_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101080101010101_882BFF0AA01A0B87_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101040101010101_25610288924511C2_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101020101010101_C71516C29C75D170_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101018001010101_5199C29A52C9F059_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101014001010101_C22F0A294A71F29F_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101012001010101_EE371483714C02EA_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101011001010101_A81FBD448F9E522F_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010801010101_4F644C92E192DFED_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010401010101_1AFA9A66A6DF92AE_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010201010101_B3C1CC715CB879D8_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010180010101_19D032E64AB0BD8B_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010140010101_3CFAA7A7DC8720DC_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010120010101_B7265F7F447AC6F3_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010110010101_9DB73B3C0D163F54_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010108010101_8181B65BABF4A975_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010104010101_93C9B64042EAA240_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010102010101_5570530829705592_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101800101_8638809E878787A0_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101400101_41B9A79AF79AC208_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101200101_7A9BE42F2009A892_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101100101_29038D56BA6D2745_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101080101_5495C6ABF1E5DF51_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101040101_AE13DBD561488933_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101020101_024D1FFA8904E389_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101018001_D1399712F99BF02E_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101014001_14C1D7C1CFFEC79E_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101012001_1DE5279DAE3BED6F_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101011001_E941A33F85501303_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010801_DA99DBBC9A03F379_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010401_B7FC92F91D8E92E9_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010201_AE8E5CAA3CA04E85_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010180_9CC62DF43B6EED74_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010140_D863DBB5C59A91A0_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010120_A1AB2190545B91D7_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010110_0875041E64C570F7_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010108_5A594528BEBEF1CC_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010104_FCDB3291DE21F0C0_0000000000000000; ZZZ=ZZZ+1; |
x[ZZZ]=192'h0101010101010102_869EFD7F9F265A09_0000000000000000; ZZZ=ZZZ+1; |
|
decrypt = 0; |
@(posedge clk); |
|
|
$display(""); |
$display("**************************************"); |
$display("* Starting DES Test ... *"); |
$display("**************************************"); |
$display(""); |
|
|
for(decrypt=0;decrypt<2;decrypt=decrypt+1) |
begin |
if(decrypt) $display("Running Encrypt test ...\n"); |
else $display("Running Decrypt test ...\n"); |
|
for(select=0;select<90;select=select+1) |
for(select=0;select<326;select=select+1) |
begin |
tmp=x[select]; |
for(cnt=0;cnt<15;cnt=cnt+1) @(posedge clk); |
|
#10; |
//if(desOut !== exp_out) |
if((exp_out !== desOut) | (^exp_out===1'bx) | (^desOut===1'bx)) |
|
$display("ERROR: (%0d) Expected %x Got %x", select, exp_out, desOut); |
//else |
// $display("PASS : (%0d) Expected %x Got %x", select, exp_out, desOut); |
// $display("PASS : (%0d) Expected %x Got %x", select, exp_out, desOut); |
|
@(posedge clk); |
end |
193,13 → 440,15
$finish; |
end // end of innitial |
|
wire reverse = select > 269; |
|
always #100 clk=~clk; |
|
assign #1 key = {tmp[191:185],tmp[183:177],tmp[175:169],tmp[167:161], |
tmp[159:153],tmp[151:145],tmp[143:137],tmp[135:129]}; |
|
assign #1 des_in = decrypt ? tmp[63:0] : tmp[127:64]; |
assign exp_out = decrypt ? tmp[127:64] : tmp[63:0]; |
assign #1 des_in = (decrypt[0]^reverse) ? tmp[63:0] : tmp[127:64]; |
assign exp_out = (decrypt[0]^reverse) ? tmp[127:64] : tmp[63:0]; |
|
des u0( .clk( clk ), |
.desOut( desOut ), |
206,7 → 455,7
.desIn( des_in ), |
.key( key ), |
.roundSel( cnt ), |
.decrypt( decrypt[0] ) |
.decrypt( decrypt[0] ) |
); |
|
endmodule |
/trunk/rtl/verilog/common/crp.v
39,7 → 39,7
|
wire [1:48] E; |
wire [1:48] X; |
wire [1:48] S; |
wire [1:32] S; |
|
assign E[1:48] = { R[32], R[1], R[2], R[3], R[4], R[5], R[4], R[5], |
R[6], R[7], R[8], R[9], R[8], R[9], R[10], R[11], |
/trunk/rtl/verilog/area_opt/des3.v
0,0 → 1,148
///////////////////////////////////////////////////////////////////// |
//// //// |
//// DES //// |
//// DES Top Level module //// |
//// //// |
//// Author: Rudolf Usselmann //// |
//// rudi@asics.ws //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Copyright (C) 2001 Rudolf Usselmann //// |
//// 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. //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
|
module des3(desOut, desIn, key1, key2, key3, decrypt, roundSel, clk); |
output [63:0] desOut; |
input [63:0] desIn; |
input [55:0] key1; |
input [55:0] key2; |
input [55:0] key3; |
input decrypt; |
input [5:0] roundSel; |
input clk; |
|
wire [1:48] K_sub; |
wire [1:64] IP, FP, tmp; |
reg [1:64] FP_R; |
reg [1:32] L, R; |
wire [1:32] Xin; |
wire [1:32] Lout; |
wire [1:32] Rout; |
wire [1:32] out; |
|
//assign Lout = (roundSel == 0) ? IP[33:64] : R; |
//assign Xin = (roundSel == 0) ? IP[01:32] : L; |
|
|
assign Lout = (roundSel == 0) ? IP[33:64] : |
( (roundSel == 16) ? FP_R[33:64] : |
( (roundSel == 32) ? FP_R[33:64] : |
R )); |
|
assign Xin = (roundSel == 0) ? IP[01:32] : |
( (roundSel == 16) ? FP_R[01:32] : |
( (roundSel == 32) ? FP_R[01:32] : |
L )); |
|
|
|
/* |
always @(roundSel or IP or tmp or R or FP) |
case(roundSel) |
6'h0: Lout = IP[33:64]; |
6'h10: Lout = FP[33:64]; |
6'h20: Lout = FP[33:64]; |
default: Lout = R; |
endcase |
|
always @(roundSel or IP or tmp or L or FP) |
case(roundSel) |
6'h0: Xin = IP[01:32]; |
6'h10: Xin = FP[01:32]; |
6'h20: Xin = FP[01:32]; |
default: Xin = L; |
endcase |
*/ |
|
always @(posedge clk) |
FP_R <= #1 FP; |
|
assign Rout = Xin ^ out; |
assign FP = { Rout, Lout}; |
|
crp u0( .P(out), .R(Lout), .K_sub(K_sub) ); |
|
always @(posedge clk) |
L <= #1 Lout; |
|
always @(posedge clk) |
R <= #1 Rout; |
|
// Select a subkey from key. |
key_sel3 u1( |
.K_sub( K_sub ), |
.key1( key1 ), |
.key2( key2 ), |
.key3( key3 ), |
.roundSel( roundSel ), |
.decrypt( decrypt ) |
); |
|
assign tmp[1:64] = { desOut[06], desOut[14], desOut[22], desOut[30], desOut[38], desOut[46], |
desOut[54], desOut[62], desOut[04], desOut[12], desOut[20], desOut[28], |
desOut[36], desOut[44], desOut[52], desOut[60], desOut[02], desOut[10], |
desOut[18], desOut[26], desOut[34], desOut[42], desOut[50], desOut[58], |
desOut[00], desOut[08], desOut[16], desOut[24], desOut[32], desOut[40], |
desOut[48], desOut[56], desOut[07], desOut[15], desOut[23], desOut[31], |
desOut[39], desOut[47], desOut[55], desOut[63], desOut[05], desOut[13], |
desOut[21], desOut[29], desOut[37], desOut[45], desOut[53], desOut[61], |
desOut[03], desOut[11], desOut[19], desOut[27], desOut[35], desOut[43], |
desOut[51], desOut[59], desOut[01], desOut[09], desOut[17], desOut[25], |
desOut[33], desOut[41], desOut[49], desOut[57] }; |
|
// Perform initial permutation |
assign IP[1:64] = { desIn[06], desIn[14], desIn[22], desIn[30], desIn[38], desIn[46], |
desIn[54], desIn[62], desIn[04], desIn[12], desIn[20], desIn[28], |
desIn[36], desIn[44], desIn[52], desIn[60], desIn[02], desIn[10], |
desIn[18], desIn[26], desIn[34], desIn[42], desIn[50], desIn[58], |
desIn[00], desIn[08], desIn[16], desIn[24], desIn[32], desIn[40], |
desIn[48], desIn[56], desIn[07], desIn[15], desIn[23], desIn[31], |
desIn[39], desIn[47], desIn[55], desIn[63], desIn[05], desIn[13], |
desIn[21], desIn[29], desIn[37], desIn[45], desIn[53], desIn[61], |
desIn[03], desIn[11], desIn[19], desIn[27], desIn[35], desIn[43], |
desIn[51], desIn[59], desIn[01], desIn[09], desIn[17], desIn[25], |
desIn[33], desIn[41], desIn[49], desIn[57] }; |
|
// Perform final permutation |
assign desOut = { FP[40], FP[08], FP[48], FP[16], FP[56], FP[24], FP[64], FP[32], |
FP[39], FP[07], FP[47], FP[15], FP[55], FP[23], FP[63], FP[31], |
FP[38], FP[06], FP[46], FP[14], FP[54], FP[22], FP[62], FP[30], |
FP[37], FP[05], FP[45], FP[13], FP[53], FP[21], FP[61], FP[29], |
FP[36], FP[04], FP[44], FP[12], FP[52], FP[20], FP[60], FP[28], |
FP[35], FP[03], FP[43], FP[11], FP[51], FP[19], FP[59], FP[27], |
FP[34], FP[02], FP[42], FP[10], FP[50], FP[18], FP[58], FP[26], |
FP[33], FP[01], FP[41], FP[09], FP[49], FP[17], FP[57], FP[25] }; |
|
|
endmodule |
/trunk/rtl/verilog/area_opt/key_sel3.v
0,0 → 1,865
///////////////////////////////////////////////////////////////////// |
//// //// |
//// KEY_SEL //// |
//// Select one of 16 sub-keys for round //// |
//// //// |
//// Author: Rudolf Usselmann //// |
//// rudi@asics.ws //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Copyright (C) 2001 Rudolf Usselmann //// |
//// 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. //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
|
module key_sel3(K_sub, key1, key2, key3, roundSel, decrypt); |
output [1:48] K_sub; |
input [55:0] key1, key2, key3; |
input [5:0] roundSel; |
input decrypt; |
|
wire decrypt_int; |
reg [55:0] K; |
reg [1:48] K_sub; |
wire [1:48] K1, K2, K3, K4, K5, K6, K7, K8, K9; |
wire [1:48] K10, K11, K12, K13, K14, K15, K16; |
|
always @(roundSel or decrypt or key1 or key2 or key3) |
case ({decrypt, roundSel[5:4]}) // synopsys full_case parallel_case |
3'b0_00: K = key1; |
3'b0_01: K = key2; |
3'b0_10: K = key3; |
3'b1_00: K = key3; |
3'b1_01: K = key2; |
3'b1_10: K = key1; |
endcase |
|
assign decrypt_int = (roundSel[5:4]==2'h1) ? !decrypt : decrypt; |
|
always @(K1 or K2 or K3 or K4 or K5 or K6 or K7 or K8 or K9 or K10 |
or K11 or K12 or K13 or K14 or K15 or K16 or roundSel) |
case(roundSel[3:0]) // synopsys full_case parallel_case |
0: K_sub = K1; |
1: K_sub = K2; |
2: K_sub = K3; |
3: K_sub = K4; |
4: K_sub = K5; |
5: K_sub = K6; |
6: K_sub = K7; |
7: K_sub = K8; |
8: K_sub = K9; |
9: K_sub = K10; |
10: K_sub = K11; |
11: K_sub = K12; |
12: K_sub = K13; |
13: K_sub = K14; |
14: K_sub = K15; |
15: K_sub = K16; |
endcase |
|
|
assign K16[1] = decrypt_int ? K[47] : K[40]; |
assign K16[2] = decrypt_int ? K[11] : K[4]; |
assign K16[3] = decrypt_int ? K[26] : K[19]; |
assign K16[4] = decrypt_int ? K[3] : K[53]; |
assign K16[5] = decrypt_int ? K[13] : K[6]; |
assign K16[6] = decrypt_int ? K[41] : K[34]; |
assign K16[7] = decrypt_int ? K[27] : K[20]; |
assign K16[8] = decrypt_int ? K[6] : K[24]; |
assign K16[9] = decrypt_int ? K[54] : K[47]; |
assign K16[10] = decrypt_int ? K[48] : K[41]; |
assign K16[11] = decrypt_int ? K[39] : K[32]; |
assign K16[12] = decrypt_int ? K[19] : K[12]; |
assign K16[13] = decrypt_int ? K[53] : K[46]; |
assign K16[14] = decrypt_int ? K[25] : K[18]; |
assign K16[15] = decrypt_int ? K[33] : K[26]; |
assign K16[16] = decrypt_int ? K[34] : K[27]; |
assign K16[17] = decrypt_int ? K[17] : K[10]; |
assign K16[18] = decrypt_int ? K[5] : K[55]; |
assign K16[19] = decrypt_int ? K[4] : K[54]; |
assign K16[20] = decrypt_int ? K[55] : K[48]; |
assign K16[21] = decrypt_int ? K[24] : K[17]; |
assign K16[22] = decrypt_int ? K[32] : K[25]; |
assign K16[23] = decrypt_int ? K[40] : K[33]; |
assign K16[24] = decrypt_int ? K[20] : K[13]; |
assign K16[25] = decrypt_int ? K[36] : K[29]; |
assign K16[26] = decrypt_int ? K[31] : K[51]; |
assign K16[27] = decrypt_int ? K[21] : K[14]; |
assign K16[28] = decrypt_int ? K[8] : K[1]; |
assign K16[29] = decrypt_int ? K[23] : K[16]; |
assign K16[30] = decrypt_int ? K[52] : K[45]; |
assign K16[31] = decrypt_int ? K[14] : K[7]; |
assign K16[32] = decrypt_int ? K[29] : K[22]; |
assign K16[33] = decrypt_int ? K[51] : K[44]; |
assign K16[34] = decrypt_int ? K[9] : K[2]; |
assign K16[35] = decrypt_int ? K[35] : K[28]; |
assign K16[36] = decrypt_int ? K[30] : K[23]; |
assign K16[37] = decrypt_int ? K[2] : K[50]; |
assign K16[38] = decrypt_int ? K[37] : K[30]; |
assign K16[39] = decrypt_int ? K[22] : K[15]; |
assign K16[40] = decrypt_int ? K[0] : K[52]; |
assign K16[41] = decrypt_int ? K[42] : K[35]; |
assign K16[42] = decrypt_int ? K[38] : K[31]; |
assign K16[43] = decrypt_int ? K[16] : K[9]; |
assign K16[44] = decrypt_int ? K[43] : K[36]; |
assign K16[45] = decrypt_int ? K[44] : K[37]; |
assign K16[46] = decrypt_int ? K[1] : K[49]; |
assign K16[47] = decrypt_int ? K[7] : K[0]; |
assign K16[48] = decrypt_int ? K[28] : K[21]; |
|
assign K15[1] = decrypt_int ? K[54] : K[33]; |
assign K15[2] = decrypt_int ? K[18] : K[54]; |
assign K15[3] = decrypt_int ? K[33] : K[12]; |
assign K15[4] = decrypt_int ? K[10] : K[46]; |
assign K15[5] = decrypt_int ? K[20] : K[24]; |
assign K15[6] = decrypt_int ? K[48] : K[27]; |
assign K15[7] = decrypt_int ? K[34] : K[13]; |
assign K15[8] = decrypt_int ? K[13] : K[17]; |
assign K15[9] = decrypt_int ? K[4] : K[40]; |
assign K15[10] = decrypt_int ? K[55] : K[34]; |
assign K15[11] = decrypt_int ? K[46] : K[25]; |
assign K15[12] = decrypt_int ? K[26] : K[5]; |
assign K15[13] = decrypt_int ? K[3] : K[39]; |
assign K15[14] = decrypt_int ? K[32] : K[11]; |
assign K15[15] = decrypt_int ? K[40] : K[19]; |
assign K15[16] = decrypt_int ? K[41] : K[20]; |
assign K15[17] = decrypt_int ? K[24] : K[3]; |
assign K15[18] = decrypt_int ? K[12] : K[48]; |
assign K15[19] = decrypt_int ? K[11] : K[47]; |
assign K15[20] = decrypt_int ? K[5] : K[41]; |
assign K15[21] = decrypt_int ? K[6] : K[10]; |
assign K15[22] = decrypt_int ? K[39] : K[18]; |
assign K15[23] = decrypt_int ? K[47] : K[26]; |
assign K15[24] = decrypt_int ? K[27] : K[6]; |
assign K15[25] = decrypt_int ? K[43] : K[22]; |
assign K15[26] = decrypt_int ? K[38] : K[44]; |
assign K15[27] = decrypt_int ? K[28] : K[7]; |
assign K15[28] = decrypt_int ? K[15] : K[49]; |
assign K15[29] = decrypt_int ? K[30] : K[9]; |
assign K15[30] = decrypt_int ? K[0] : K[38]; |
assign K15[31] = decrypt_int ? K[21] : K[0]; |
assign K15[32] = decrypt_int ? K[36] : K[15]; |
assign K15[33] = decrypt_int ? K[31] : K[37]; |
assign K15[34] = decrypt_int ? K[16] : K[50]; |
assign K15[35] = decrypt_int ? K[42] : K[21]; |
assign K15[36] = decrypt_int ? K[37] : K[16]; |
assign K15[37] = decrypt_int ? K[9] : K[43]; |
assign K15[38] = decrypt_int ? K[44] : K[23]; |
assign K15[39] = decrypt_int ? K[29] : K[8]; |
assign K15[40] = decrypt_int ? K[7] : K[45]; |
assign K15[41] = decrypt_int ? K[49] : K[28]; |
assign K15[42] = decrypt_int ? K[45] : K[51]; |
assign K15[43] = decrypt_int ? K[23] : K[2]; |
assign K15[44] = decrypt_int ? K[50] : K[29]; |
assign K15[45] = decrypt_int ? K[51] : K[30]; |
assign K15[46] = decrypt_int ? K[8] : K[42]; |
assign K15[47] = decrypt_int ? K[14] : K[52]; |
assign K15[48] = decrypt_int ? K[35] : K[14]; |
|
assign K14[1] = decrypt_int ? K[11] : K[19]; |
assign K14[2] = decrypt_int ? K[32] : K[40]; |
assign K14[3] = decrypt_int ? K[47] : K[55]; |
assign K14[4] = decrypt_int ? K[24] : K[32]; |
assign K14[5] = decrypt_int ? K[34] : K[10]; |
assign K14[6] = decrypt_int ? K[5] : K[13]; |
assign K14[7] = decrypt_int ? K[48] : K[24]; |
assign K14[8] = decrypt_int ? K[27] : K[3]; |
assign K14[9] = decrypt_int ? K[18] : K[26]; |
assign K14[10] = decrypt_int ? K[12] : K[20]; |
assign K14[11] = decrypt_int ? K[3] : K[11]; |
assign K14[12] = decrypt_int ? K[40] : K[48]; |
assign K14[13] = decrypt_int ? K[17] : K[25]; |
assign K14[14] = decrypt_int ? K[46] : K[54]; |
assign K14[15] = decrypt_int ? K[54] : K[5]; |
assign K14[16] = decrypt_int ? K[55] : K[6]; |
assign K14[17] = decrypt_int ? K[13] : K[46]; |
assign K14[18] = decrypt_int ? K[26] : K[34]; |
assign K14[19] = decrypt_int ? K[25] : K[33]; |
assign K14[20] = decrypt_int ? K[19] : K[27]; |
assign K14[21] = decrypt_int ? K[20] : K[53]; |
assign K14[22] = decrypt_int ? K[53] : K[4]; |
assign K14[23] = decrypt_int ? K[4] : K[12]; |
assign K14[24] = decrypt_int ? K[41] : K[17]; |
assign K14[25] = decrypt_int ? K[2] : K[8]; |
assign K14[26] = decrypt_int ? K[52] : K[30]; |
assign K14[27] = decrypt_int ? K[42] : K[52]; |
assign K14[28] = decrypt_int ? K[29] : K[35]; |
assign K14[29] = decrypt_int ? K[44] : K[50]; |
assign K14[30] = decrypt_int ? K[14] : K[51]; |
assign K14[31] = decrypt_int ? K[35] : K[45]; |
assign K14[32] = decrypt_int ? K[50] : K[1]; |
assign K14[33] = decrypt_int ? K[45] : K[23]; |
assign K14[34] = decrypt_int ? K[30] : K[36]; |
assign K14[35] = decrypt_int ? K[1] : K[7]; |
assign K14[36] = decrypt_int ? K[51] : K[2]; |
assign K14[37] = decrypt_int ? K[23] : K[29]; |
assign K14[38] = decrypt_int ? K[31] : K[9]; |
assign K14[39] = decrypt_int ? K[43] : K[49]; |
assign K14[40] = decrypt_int ? K[21] : K[31]; |
assign K14[41] = decrypt_int ? K[8] : K[14]; |
assign K14[42] = decrypt_int ? K[0] : K[37]; |
assign K14[43] = decrypt_int ? K[37] : K[43]; |
assign K14[44] = decrypt_int ? K[9] : K[15]; |
assign K14[45] = decrypt_int ? K[38] : K[16]; |
assign K14[46] = decrypt_int ? K[22] : K[28]; |
assign K14[47] = decrypt_int ? K[28] : K[38]; |
assign K14[48] = decrypt_int ? K[49] : K[0]; |
|
assign K13[1] = decrypt_int ? K[25] : K[5]; |
assign K13[2] = decrypt_int ? K[46] : K[26]; |
assign K13[3] = decrypt_int ? K[4] : K[41]; |
assign K13[4] = decrypt_int ? K[13] : K[18]; |
assign K13[5] = decrypt_int ? K[48] : K[53]; |
assign K13[6] = decrypt_int ? K[19] : K[24]; |
assign K13[7] = decrypt_int ? K[5] : K[10]; |
assign K13[8] = decrypt_int ? K[41] : K[46]; |
assign K13[9] = decrypt_int ? K[32] : K[12]; |
assign K13[10] = decrypt_int ? K[26] : K[6]; |
assign K13[11] = decrypt_int ? K[17] : K[54]; |
assign K13[12] = decrypt_int ? K[54] : K[34]; |
assign K13[13] = decrypt_int ? K[6] : K[11]; |
assign K13[14] = decrypt_int ? K[3] : K[40]; |
assign K13[15] = decrypt_int ? K[11] : K[48]; |
assign K13[16] = decrypt_int ? K[12] : K[17]; |
assign K13[17] = decrypt_int ? K[27] : K[32]; |
assign K13[18] = decrypt_int ? K[40] : K[20]; |
assign K13[19] = decrypt_int ? K[39] : K[19]; |
assign K13[20] = decrypt_int ? K[33] : K[13]; |
assign K13[21] = decrypt_int ? K[34] : K[39]; |
assign K13[22] = decrypt_int ? K[10] : K[47]; |
assign K13[23] = decrypt_int ? K[18] : K[55]; |
assign K13[24] = decrypt_int ? K[55] : K[3]; |
assign K13[25] = decrypt_int ? K[16] : K[49]; |
assign K13[26] = decrypt_int ? K[7] : K[16]; |
assign K13[27] = decrypt_int ? K[1] : K[38]; |
assign K13[28] = decrypt_int ? K[43] : K[21]; |
assign K13[29] = decrypt_int ? K[31] : K[36]; |
assign K13[30] = decrypt_int ? K[28] : K[37]; |
assign K13[31] = decrypt_int ? K[49] : K[31]; |
assign K13[32] = decrypt_int ? K[9] : K[42]; |
assign K13[33] = decrypt_int ? K[0] : K[9]; |
assign K13[34] = decrypt_int ? K[44] : K[22]; |
assign K13[35] = decrypt_int ? K[15] : K[52]; |
assign K13[36] = decrypt_int ? K[38] : K[43]; |
assign K13[37] = decrypt_int ? K[37] : K[15]; |
assign K13[38] = decrypt_int ? K[45] : K[50]; |
assign K13[39] = decrypt_int ? K[2] : K[35]; |
assign K13[40] = decrypt_int ? K[35] : K[44]; |
assign K13[41] = decrypt_int ? K[22] : K[0]; |
assign K13[42] = decrypt_int ? K[14] : K[23]; |
assign K13[43] = decrypt_int ? K[51] : K[29]; |
assign K13[44] = decrypt_int ? K[23] : K[1]; |
assign K13[45] = decrypt_int ? K[52] : K[2]; |
assign K13[46] = decrypt_int ? K[36] : K[14]; |
assign K13[47] = decrypt_int ? K[42] : K[51]; |
assign K13[48] = decrypt_int ? K[8] : K[45]; |
|
assign K12[1] = decrypt_int ? K[39] : K[48]; |
assign K12[2] = decrypt_int ? K[3] : K[12]; |
assign K12[3] = decrypt_int ? K[18] : K[27]; |
assign K12[4] = decrypt_int ? K[27] : K[4]; |
assign K12[5] = decrypt_int ? K[5] : K[39]; |
assign K12[6] = decrypt_int ? K[33] : K[10]; |
assign K12[7] = decrypt_int ? K[19] : K[53]; |
assign K12[8] = decrypt_int ? K[55] : K[32]; |
assign K12[9] = decrypt_int ? K[46] : K[55]; |
assign K12[10] = decrypt_int ? K[40] : K[17]; |
assign K12[11] = decrypt_int ? K[6] : K[40]; |
assign K12[12] = decrypt_int ? K[11] : K[20]; |
assign K12[13] = decrypt_int ? K[20] : K[54]; |
assign K12[14] = decrypt_int ? K[17] : K[26]; |
assign K12[15] = decrypt_int ? K[25] : K[34]; |
assign K12[16] = decrypt_int ? K[26] : K[3]; |
assign K12[17] = decrypt_int ? K[41] : K[18]; |
assign K12[18] = decrypt_int ? K[54] : K[6]; |
assign K12[19] = decrypt_int ? K[53] : K[5]; |
assign K12[20] = decrypt_int ? K[47] : K[24]; |
assign K12[21] = decrypt_int ? K[48] : K[25]; |
assign K12[22] = decrypt_int ? K[24] : K[33]; |
assign K12[23] = decrypt_int ? K[32] : K[41]; |
assign K12[24] = decrypt_int ? K[12] : K[46]; |
assign K12[25] = decrypt_int ? K[30] : K[35]; |
assign K12[26] = decrypt_int ? K[21] : K[2]; |
assign K12[27] = decrypt_int ? K[15] : K[51]; |
assign K12[28] = decrypt_int ? K[2] : K[7]; |
assign K12[29] = decrypt_int ? K[45] : K[22]; |
assign K12[30] = decrypt_int ? K[42] : K[23]; |
assign K12[31] = decrypt_int ? K[8] : K[44]; |
assign K12[32] = decrypt_int ? K[23] : K[28]; |
assign K12[33] = decrypt_int ? K[14] : K[50]; |
assign K12[34] = decrypt_int ? K[31] : K[8]; |
assign K12[35] = decrypt_int ? K[29] : K[38]; |
assign K12[36] = decrypt_int ? K[52] : K[29]; |
assign K12[37] = decrypt_int ? K[51] : K[1]; |
assign K12[38] = decrypt_int ? K[0] : K[36]; |
assign K12[39] = decrypt_int ? K[16] : K[21]; |
assign K12[40] = decrypt_int ? K[49] : K[30]; |
assign K12[41] = decrypt_int ? K[36] : K[45]; |
assign K12[42] = decrypt_int ? K[28] : K[9]; |
assign K12[43] = decrypt_int ? K[38] : K[15]; |
assign K12[44] = decrypt_int ? K[37] : K[42]; |
assign K12[45] = decrypt_int ? K[7] : K[43]; |
assign K12[46] = decrypt_int ? K[50] : K[0]; |
assign K12[47] = decrypt_int ? K[1] : K[37]; |
assign K12[48] = decrypt_int ? K[22] : K[31]; |
|
assign K11[1] = decrypt_int ? K[53] : K[34]; |
assign K11[2] = decrypt_int ? K[17] : K[55]; |
assign K11[3] = decrypt_int ? K[32] : K[13]; |
assign K11[4] = decrypt_int ? K[41] : K[47]; |
assign K11[5] = decrypt_int ? K[19] : K[25]; |
assign K11[6] = decrypt_int ? K[47] : K[53]; |
assign K11[7] = decrypt_int ? K[33] : K[39]; |
assign K11[8] = decrypt_int ? K[12] : K[18]; |
assign K11[9] = decrypt_int ? K[3] : K[41]; |
assign K11[10] = decrypt_int ? K[54] : K[3]; |
assign K11[11] = decrypt_int ? K[20] : K[26]; |
assign K11[12] = decrypt_int ? K[25] : K[6]; |
assign K11[13] = decrypt_int ? K[34] : K[40]; |
assign K11[14] = decrypt_int ? K[6] : K[12]; |
assign K11[15] = decrypt_int ? K[39] : K[20]; |
assign K11[16] = decrypt_int ? K[40] : K[46]; |
assign K11[17] = decrypt_int ? K[55] : K[4]; |
assign K11[18] = decrypt_int ? K[11] : K[17]; |
assign K11[19] = decrypt_int ? K[10] : K[48]; |
assign K11[20] = decrypt_int ? K[4] : K[10]; |
assign K11[21] = decrypt_int ? K[5] : K[11]; |
assign K11[22] = decrypt_int ? K[13] : K[19]; |
assign K11[23] = decrypt_int ? K[46] : K[27]; |
assign K11[24] = decrypt_int ? K[26] : K[32]; |
assign K11[25] = decrypt_int ? K[44] : K[21]; |
assign K11[26] = decrypt_int ? K[35] : K[43]; |
assign K11[27] = decrypt_int ? K[29] : K[37]; |
assign K11[28] = decrypt_int ? K[16] : K[52]; |
assign K11[29] = decrypt_int ? K[0] : K[8]; |
assign K11[30] = decrypt_int ? K[1] : K[9]; |
assign K11[31] = decrypt_int ? K[22] : K[30]; |
assign K11[32] = decrypt_int ? K[37] : K[14]; |
assign K11[33] = decrypt_int ? K[28] : K[36]; |
assign K11[34] = decrypt_int ? K[45] : K[49]; |
assign K11[35] = decrypt_int ? K[43] : K[51]; |
assign K11[36] = decrypt_int ? K[7] : K[15]; |
assign K11[37] = decrypt_int ? K[38] : K[42]; |
assign K11[38] = decrypt_int ? K[14] : K[22]; |
assign K11[39] = decrypt_int ? K[30] : K[7]; |
assign K11[40] = decrypt_int ? K[8] : K[16]; |
assign K11[41] = decrypt_int ? K[50] : K[31]; |
assign K11[42] = decrypt_int ? K[42] : K[50]; |
assign K11[43] = decrypt_int ? K[52] : K[1]; |
assign K11[44] = decrypt_int ? K[51] : K[28]; |
assign K11[45] = decrypt_int ? K[21] : K[29]; |
assign K11[46] = decrypt_int ? K[9] : K[45]; |
assign K11[47] = decrypt_int ? K[15] : K[23]; |
assign K11[48] = decrypt_int ? K[36] : K[44]; |
|
assign K10[1] = decrypt_int ? K[10] : K[20]; |
assign K10[2] = decrypt_int ? K[6] : K[41]; |
assign K10[3] = decrypt_int ? K[46] : K[24]; |
assign K10[4] = decrypt_int ? K[55] : K[33]; |
assign K10[5] = decrypt_int ? K[33] : K[11]; |
assign K10[6] = decrypt_int ? K[4] : K[39]; |
assign K10[7] = decrypt_int ? K[47] : K[25]; |
assign K10[8] = decrypt_int ? K[26] : K[4]; |
assign K10[9] = decrypt_int ? K[17] : K[27]; |
assign K10[10] = decrypt_int ? K[11] : K[46]; |
assign K10[11] = decrypt_int ? K[34] : K[12]; |
assign K10[12] = decrypt_int ? K[39] : K[17]; |
assign K10[13] = decrypt_int ? K[48] : K[26]; |
assign K10[14] = decrypt_int ? K[20] : K[55]; |
assign K10[15] = decrypt_int ? K[53] : K[6]; |
assign K10[16] = decrypt_int ? K[54] : K[32]; |
assign K10[17] = decrypt_int ? K[12] : K[47]; |
assign K10[18] = decrypt_int ? K[25] : K[3]; |
assign K10[19] = decrypt_int ? K[24] : K[34]; |
assign K10[20] = decrypt_int ? K[18] : K[53]; |
assign K10[21] = decrypt_int ? K[19] : K[54]; |
assign K10[22] = decrypt_int ? K[27] : K[5]; |
assign K10[23] = decrypt_int ? K[3] : K[13]; |
assign K10[24] = decrypt_int ? K[40] : K[18]; |
assign K10[25] = decrypt_int ? K[31] : K[7]; |
assign K10[26] = decrypt_int ? K[49] : K[29]; |
assign K10[27] = decrypt_int ? K[43] : K[23]; |
assign K10[28] = decrypt_int ? K[30] : K[38]; |
assign K10[29] = decrypt_int ? K[14] : K[49]; |
assign K10[30] = decrypt_int ? K[15] : K[50]; |
assign K10[31] = decrypt_int ? K[36] : K[16]; |
assign K10[32] = decrypt_int ? K[51] : K[0]; |
assign K10[33] = decrypt_int ? K[42] : K[22]; |
assign K10[34] = decrypt_int ? K[0] : K[35]; |
assign K10[35] = decrypt_int ? K[2] : K[37]; |
assign K10[36] = decrypt_int ? K[21] : K[1]; |
assign K10[37] = decrypt_int ? K[52] : K[28]; |
assign K10[38] = decrypt_int ? K[28] : K[8]; |
assign K10[39] = decrypt_int ? K[44] : K[52]; |
assign K10[40] = decrypt_int ? K[22] : K[2]; |
assign K10[41] = decrypt_int ? K[9] : K[44]; |
assign K10[42] = decrypt_int ? K[1] : K[36]; |
assign K10[43] = decrypt_int ? K[7] : K[42]; |
assign K10[44] = decrypt_int ? K[38] : K[14]; |
assign K10[45] = decrypt_int ? K[35] : K[15]; |
assign K10[46] = decrypt_int ? K[23] : K[31]; |
assign K10[47] = decrypt_int ? K[29] : K[9]; |
assign K10[48] = decrypt_int ? K[50] : K[30]; |
|
assign K9[1] = decrypt_int ? K[24] : K[6]; |
assign K9[2] = decrypt_int ? K[20] : K[27]; |
assign K9[3] = decrypt_int ? K[3] : K[10]; |
assign K9[4] = decrypt_int ? K[12] : K[19]; |
assign K9[5] = decrypt_int ? K[47] : K[54]; |
assign K9[6] = decrypt_int ? K[18] : K[25]; |
assign K9[7] = decrypt_int ? K[4] : K[11]; |
assign K9[8] = decrypt_int ? K[40] : K[47]; |
assign K9[9] = decrypt_int ? K[6] : K[13]; |
assign K9[10] = decrypt_int ? K[25] : K[32]; |
assign K9[11] = decrypt_int ? K[48] : K[55]; |
assign K9[12] = decrypt_int ? K[53] : K[3]; |
assign K9[13] = decrypt_int ? K[5] : K[12]; |
assign K9[14] = decrypt_int ? K[34] : K[41]; |
assign K9[15] = decrypt_int ? K[10] : K[17]; |
assign K9[16] = decrypt_int ? K[11] : K[18]; |
assign K9[17] = decrypt_int ? K[26] : K[33]; |
assign K9[18] = decrypt_int ? K[39] : K[46]; |
assign K9[19] = decrypt_int ? K[13] : K[20]; |
assign K9[20] = decrypt_int ? K[32] : K[39]; |
assign K9[21] = decrypt_int ? K[33] : K[40]; |
assign K9[22] = decrypt_int ? K[41] : K[48]; |
assign K9[23] = decrypt_int ? K[17] : K[24]; |
assign K9[24] = decrypt_int ? K[54] : K[4]; |
assign K9[25] = decrypt_int ? K[45] : K[52]; |
assign K9[26] = decrypt_int ? K[8] : K[15]; |
assign K9[27] = decrypt_int ? K[2] : K[9]; |
assign K9[28] = decrypt_int ? K[44] : K[51]; |
assign K9[29] = decrypt_int ? K[28] : K[35]; |
assign K9[30] = decrypt_int ? K[29] : K[36]; |
assign K9[31] = decrypt_int ? K[50] : K[2]; |
assign K9[32] = decrypt_int ? K[38] : K[45]; |
assign K9[33] = decrypt_int ? K[1] : K[8]; |
assign K9[34] = decrypt_int ? K[14] : K[21]; |
assign K9[35] = decrypt_int ? K[16] : K[23]; |
assign K9[36] = decrypt_int ? K[35] : K[42]; |
assign K9[37] = decrypt_int ? K[7] : K[14]; |
assign K9[38] = decrypt_int ? K[42] : K[49]; |
assign K9[39] = decrypt_int ? K[31] : K[38]; |
assign K9[40] = decrypt_int ? K[36] : K[43]; |
assign K9[41] = decrypt_int ? K[23] : K[30]; |
assign K9[42] = decrypt_int ? K[15] : K[22]; |
assign K9[43] = decrypt_int ? K[21] : K[28]; |
assign K9[44] = decrypt_int ? K[52] : K[0]; |
assign K9[45] = decrypt_int ? K[49] : K[1]; |
assign K9[46] = decrypt_int ? K[37] : K[44]; |
assign K9[47] = decrypt_int ? K[43] : K[50]; |
assign K9[48] = decrypt_int ? K[9] : K[16]; |
|
assign K8[1] = decrypt_int ? K[6] : K[24]; |
assign K8[2] = decrypt_int ? K[27] : K[20]; |
assign K8[3] = decrypt_int ? K[10] : K[3]; |
assign K8[4] = decrypt_int ? K[19] : K[12]; |
assign K8[5] = decrypt_int ? K[54] : K[47]; |
assign K8[6] = decrypt_int ? K[25] : K[18]; |
assign K8[7] = decrypt_int ? K[11] : K[4]; |
assign K8[8] = decrypt_int ? K[47] : K[40]; |
assign K8[9] = decrypt_int ? K[13] : K[6]; |
assign K8[10] = decrypt_int ? K[32] : K[25]; |
assign K8[11] = decrypt_int ? K[55] : K[48]; |
assign K8[12] = decrypt_int ? K[3] : K[53]; |
assign K8[13] = decrypt_int ? K[12] : K[5]; |
assign K8[14] = decrypt_int ? K[41] : K[34]; |
assign K8[15] = decrypt_int ? K[17] : K[10]; |
assign K8[16] = decrypt_int ? K[18] : K[11]; |
assign K8[17] = decrypt_int ? K[33] : K[26]; |
assign K8[18] = decrypt_int ? K[46] : K[39]; |
assign K8[19] = decrypt_int ? K[20] : K[13]; |
assign K8[20] = decrypt_int ? K[39] : K[32]; |
assign K8[21] = decrypt_int ? K[40] : K[33]; |
assign K8[22] = decrypt_int ? K[48] : K[41]; |
assign K8[23] = decrypt_int ? K[24] : K[17]; |
assign K8[24] = decrypt_int ? K[4] : K[54]; |
assign K8[25] = decrypt_int ? K[52] : K[45]; |
assign K8[26] = decrypt_int ? K[15] : K[8]; |
assign K8[27] = decrypt_int ? K[9] : K[2]; |
assign K8[28] = decrypt_int ? K[51] : K[44]; |
assign K8[29] = decrypt_int ? K[35] : K[28]; |
assign K8[30] = decrypt_int ? K[36] : K[29]; |
assign K8[31] = decrypt_int ? K[2] : K[50]; |
assign K8[32] = decrypt_int ? K[45] : K[38]; |
assign K8[33] = decrypt_int ? K[8] : K[1]; |
assign K8[34] = decrypt_int ? K[21] : K[14]; |
assign K8[35] = decrypt_int ? K[23] : K[16]; |
assign K8[36] = decrypt_int ? K[42] : K[35]; |
assign K8[37] = decrypt_int ? K[14] : K[7]; |
assign K8[38] = decrypt_int ? K[49] : K[42]; |
assign K8[39] = decrypt_int ? K[38] : K[31]; |
assign K8[40] = decrypt_int ? K[43] : K[36]; |
assign K8[41] = decrypt_int ? K[30] : K[23]; |
assign K8[42] = decrypt_int ? K[22] : K[15]; |
assign K8[43] = decrypt_int ? K[28] : K[21]; |
assign K8[44] = decrypt_int ? K[0] : K[52]; |
assign K8[45] = decrypt_int ? K[1] : K[49]; |
assign K8[46] = decrypt_int ? K[44] : K[37]; |
assign K8[47] = decrypt_int ? K[50] : K[43]; |
assign K8[48] = decrypt_int ? K[16] : K[9]; |
|
assign K7[1] = decrypt_int ? K[20] : K[10]; |
assign K7[2] = decrypt_int ? K[41] : K[6]; |
assign K7[3] = decrypt_int ? K[24] : K[46]; |
assign K7[4] = decrypt_int ? K[33] : K[55]; |
assign K7[5] = decrypt_int ? K[11] : K[33]; |
assign K7[6] = decrypt_int ? K[39] : K[4]; |
assign K7[7] = decrypt_int ? K[25] : K[47]; |
assign K7[8] = decrypt_int ? K[4] : K[26]; |
assign K7[9] = decrypt_int ? K[27] : K[17]; |
assign K7[10] = decrypt_int ? K[46] : K[11]; |
assign K7[11] = decrypt_int ? K[12] : K[34]; |
assign K7[12] = decrypt_int ? K[17] : K[39]; |
assign K7[13] = decrypt_int ? K[26] : K[48]; |
assign K7[14] = decrypt_int ? K[55] : K[20]; |
assign K7[15] = decrypt_int ? K[6] : K[53]; |
assign K7[16] = decrypt_int ? K[32] : K[54]; |
assign K7[17] = decrypt_int ? K[47] : K[12]; |
assign K7[18] = decrypt_int ? K[3] : K[25]; |
assign K7[19] = decrypt_int ? K[34] : K[24]; |
assign K7[20] = decrypt_int ? K[53] : K[18]; |
assign K7[21] = decrypt_int ? K[54] : K[19]; |
assign K7[22] = decrypt_int ? K[5] : K[27]; |
assign K7[23] = decrypt_int ? K[13] : K[3]; |
assign K7[24] = decrypt_int ? K[18] : K[40]; |
assign K7[25] = decrypt_int ? K[7] : K[31]; |
assign K7[26] = decrypt_int ? K[29] : K[49]; |
assign K7[27] = decrypt_int ? K[23] : K[43]; |
assign K7[28] = decrypt_int ? K[38] : K[30]; |
assign K7[29] = decrypt_int ? K[49] : K[14]; |
assign K7[30] = decrypt_int ? K[50] : K[15]; |
assign K7[31] = decrypt_int ? K[16] : K[36]; |
assign K7[32] = decrypt_int ? K[0] : K[51]; |
assign K7[33] = decrypt_int ? K[22] : K[42]; |
assign K7[34] = decrypt_int ? K[35] : K[0]; |
assign K7[35] = decrypt_int ? K[37] : K[2]; |
assign K7[36] = decrypt_int ? K[1] : K[21]; |
assign K7[37] = decrypt_int ? K[28] : K[52]; |
assign K7[38] = decrypt_int ? K[8] : K[28]; |
assign K7[39] = decrypt_int ? K[52] : K[44]; |
assign K7[40] = decrypt_int ? K[2] : K[22]; |
assign K7[41] = decrypt_int ? K[44] : K[9]; |
assign K7[42] = decrypt_int ? K[36] : K[1]; |
assign K7[43] = decrypt_int ? K[42] : K[7]; |
assign K7[44] = decrypt_int ? K[14] : K[38]; |
assign K7[45] = decrypt_int ? K[15] : K[35]; |
assign K7[46] = decrypt_int ? K[31] : K[23]; |
assign K7[47] = decrypt_int ? K[9] : K[29]; |
assign K7[48] = decrypt_int ? K[30] : K[50]; |
|
assign K6[1] = decrypt_int ? K[34] : K[53]; |
assign K6[2] = decrypt_int ? K[55] : K[17]; |
assign K6[3] = decrypt_int ? K[13] : K[32]; |
assign K6[4] = decrypt_int ? K[47] : K[41]; |
assign K6[5] = decrypt_int ? K[25] : K[19]; |
assign K6[6] = decrypt_int ? K[53] : K[47]; |
assign K6[7] = decrypt_int ? K[39] : K[33]; |
assign K6[8] = decrypt_int ? K[18] : K[12]; |
assign K6[9] = decrypt_int ? K[41] : K[3]; |
assign K6[10] = decrypt_int ? K[3] : K[54]; |
assign K6[11] = decrypt_int ? K[26] : K[20]; |
assign K6[12] = decrypt_int ? K[6] : K[25]; |
assign K6[13] = decrypt_int ? K[40] : K[34]; |
assign K6[14] = decrypt_int ? K[12] : K[6]; |
assign K6[15] = decrypt_int ? K[20] : K[39]; |
assign K6[16] = decrypt_int ? K[46] : K[40]; |
assign K6[17] = decrypt_int ? K[4] : K[55]; |
assign K6[18] = decrypt_int ? K[17] : K[11]; |
assign K6[19] = decrypt_int ? K[48] : K[10]; |
assign K6[20] = decrypt_int ? K[10] : K[4]; |
assign K6[21] = decrypt_int ? K[11] : K[5]; |
assign K6[22] = decrypt_int ? K[19] : K[13]; |
assign K6[23] = decrypt_int ? K[27] : K[46]; |
assign K6[24] = decrypt_int ? K[32] : K[26]; |
assign K6[25] = decrypt_int ? K[21] : K[44]; |
assign K6[26] = decrypt_int ? K[43] : K[35]; |
assign K6[27] = decrypt_int ? K[37] : K[29]; |
assign K6[28] = decrypt_int ? K[52] : K[16]; |
assign K6[29] = decrypt_int ? K[8] : K[0]; |
assign K6[30] = decrypt_int ? K[9] : K[1]; |
assign K6[31] = decrypt_int ? K[30] : K[22]; |
assign K6[32] = decrypt_int ? K[14] : K[37]; |
assign K6[33] = decrypt_int ? K[36] : K[28]; |
assign K6[34] = decrypt_int ? K[49] : K[45]; |
assign K6[35] = decrypt_int ? K[51] : K[43]; |
assign K6[36] = decrypt_int ? K[15] : K[7]; |
assign K6[37] = decrypt_int ? K[42] : K[38]; |
assign K6[38] = decrypt_int ? K[22] : K[14]; |
assign K6[39] = decrypt_int ? K[7] : K[30]; |
assign K6[40] = decrypt_int ? K[16] : K[8]; |
assign K6[41] = decrypt_int ? K[31] : K[50]; |
assign K6[42] = decrypt_int ? K[50] : K[42]; |
assign K6[43] = decrypt_int ? K[1] : K[52]; |
assign K6[44] = decrypt_int ? K[28] : K[51]; |
assign K6[45] = decrypt_int ? K[29] : K[21]; |
assign K6[46] = decrypt_int ? K[45] : K[9]; |
assign K6[47] = decrypt_int ? K[23] : K[15]; |
assign K6[48] = decrypt_int ? K[44] : K[36]; |
|
assign K5[1] = decrypt_int ? K[48] : K[39]; |
assign K5[2] = decrypt_int ? K[12] : K[3]; |
assign K5[3] = decrypt_int ? K[27] : K[18]; |
assign K5[4] = decrypt_int ? K[4] : K[27]; |
assign K5[5] = decrypt_int ? K[39] : K[5]; |
assign K5[6] = decrypt_int ? K[10] : K[33]; |
assign K5[7] = decrypt_int ? K[53] : K[19]; |
assign K5[8] = decrypt_int ? K[32] : K[55]; |
assign K5[9] = decrypt_int ? K[55] : K[46]; |
assign K5[10] = decrypt_int ? K[17] : K[40]; |
assign K5[11] = decrypt_int ? K[40] : K[6]; |
assign K5[12] = decrypt_int ? K[20] : K[11]; |
assign K5[13] = decrypt_int ? K[54] : K[20]; |
assign K5[14] = decrypt_int ? K[26] : K[17]; |
assign K5[15] = decrypt_int ? K[34] : K[25]; |
assign K5[16] = decrypt_int ? K[3] : K[26]; |
assign K5[17] = decrypt_int ? K[18] : K[41]; |
assign K5[18] = decrypt_int ? K[6] : K[54]; |
assign K5[19] = decrypt_int ? K[5] : K[53]; |
assign K5[20] = decrypt_int ? K[24] : K[47]; |
assign K5[21] = decrypt_int ? K[25] : K[48]; |
assign K5[22] = decrypt_int ? K[33] : K[24]; |
assign K5[23] = decrypt_int ? K[41] : K[32]; |
assign K5[24] = decrypt_int ? K[46] : K[12]; |
assign K5[25] = decrypt_int ? K[35] : K[30]; |
assign K5[26] = decrypt_int ? K[2] : K[21]; |
assign K5[27] = decrypt_int ? K[51] : K[15]; |
assign K5[28] = decrypt_int ? K[7] : K[2]; |
assign K5[29] = decrypt_int ? K[22] : K[45]; |
assign K5[30] = decrypt_int ? K[23] : K[42]; |
assign K5[31] = decrypt_int ? K[44] : K[8]; |
assign K5[32] = decrypt_int ? K[28] : K[23]; |
assign K5[33] = decrypt_int ? K[50] : K[14]; |
assign K5[34] = decrypt_int ? K[8] : K[31]; |
assign K5[35] = decrypt_int ? K[38] : K[29]; |
assign K5[36] = decrypt_int ? K[29] : K[52]; |
assign K5[37] = decrypt_int ? K[1] : K[51]; |
assign K5[38] = decrypt_int ? K[36] : K[0]; |
assign K5[39] = decrypt_int ? K[21] : K[16]; |
assign K5[40] = decrypt_int ? K[30] : K[49]; |
assign K5[41] = decrypt_int ? K[45] : K[36]; |
assign K5[42] = decrypt_int ? K[9] : K[28]; |
assign K5[43] = decrypt_int ? K[15] : K[38]; |
assign K5[44] = decrypt_int ? K[42] : K[37]; |
assign K5[45] = decrypt_int ? K[43] : K[7]; |
assign K5[46] = decrypt_int ? K[0] : K[50]; |
assign K5[47] = decrypt_int ? K[37] : K[1]; |
assign K5[48] = decrypt_int ? K[31] : K[22]; |
|
assign K4[1] = decrypt_int ? K[5] : K[25]; |
assign K4[2] = decrypt_int ? K[26] : K[46]; |
assign K4[3] = decrypt_int ? K[41] : K[4]; |
assign K4[4] = decrypt_int ? K[18] : K[13]; |
assign K4[5] = decrypt_int ? K[53] : K[48]; |
assign K4[6] = decrypt_int ? K[24] : K[19]; |
assign K4[7] = decrypt_int ? K[10] : K[5]; |
assign K4[8] = decrypt_int ? K[46] : K[41]; |
assign K4[9] = decrypt_int ? K[12] : K[32]; |
assign K4[10] = decrypt_int ? K[6] : K[26]; |
assign K4[11] = decrypt_int ? K[54] : K[17]; |
assign K4[12] = decrypt_int ? K[34] : K[54]; |
assign K4[13] = decrypt_int ? K[11] : K[6]; |
assign K4[14] = decrypt_int ? K[40] : K[3]; |
assign K4[15] = decrypt_int ? K[48] : K[11]; |
assign K4[16] = decrypt_int ? K[17] : K[12]; |
assign K4[17] = decrypt_int ? K[32] : K[27]; |
assign K4[18] = decrypt_int ? K[20] : K[40]; |
assign K4[19] = decrypt_int ? K[19] : K[39]; |
assign K4[20] = decrypt_int ? K[13] : K[33]; |
assign K4[21] = decrypt_int ? K[39] : K[34]; |
assign K4[22] = decrypt_int ? K[47] : K[10]; |
assign K4[23] = decrypt_int ? K[55] : K[18]; |
assign K4[24] = decrypt_int ? K[3] : K[55]; |
assign K4[25] = decrypt_int ? K[49] : K[16]; |
assign K4[26] = decrypt_int ? K[16] : K[7]; |
assign K4[27] = decrypt_int ? K[38] : K[1]; |
assign K4[28] = decrypt_int ? K[21] : K[43]; |
assign K4[29] = decrypt_int ? K[36] : K[31]; |
assign K4[30] = decrypt_int ? K[37] : K[28]; |
assign K4[31] = decrypt_int ? K[31] : K[49]; |
assign K4[32] = decrypt_int ? K[42] : K[9]; |
assign K4[33] = decrypt_int ? K[9] : K[0]; |
assign K4[34] = decrypt_int ? K[22] : K[44]; |
assign K4[35] = decrypt_int ? K[52] : K[15]; |
assign K4[36] = decrypt_int ? K[43] : K[38]; |
assign K4[37] = decrypt_int ? K[15] : K[37]; |
assign K4[38] = decrypt_int ? K[50] : K[45]; |
assign K4[39] = decrypt_int ? K[35] : K[2]; |
assign K4[40] = decrypt_int ? K[44] : K[35]; |
assign K4[41] = decrypt_int ? K[0] : K[22]; |
assign K4[42] = decrypt_int ? K[23] : K[14]; |
assign K4[43] = decrypt_int ? K[29] : K[51]; |
assign K4[44] = decrypt_int ? K[1] : K[23]; |
assign K4[45] = decrypt_int ? K[2] : K[52]; |
assign K4[46] = decrypt_int ? K[14] : K[36]; |
assign K4[47] = decrypt_int ? K[51] : K[42]; |
assign K4[48] = decrypt_int ? K[45] : K[8]; |
|
assign K3[1] = decrypt_int ? K[19] : K[11]; |
assign K3[2] = decrypt_int ? K[40] : K[32]; |
assign K3[3] = decrypt_int ? K[55] : K[47]; |
assign K3[4] = decrypt_int ? K[32] : K[24]; |
assign K3[5] = decrypt_int ? K[10] : K[34]; |
assign K3[6] = decrypt_int ? K[13] : K[5]; |
assign K3[7] = decrypt_int ? K[24] : K[48]; |
assign K3[8] = decrypt_int ? K[3] : K[27]; |
assign K3[9] = decrypt_int ? K[26] : K[18]; |
assign K3[10] = decrypt_int ? K[20] : K[12]; |
assign K3[11] = decrypt_int ? K[11] : K[3]; |
assign K3[12] = decrypt_int ? K[48] : K[40]; |
assign K3[13] = decrypt_int ? K[25] : K[17]; |
assign K3[14] = decrypt_int ? K[54] : K[46]; |
assign K3[15] = decrypt_int ? K[5] : K[54]; |
assign K3[16] = decrypt_int ? K[6] : K[55]; |
assign K3[17] = decrypt_int ? K[46] : K[13]; |
assign K3[18] = decrypt_int ? K[34] : K[26]; |
assign K3[19] = decrypt_int ? K[33] : K[25]; |
assign K3[20] = decrypt_int ? K[27] : K[19]; |
assign K3[21] = decrypt_int ? K[53] : K[20]; |
assign K3[22] = decrypt_int ? K[4] : K[53]; |
assign K3[23] = decrypt_int ? K[12] : K[4]; |
assign K3[24] = decrypt_int ? K[17] : K[41]; |
assign K3[25] = decrypt_int ? K[8] : K[2]; |
assign K3[26] = decrypt_int ? K[30] : K[52]; |
assign K3[27] = decrypt_int ? K[52] : K[42]; |
assign K3[28] = decrypt_int ? K[35] : K[29]; |
assign K3[29] = decrypt_int ? K[50] : K[44]; |
assign K3[30] = decrypt_int ? K[51] : K[14]; |
assign K3[31] = decrypt_int ? K[45] : K[35]; |
assign K3[32] = decrypt_int ? K[1] : K[50]; |
assign K3[33] = decrypt_int ? K[23] : K[45]; |
assign K3[34] = decrypt_int ? K[36] : K[30]; |
assign K3[35] = decrypt_int ? K[7] : K[1]; |
assign K3[36] = decrypt_int ? K[2] : K[51]; |
assign K3[37] = decrypt_int ? K[29] : K[23]; |
assign K3[38] = decrypt_int ? K[9] : K[31]; |
assign K3[39] = decrypt_int ? K[49] : K[43]; |
assign K3[40] = decrypt_int ? K[31] : K[21]; |
assign K3[41] = decrypt_int ? K[14] : K[8]; |
assign K3[42] = decrypt_int ? K[37] : K[0]; |
assign K3[43] = decrypt_int ? K[43] : K[37]; |
assign K3[44] = decrypt_int ? K[15] : K[9]; |
assign K3[45] = decrypt_int ? K[16] : K[38]; |
assign K3[46] = decrypt_int ? K[28] : K[22]; |
assign K3[47] = decrypt_int ? K[38] : K[28]; |
assign K3[48] = decrypt_int ? K[0] : K[49]; |
|
assign K2[1] = decrypt_int ? K[33] : K[54]; |
assign K2[2] = decrypt_int ? K[54] : K[18]; |
assign K2[3] = decrypt_int ? K[12] : K[33]; |
assign K2[4] = decrypt_int ? K[46] : K[10]; |
assign K2[5] = decrypt_int ? K[24] : K[20]; |
assign K2[6] = decrypt_int ? K[27] : K[48]; |
assign K2[7] = decrypt_int ? K[13] : K[34]; |
assign K2[8] = decrypt_int ? K[17] : K[13]; |
assign K2[9] = decrypt_int ? K[40] : K[4]; |
assign K2[10] = decrypt_int ? K[34] : K[55]; |
assign K2[11] = decrypt_int ? K[25] : K[46]; |
assign K2[12] = decrypt_int ? K[5] : K[26]; |
assign K2[13] = decrypt_int ? K[39] : K[3]; |
assign K2[14] = decrypt_int ? K[11] : K[32]; |
assign K2[15] = decrypt_int ? K[19] : K[40]; |
assign K2[16] = decrypt_int ? K[20] : K[41]; |
assign K2[17] = decrypt_int ? K[3] : K[24]; |
assign K2[18] = decrypt_int ? K[48] : K[12]; |
assign K2[19] = decrypt_int ? K[47] : K[11]; |
assign K2[20] = decrypt_int ? K[41] : K[5]; |
assign K2[21] = decrypt_int ? K[10] : K[6]; |
assign K2[22] = decrypt_int ? K[18] : K[39]; |
assign K2[23] = decrypt_int ? K[26] : K[47]; |
assign K2[24] = decrypt_int ? K[6] : K[27]; |
assign K2[25] = decrypt_int ? K[22] : K[43]; |
assign K2[26] = decrypt_int ? K[44] : K[38]; |
assign K2[27] = decrypt_int ? K[7] : K[28]; |
assign K2[28] = decrypt_int ? K[49] : K[15]; |
assign K2[29] = decrypt_int ? K[9] : K[30]; |
assign K2[30] = decrypt_int ? K[38] : K[0]; |
assign K2[31] = decrypt_int ? K[0] : K[21]; |
assign K2[32] = decrypt_int ? K[15] : K[36]; |
assign K2[33] = decrypt_int ? K[37] : K[31]; |
assign K2[34] = decrypt_int ? K[50] : K[16]; |
assign K2[35] = decrypt_int ? K[21] : K[42]; |
assign K2[36] = decrypt_int ? K[16] : K[37]; |
assign K2[37] = decrypt_int ? K[43] : K[9]; |
assign K2[38] = decrypt_int ? K[23] : K[44]; |
assign K2[39] = decrypt_int ? K[8] : K[29]; |
assign K2[40] = decrypt_int ? K[45] : K[7]; |
assign K2[41] = decrypt_int ? K[28] : K[49]; |
assign K2[42] = decrypt_int ? K[51] : K[45]; |
assign K2[43] = decrypt_int ? K[2] : K[23]; |
assign K2[44] = decrypt_int ? K[29] : K[50]; |
assign K2[45] = decrypt_int ? K[30] : K[51]; |
assign K2[46] = decrypt_int ? K[42] : K[8]; |
assign K2[47] = decrypt_int ? K[52] : K[14]; |
assign K2[48] = decrypt_int ? K[14] : K[35]; |
|
assign K1[1] = decrypt_int ? K[40] : K[47]; |
assign K1[2] = decrypt_int ? K[4] : K[11]; |
assign K1[3] = decrypt_int ? K[19] : K[26]; |
assign K1[4] = decrypt_int ? K[53] : K[3]; |
assign K1[5] = decrypt_int ? K[6] : K[13]; |
assign K1[6] = decrypt_int ? K[34] : K[41]; |
assign K1[7] = decrypt_int ? K[20] : K[27]; |
assign K1[8] = decrypt_int ? K[24] : K[6]; |
assign K1[9] = decrypt_int ? K[47] : K[54]; |
assign K1[10] = decrypt_int ? K[41] : K[48]; |
assign K1[11] = decrypt_int ? K[32] : K[39]; |
assign K1[12] = decrypt_int ? K[12] : K[19]; |
assign K1[13] = decrypt_int ? K[46] : K[53]; |
assign K1[14] = decrypt_int ? K[18] : K[25]; |
assign K1[15] = decrypt_int ? K[26] : K[33]; |
assign K1[16] = decrypt_int ? K[27] : K[34]; |
assign K1[17] = decrypt_int ? K[10] : K[17]; |
assign K1[18] = decrypt_int ? K[55] : K[5]; |
assign K1[19] = decrypt_int ? K[54] : K[4]; |
assign K1[20] = decrypt_int ? K[48] : K[55]; |
assign K1[21] = decrypt_int ? K[17] : K[24]; |
assign K1[22] = decrypt_int ? K[25] : K[32]; |
assign K1[23] = decrypt_int ? K[33] : K[40]; |
assign K1[24] = decrypt_int ? K[13] : K[20]; |
assign K1[25] = decrypt_int ? K[29] : K[36]; |
assign K1[26] = decrypt_int ? K[51] : K[31]; |
assign K1[27] = decrypt_int ? K[14] : K[21]; |
assign K1[28] = decrypt_int ? K[1] : K[8]; |
assign K1[29] = decrypt_int ? K[16] : K[23]; |
assign K1[30] = decrypt_int ? K[45] : K[52]; |
assign K1[31] = decrypt_int ? K[7] : K[14]; |
assign K1[32] = decrypt_int ? K[22] : K[29]; |
assign K1[33] = decrypt_int ? K[44] : K[51]; |
assign K1[34] = decrypt_int ? K[2] : K[9]; |
assign K1[35] = decrypt_int ? K[28] : K[35]; |
assign K1[36] = decrypt_int ? K[23] : K[30]; |
assign K1[37] = decrypt_int ? K[50] : K[2]; |
assign K1[38] = decrypt_int ? K[30] : K[37]; |
assign K1[39] = decrypt_int ? K[15] : K[22]; |
assign K1[40] = decrypt_int ? K[52] : K[0]; |
assign K1[41] = decrypt_int ? K[35] : K[42]; |
assign K1[42] = decrypt_int ? K[31] : K[38]; |
assign K1[43] = decrypt_int ? K[9] : K[16]; |
assign K1[44] = decrypt_int ? K[36] : K[43]; |
assign K1[45] = decrypt_int ? K[37] : K[44]; |
assign K1[46] = decrypt_int ? K[49] : K[1]; |
assign K1[47] = decrypt_int ? K[0] : K[7]; |
assign K1[48] = decrypt_int ? K[21] : K[28]; |
|
endmodule |
/trunk/rtl/verilog/perf_opt/des.v
208,7 → 208,6
always @(posedge clk) |
R15 <= #1 L14 ^ out15; |
|
|
// Perform the initial permutationi with the registerd desIn |
assign IP[1:64] = { desIn_r[06], desIn_r[14], desIn_r[22], desIn_r[30], desIn_r[38], desIn_r[46], |
desIn_r[54], desIn_r[62], desIn_r[04], desIn_r[12], desIn_r[20], desIn_r[28], |
/trunk/rtl/verilog/perf_opt/des3.v
0,0 → 1,79
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Tripple DES //// |
//// Tripple DES Top Level module //// |
//// //// |
//// Author: Rudolf Usselmann //// |
//// rudi@asics.ws //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
//// //// |
//// Copyright (C) 2002 Rudolf Usselmann //// |
//// 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. //// |
//// //// |
///////////////////////////////////////////////////////////////////// |
|
module des3(desOut, desIn, key1, key2, key3, decrypt, clk); |
output [63:0] desOut; |
input [63:0] desIn; |
input [55:0] key1; |
input [55:0] key2; |
input [55:0] key3; |
input decrypt; |
input clk; |
|
wire [55:0] key_a; |
wire [55:0] key_b; |
wire [55:0] key_c; |
wire [63:0] stage1_out, stage2_out; |
reg [55:0] key_b_r [16:0]; |
reg [55:0] key_c_r [33:0]; |
integer i; |
|
assign key_a = decrypt ? key3 : key1; |
assign key_b = key2; |
assign key_c = decrypt ? key1 : key3; |
|
always @(posedge clk) |
key_b_r[0] <= #1 key_b; |
|
always @(posedge clk) |
for(i=0;i<16;i=i+1) |
key_b_r[i+1] <= #1 key_b_r[i]; |
|
|
always @(posedge clk) |
key_c_r[0] <= #1 key_c; |
|
always @(posedge clk) |
for(i=0;i<33;i=i+1) |
key_c_r[i+1] <= #1 key_c_r[i]; |
|
des u0( .desOut(stage1_out), .desIn(desIn), .key(key_a), .decrypt(decrypt), .clk(clk) ); |
|
des u1( .desOut(stage2_out), .desIn(stage1_out), .key(key_b_r[16]), .decrypt(!decrypt), .clk(clk) ); |
|
des u2( .desOut(desOut), .desIn(stage2_out), .key(key_c_r[33]), .decrypt(decrypt), .clk(clk) ); |
|
endmodule |
|
|
/trunk/doc/README.txt
32,6 → 32,35
///////////////////////////////////////////////////////////////////// |
|
|
|
Triple DES Core |
=============== |
Attached is a Triple DES core implementation in verilog. It takes |
three standard 56 bit keys and 64 bits of data as input and generates |
a 64 bit encrypted/decrypted result. Two implementations are provided: |
|
1) Area Optimized (CBC Mode) |
This is a sequential implementation and needs 48 cycles to complete |
a full encryption/decryption cycle. |
|
|
2) Performance Optimized (EBC Mode) |
This is a pipelined implementation that has a 48 cycle pipeline |
(plus 1 input and 1 output register). It can perform a complete |
encryption/decryption every cycle. |
|
Performance |
=========== |
1) Area Optimized (CBC Mode) |
0.18u UMC ASIC process: 5.5K gates, > 160 Mhz |
Spartan IIe 100-6 : 1450 LUTs (about 60%), 88MHz |
|
2) Performance Optimized (EBC Mode) |
0.18u UMC ASIC process: 55K Gates, 300MHz (19.2 Gbits/sec) |
Virtex-II-1500-6: 79% utilization, 166Mhz (10.6 Gbits/sec) |
|
|
|
DES Core |
======== |
Attached is a DES core implementation in verilog. It takes a standard |
62,8 → 91,10
Altera FLEX 10K130E-1: 6485 lcells >76 Mhz |
|
|
|
Status |
====== |
31-Oct-2002 Added Triple DES |
05-Oct-2001 Added decrypt input (Thanks to Mark Cynar for |
providing the code) |
Reorganized directory structure |
/trunk/sim/rtl_sim/bin/Makefile
21,9 → 21,18
_TARGETS_AO_= $(DUT_SRC_DIR)/area_opt/des.v \ |
$(DUT_SRC_DIR)/area_opt/key_sel.v |
|
_TARGETS_AO3_= $(DUT_SRC_DIR)/area_opt/des3.v \ |
$(DUT_SRC_DIR)/area_opt/key_sel3.v |
|
|
_TARGETS_PO_= $(DUT_SRC_DIR)/perf_opt/des.v \ |
$(DUT_SRC_DIR)/perf_opt/key_sel.v |
|
_TARGETS_PO3_= $(DUT_SRC_DIR)/perf_opt/des3.v \ |
$(DUT_SRC_DIR)/perf_opt/des.v \ |
$(DUT_SRC_DIR)/perf_opt/key_sel.v |
|
|
########################################################################## |
# |
# Test Bench Sources |
33,9 → 42,13
|
_TB_PO_= $(TB_SRC_DIR)/des_test_po.v |
|
_TB_PO3_= $(TB_SRC_DIR)/des3_test_po.v |
|
_TB_AO_= $(TB_SRC_DIR)/des_test_ao.v |
|
_TB_AO3_= $(TB_SRC_DIR)/des3_test_ao.v |
|
|
########################################################################## |
# |
# Misc Variables |
83,6 → 96,37
$(_TB_AO_) |
|
|
simpow3: |
@$(MAKE) simpo3 WAVES="+access+r +define+WAVES " |
|
simpo3: |
@echo "" |
@echo "----- Running NCVLOG ... ----------" |
ncverilog \ |
$(LOGF) \ |
$(WAVES) \ |
$(INCDIR) \ |
$(_TARGETS_COM_) $(_TARGETS_PO3_) \ |
$(_TB_PO3_) |
|
simaow3: |
@$(MAKE) simao3 WAVES="+define+WAVES +access+r " |
|
|
simao3: |
@echo "" |
@echo "----- Running NCVLOG ... ----------" |
ncverilog \ |
$(LOGF) \ |
$(WAVES) \ |
$(INCDIR) \ |
$(_TARGETS_COM_) $(_TARGETS_AO3_) \ |
$(_TB_AO3_) |
|
|
|
|
|
clean: |
rm -rf ./waves/*.dsn ./waves/*.trn \ |
INCA* \ |
/trunk/syn/bin/read_po3.dc
0,0 → 1,66
############################################################################### |
# |
# Pre Synthesis Script |
# |
# This script only reads in the design and saves it in a DB file |
# |
# Author: Rudolf Usselmann |
# rudi@asics.ws |
# |
# Revision: |
# 3/7/01 RU Initial Sript |
# |
# |
############################################################################### |
|
# ============================================== |
# Setup Design Parameters |
source ../bin/design_spec_po.dc |
|
# ============================================== |
# Setup Libraries |
source ../bin/lib_spec.dc |
|
# ============================================== |
# Setup IO Files |
|
append log_file ../log/$active_design "_pre.log" |
append pre_comp_db_file ../out/$design_name "_pre.db" |
|
sh rm -f $log_file |
|
# ============================================== |
# Setup Misc Variables |
|
set hdlin_enable_vpp true ;# Important - this enables 'ifdefs |
|
# ============================================== |
# Read Design |
|
echo "+++++++++ Analyzing all design files ..." >> $log_file |
|
foreach module $design_files { |
echo "+++++++++ Reading: $module" >> $log_file |
echo +++++++++ Reading: $module |
set module_file_name "" |
append module_file_name $module ".v" |
analyze -f verilog $module_file_name >> $log_file |
elaborate $module >> $log_file |
} |
|
current_design $active_design |
|
echo "+++++++++ Linking Design ..." >> $log_file |
link >> $log_file |
|
echo "+++++++++ Uniquifying Design ..." >> $log_file |
uniquify >> $log_file |
|
echo "+++++++++ Checking Design ..." >> $log_file |
check_design >> $log_file |
|
# ============================================== |
# Save Design |
echo "+++++++++ Saving Design ..." >> $log_file |
write_file -hierarchy -format db -output $pre_comp_db_file |
|
/trunk/syn/bin/read_ao3.dc
0,0 → 1,66
############################################################################### |
# |
# Pre Synthesis Script |
# |
# This script only reads in the design and saves it in a DB file |
# |
# Author: Rudolf Usselmann |
# rudi@asics.ws |
# |
# Revision: |
# 3/7/01 RU Initial Sript |
# |
# |
############################################################################### |
|
# ============================================== |
# Setup Design Parameters |
source ../bin/design_spec_ao3.dc |
|
# ============================================== |
# Setup Libraries |
source ../bin/lib_spec.dc |
|
# ============================================== |
# Setup IO Files |
|
append log_file ../log/$active_design "_pre.log" |
append pre_comp_db_file ../out/$design_name "_pre.db" |
|
sh rm -f $log_file |
|
# ============================================== |
# Setup Misc Variables |
|
set hdlin_enable_vpp true ;# Important - this enables 'ifdefs |
|
# ============================================== |
# Read Design |
|
echo "+++++++++ Analyzing all design files ..." >> $log_file |
|
foreach module $design_files { |
echo "+++++++++ Reading: $module" >> $log_file |
echo +++++++++ Reading: $module |
set module_file_name "" |
append module_file_name $module ".v" |
analyze -f verilog $module_file_name >> $log_file |
elaborate $module >> $log_file |
} |
|
current_design $active_design |
|
echo "+++++++++ Linking Design ..." >> $log_file |
link >> $log_file |
|
echo "+++++++++ Uniquifying Design ..." >> $log_file |
uniquify >> $log_file |
|
echo "+++++++++ Checking Design ..." >> $log_file |
check_design >> $log_file |
|
# ============================================== |
# Save Design |
echo "+++++++++ Saving Design ..." >> $log_file |
write_file -hierarchy -format db -output $pre_comp_db_file |
|
/trunk/syn/bin/comp_po3.dc
0,0 → 1,116
############################################################################### |
# |
# Actual Synthesis Script |
# |
# This script does the actual synthesis |
# |
# Author: Rudolf Usselmann |
# rudi@asics.ws |
# |
# Revision: |
# 3/7/01 RU Initial Sript |
# |
# |
############################################################################### |
|
# ============================================== |
# Setup Design Parameters |
source ../bin/design_spec_po.dc |
|
# ============================================== |
# Setup Libraries |
source ../bin/lib_spec.dc |
|
# ============================================== |
# Setup IO Files |
|
append log_file ../log/$active_design "_cmp.log" |
append pre_comp_db_file ../out/$design_name "_pre.db" |
append post_comp_db_file ../out/$design_name ".db" |
append post_syn_verilog_file ../out/$design_name "_ps.v" |
set junk_file /dev/null |
|
sh rm -f $log_file |
|
# ============================================== |
# Setup Misc Variables |
|
set hdlin_enable_vpp true ;# Important - this enables 'ifdefs |
|
# ============================================== |
# Read Design |
|
echo "+++++++++ Reading Design ..." >> $log_file |
read_file $pre_comp_db_file >> $log_file |
|
# ============================================== |
# Operating conditions |
|
echo "+++++++++ Setting up Operation Conditions ..." >> $log_file |
current_design $design_name |
set_operating_conditions WORST >> $log_file |
|
# ============================================== |
# Setup Clocks and Resets |
|
echo "+++++++++ Setting up Clocks ..." >> $log_file |
|
set_drive 0 [find port {*clk*}] |
|
set wb_clk_period 3.0 |
create_clock clk -period $wb_clk_period |
set_clock_skew -uncertainty 0.1 clk |
set_clock_transition 0.2 clk |
set_dont_touch_network clk |
|
# ============================================== |
# Setup IOs |
|
echo "+++++++++ Setting up IOs ..." >> $log_file |
|
# Need to spell out external IOs |
set_driving_cell -cell NAND2D2 -pin Z [all_inputs] >> $junk_file |
set_load 0.2 [all_outputs] |
|
set_input_delay 2.0 -clock clk [all_inputs] |
set_output_delay 2.0 -clock clk [all_outputs] |
|
# ============================================== |
# Specify Multi Cycle Paths |
|
# ============================================== |
# Setup Area Constrains |
set_max_area 0.0 |
set compile_sequential_area_recovery true |
|
# ============================================== |
# Force Ultra |
set_ultra_optimization -f |
set_balance_registers true |
|
# ============================================== |
# Compile Design |
|
echo "+++++++++ Starting Compile ..." >> $log_file |
ungroup -all -flatten >> $log_file |
compile >> $log_file |
optimize_registers -period 0 >> $log_file |
#compile -incremental_mapping -map_effort high -area_effort high -boundary_optimization -ungroup_all >> $log_file |
|
|
#compile -map_effort high -area_effort high -boundary_optimization -auto_ungroup >> $log_file |
|
# ============================================== |
# Write Out the optimized design |
|
echo "+++++++++ Saving Optimized Design ..." >> $log_file |
write_file -hierarchy -format verilog -output $post_syn_verilog_file |
write_file -hierarchy -format db -output $post_comp_db_file |
|
# ============================================== |
# Create Some Basic Reports |
|
echo "+++++++++ Reporting Final Results ..." >> $log_file |
report_timing -nworst 10 >> $log_file |
report_area >> $log_file |
|
/trunk/syn/bin/comp_ao3.dc
0,0 → 1,110
############################################################################### |
# |
# Actual Synthesis Script |
# |
# This script does the actual synthesis |
# |
# Author: Rudolf Usselmann |
# rudi@asics.ws |
# |
# Revision: |
# 3/7/01 RU Initial Sript |
# |
# |
############################################################################### |
|
# ============================================== |
# Setup Design Parameters |
source ../bin/design_spec_ao3.dc |
|
# ============================================== |
# Setup Libraries |
source ../bin/lib_spec.dc |
|
# ============================================== |
# Setup IO Files |
|
append log_file ../log/$active_design "_cmp.log" |
append pre_comp_db_file ../out/$design_name "_pre.db" |
append post_comp_db_file ../out/$design_name ".db" |
append post_syn_verilog_file ../out/$design_name "_ps.v" |
set junk_file /dev/null |
|
sh rm -f $log_file |
|
# ============================================== |
# Setup Misc Variables |
|
set hdlin_enable_vpp true ;# Important - this enables 'ifdefs |
|
# ============================================== |
# Read Design |
|
echo "+++++++++ Reading Design ..." >> $log_file |
read_file $pre_comp_db_file >> $log_file |
|
# ============================================== |
# Operating conditions |
|
echo "+++++++++ Setting up Operation Conditions ..." >> $log_file |
current_design $design_name |
set_operating_conditions WORST >> $log_file |
|
# ============================================== |
# Setup Clocks and Resets |
|
echo "+++++++++ Setting up Clocks ..." >> $log_file |
|
set_drive 0 [find port {*clk*}] |
|
set wb_clk_period 5.0 |
create_clock clk -period $wb_clk_period |
set_clock_skew -uncertainty 0.1 clk |
set_clock_transition 0.2 clk |
set_dont_touch_network clk |
|
# ============================================== |
# Setup IOs |
|
echo "+++++++++ Setting up IOs ..." >> $log_file |
|
# Need to spell out external IOs |
set_driving_cell -cell NAND2D2 -pin Z [all_inputs] >> $junk_file |
set_load 0.2 [all_outputs] |
|
set_input_delay 2.0 -clock clk [all_inputs] |
set_output_delay 2.0 -clock clk [all_outputs] |
|
# ============================================== |
# Specify Multi Cycle Paths |
|
# ============================================== |
# Setup Area Constrains |
set_max_area 0.0 |
set compile_sequential_area_recovery true |
|
# ============================================== |
# Force Ultra |
set_ultra_optimization -f |
|
# ============================================== |
# Compile Design |
|
echo "+++++++++ Starting Compile ..." >> $log_file |
compile >> $log_file |
#compile -map_effort high -area_effort high -boundary_optimization -auto_ungroup >> $log_file |
|
# ============================================== |
# Write Out the optimized design |
|
echo "+++++++++ Saving Optimized Design ..." >> $log_file |
write_file -hierarchy -format verilog -output $post_syn_verilog_file |
write_file -hierarchy -format db -output $post_comp_db_file |
|
# ============================================== |
# Create Some Basic Reports |
|
echo "+++++++++ Reporting Final Results ..." >> $log_file |
report_timing -nworst 10 >> $log_file |
report_area >> $log_file |
|
/trunk/syn/bin/design_spec_po3.dc
0,0 → 1,26
############################################################################### |
# |
# Design Specification |
# |
# Author: Rudolf Usselmann |
# rudi@asics.ws |
# |
# Revision: |
# 5/10/01 RU Initial Sript |
# |
# |
############################################################################### |
|
# ============================================== |
# Setup Design Parameters |
|
set design_files {sbox2 sbox4 sbox6 sbox8 sbox1 sbox3 sbox5 sbox7 crp des key_sel des3} |
|
set design_name des3 |
set active_design des3 |
|
# Next Statement defines all clocks and resets in the design |
set special_net {clk} |
|
set hdl_src_dir {../../rtl/verilog/common ../../rtl/verilog/perf_opt} |
|
/trunk/syn/bin/design_spec_ao3.dc
0,0 → 1,26
############################################################################### |
# |
# Design Specification |
# |
# Author: Rudolf Usselmann |
# rudi@asics.ws |
# |
# Revision: |
# 5/10/01 RU Initial Sript |
# |
# |
############################################################################### |
|
# ============================================== |
# Setup Design Parameters |
|
set design_files {sbox2 sbox4 sbox6 sbox8 sbox1 sbox3 sbox5 sbox7 crp key_sel3 des3} |
|
set design_name des3 |
set active_design des3 |
|
# Next Statement defines all clocks and resets in the design |
set special_net {clk} |
|
set hdl_src_dir {../../rtl/verilog/common ../../rtl/verilog/area_opt} |
|