URL
https://opencores.org/ocsvn/des/des/trunk
Subversion Repositories des
[/] [des/] [trunk/] [bench/] [verilog/] [des_test_ao.v] - Rev 5
Go to most recent revision | Compare with Previous | Blame | View Log
///////////////////////////////////////////////////////////////////// //// //// //// 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 [191:0] x[128:0]; reg [191:0] tmp; reg [3:0] cnt; integer select; integer decrypt; wire [63:0] desOut; wire [63:0] des_in; wire [63:0] exp_out; wire [55:0] key; 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; // 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; 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) 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); @(posedge clk); end end $display(""); $display("**************************************"); $display("* DES Test done ... *"); $display("**************************************"); $display(""); $finish; end // end of innitial 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]; des u0( .clk( clk ), .desOut( desOut ), .desIn( des_in ), .key( key ), .roundSel( cnt ), .decrypt( decrypt[0] ) ); endmodule
Go to most recent revision | Compare with Previous | Blame | View Log