OpenCores
URL https://opencores.org/ocsvn/des/des/trunk

Subversion Repositories des

[/] [des/] [trunk/] [bench/] [verilog/] [des_test_ao.v] - Blame information for rev 5

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 rudi
/////////////////////////////////////////////////////////////////////
2
////                                                             ////
3
////  DES TEST BENCH                                             ////
4
////                                                             ////
5
////  Author: Rudolf Usselmann                                   ////
6
////          rudi@asics.ws                                      ////
7
////                                                             ////
8
/////////////////////////////////////////////////////////////////////
9
////                                                             ////
10
//// Copyright (C) 2001 Rudolf Usselmann                         ////
11
////                    rudi@asics.ws                            ////
12
////                                                             ////
13
//// This source file may be used and distributed without        ////
14
//// restriction provided that this copyright statement is not   ////
15
//// removed from the file and that any derivative work contains ////
16
//// the original copyright notice and the associated disclaimer.////
17
////                                                             ////
18
////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
19
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
20
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
21
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
22
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
23
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
24
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
25
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
26
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
27
//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
28
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
29
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
30
//// POSSIBILITY OF SUCH DAMAGE.                                 ////
31
////                                                             ////
32
/////////////////////////////////////////////////////////////////////
33
 
34
module test;
35
 
36
reg             clk;
37
reg     [191:0]  x[128:0];
38
 
39
reg     [191:0]  tmp;
40
 
41
reg     [3:0]    cnt;
42
integer         select;
43
integer         decrypt;
44
wire    [63:0]   desOut;
45
wire    [63:0]   des_in;
46
wire    [63:0]   exp_out;
47
wire    [55:0]   key;
48
 
49
initial
50
   begin
51
        $display("\n\n");
52
        $display("*********************************************************");
53
        $display("* Area Optimized DES core simulation started ...        *");
54
        $display("*********************************************************");
55
        $display("\n");
56
 
57
`ifdef WAVES
58
        $shm_open("waves");
59
        $shm_probe("AS",test,"AS");
60
        $display("INFO: Signal dump enabled ...\n\n");
61
`endif
62
 
63
        clk=0;
64
        //           Key              Test data        Out data
65
        x[00]=192'h8001010101010101_0000000000000000_95A8D72813DAA94D;
66
        x[01]=192'h4001010101010101_0000000000000000_0EEC1487DD8C26D5;
67
        x[02]=192'h2001010101010101_0000000000000000_7AD16FFB79C45926;
68
        x[03]=192'h1001010101010101_0000000000000000_D3746294CA6A6CF3;
69
        x[04]=192'h0801010101010101_0000000000000000_809F5F873C1FD761;
70
        x[05]=192'h0401010101010101_0000000000000000_C02FAFFEC989D1FC;
71
        x[06]=192'h0201010101010101_0000000000000000_4615AA1D33E72F10;
72
        x[07]=192'h0180010101010101_0000000000000000_2055123350C00858;
73
        x[08]=192'h0140010101010101_0000000000000000_DF3B99D6577397C8;
74
        x[09]=192'h0120010101010101_0000000000000000_31FE17369B5288C9;
75
        x[10]=192'h0110010101010101_0000000000000000_DFDD3CC64DAE1642;
76
        x[11]=192'h0108010101010101_0000000000000000_178C83CE2B399D94;
77
        x[12]=192'h0104010101010101_0000000000000000_50F636324A9B7F80;
78
        x[13]=192'h0102010101010101_0000000000000000_A8468EE3BC18F06D;
79
        x[14]=192'h0101800101010101_0000000000000000_A2DC9E92FD3CDE92;
80
        x[15]=192'h0101400101010101_0000000000000000_CAC09F797D031287;
81
        x[16]=192'h0101200101010101_0000000000000000_90BA680B22AEB525;
82
        x[17]=192'h0101100101010101_0000000000000000_CE7A24F350E280B6;
83
        x[18]=192'h0101080101010101_0000000000000000_882BFF0AA01A0B87;
84
        x[19]=192'h0101040101010101_0000000000000000_25610288924511C2;
85
        x[20]=192'h0101020101010101_0000000000000000_C71516C29C75D170;
86
        x[21]=192'h0101018001010101_0000000000000000_5199C29A52C9F059;
87
        x[22]=192'h0101014001010101_0000000000000000_C22F0A294A71F29F;
88
        x[23]=192'h0101012001010101_0000000000000000_EE371483714C02EA;
89
        x[24]=192'h0101011001010101_0000000000000000_A81FBD448F9E522F;
90
        x[25]=192'h0101010801010101_0000000000000000_4F644C92E192DFED;
91
        x[26]=192'h0101010401010101_0000000000000000_1AFA9A66A6DF92AE;
92
        x[27]=192'h0101010201010101_0000000000000000_B3C1CC715CB879D8;
93
        x[28]=192'h0101010180010101_0000000000000000_19D032E64AB0BD8B;
94
        x[29]=192'h0101010140010101_0000000000000000_3CFAA7A7DC8720DC;
95
        x[30]=192'h0101010120010101_0000000000000000_B7265F7F447AC6F3;
96
        x[31]=192'h0101010110010101_0000000000000000_9DB73B3C0D163F54;
97
        x[32]=192'h0101010108010101_0000000000000000_8181B65BABF4A975;
98
        x[33]=192'h0101010104010101_0000000000000000_93C9B64042EAA240;
99
        x[34]=192'h0101010102010101_0000000000000000_5570530829705592;
100
        x[35]=192'h0101010101800101_0000000000000000_8638809E878787A0;
101
        x[36]=192'h0101010101400101_0000000000000000_41B9A79AF79AC208;
102
        x[37]=192'h0101010101200101_0000000000000000_7A9BE42F2009A892;
103
        x[38]=192'h0101010101100101_0000000000000000_29038D56BA6D2745;
104
        x[39]=192'h0101010101080101_0000000000000000_5495C6ABF1E5DF51;
105
        x[40]=192'h0101010101040101_0000000000000000_AE13DBD561488933;
106
        x[41]=192'h0101010101020101_0000000000000000_024D1FFA8904E389;
107
        x[42]=192'h0101010101018001_0000000000000000_D1399712F99BF02E;
108
        x[43]=192'h0101010101014001_0000000000000000_14C1D7C1CFFEC79E;
109
        x[44]=192'h0101010101012001_0000000000000000_1DE5279DAE3BED6F;
110
        x[45]=192'h0101010101011001_0000000000000000_E941A33F85501303;
111
        x[46]=192'h0101010101010801_0000000000000000_DA99DBBC9A03F379;
112
        x[47]=192'h0101010101010401_0000000000000000_B7FC92F91D8E92E9;
113
        x[48]=192'h0101010101010201_0000000000000000_AE8E5CAA3CA04E85;
114
        x[49]=192'h0101010101010180_0000000000000000_9CC62DF43B6EED74;
115
        x[50]=192'h0101010101010140_0000000000000000_D863DBB5C59A91A0;
116
        x[51]=192'h0101010101010120_0000000000000000_A1AB2190545B91D7;
117
        x[52]=192'h0101010101010110_0000000000000000_0875041E64C570F7;
118
        x[53]=192'h0101010101010108_0000000000000000_5A594528BEBEF1CC;
119
        x[54]=192'h0101010101010104_0000000000000000_FCDB3291DE21F0C0;
120
        x[55]=192'h0101010101010102_0000000000000000_869EFD7F9F265A09;
121
        x[56]=192'h0000000000000000_0000000000000000_8CA64DE9C1B123A7;
122
        x[57]=192'hFFFFFFFFFFFFFFFF_FFFFFFFFFFFFFFFF_7359B2163E4EDC58;
123
        x[58]=192'h3000000000000000_1000000000000001_958E6E627A05557B;
124
        x[59]=192'h1111111111111111_1111111111111111_F40379AB9E0EC533;
125
        x[60]=192'h0123456789ABCDEF_1111111111111111_17668DFC7292532D;
126
        x[61]=192'h1111111111111111_0123456789ABCDEF_8A5AE1F81AB8F2DD;
127
        x[62]=192'h0000000000000000_0000000000000000_8CA64DE9C1B123A7;
128
        x[63]=192'hFEDCBA9876543210_0123456789ABCDEF_ED39D950FA74BCC4;
129
        x[64]=192'h7CA110454A1A6E57_01A1D6D039776742_690F5B0D9A26939B;
130
        x[65]=192'h0131D9619DC1376E_5CD54CA83DEF57DA_7A389D10354BD271;
131
        x[66]=192'h07A1133E4A0B2686_0248D43806F67172_868EBB51CAB4599A;
132
        x[67]=192'h3849674C2602319E_51454B582DDF440A_7178876E01F19B2A;
133
        x[68]=192'h04B915BA43FEB5B6_42FD443059577FA2_AF37FB421F8C4095;
134
        x[69]=192'h0113B970FD34F2CE_059B5E0851CF143A_86A560F10EC6D85B;
135
        x[70]=192'h0170F175468FB5E6_0756D8E0774761D2_0CD3DA020021DC09;
136
        x[71]=192'h43297FAD38E373FE_762514B829BF486A_EA676B2CB7DB2B7A;
137
        x[72]=192'h07A7137045DA2A16_3BDD119049372802_DFD64A815CAF1A0F;
138
        x[73]=192'h04689104C2FD3B2F_26955F6835AF609A_5C513C9C4886C088;
139
        x[74]=192'h37D06BB516CB7546_164D5E404F275232_0A2AEEAE3FF4AB77;
140
        x[75]=192'h1F08260D1AC2465E_6B056E18759F5CCA_EF1BF03E5DFA575A;
141
        x[76]=192'h584023641ABA6176_004BD6EF09176062_88BF0DB6D70DEE56;
142
        x[77]=192'h025816164629B007_480D39006EE762F2_A1F9915541020B56;
143
        x[78]=192'h49793EBC79B3258F_437540C8698F3CFA_6FBF1CAFCFFD0556;
144
        x[79]=192'h4FB05E1515AB73A7_072D43A077075292_2F22E49BAB7CA1AC;
145
        x[80]=192'h49E95D6D4CA229BF_02FE55778117F12A_5A6B612CC26CCE4A;
146
        x[81]=192'h018310DC409B26D6_1D9D5C5018F728C2_5F4C038ED12B2E41;
147
        x[82]=192'h1C587F1C13924FEF_305532286D6F295A_63FAC0D034D9F793;
148
        x[83]=192'h0101010101010101_0123456789ABCDEF_617B3A0CE8F07100;
149
        x[84]=192'h1F1F1F1F0E0E0E0E_0123456789ABCDEF_DB958605F8C8C606;
150
        x[85]=192'hE0FEE0FEF1FEF1FE_0123456789ABCDEF_EDBFD1C66C29CCC7;
151
        x[86]=192'h0000000000000000_FFFFFFFFFFFFFFFF_355550B2150E2451;
152
        x[87]=192'hFFFFFFFFFFFFFFFF_0000000000000000_CAAAAF4DEAF1DBAE;
153
        x[88]=192'h0123456789ABCDEF_0000000000000000_D5D44FF720683D0D;
154
        x[89]=192'hFEDCBA9876543210_FFFFFFFFFFFFFFFF_2A2BB008DF97C2F2;
155
 
156
        decrypt = 0;
157
        @(posedge clk);
158
 
159
        $display("");
160
        $display("**************************************");
161
        $display("* Starting DES Test ...              *");
162
        $display("**************************************");
163
        $display("");
164
 
165
        for(decrypt=0;decrypt<2;decrypt=decrypt+1)
166
        begin
167
        if(decrypt)     $display("Running Encrypt test ...\n");
168
        else            $display("Running Decrypt test ...\n");
169
 
170
        for(select=0;select<90;select=select+1)
171
           begin
172
                tmp=x[select];
173
                for(cnt=0;cnt<15;cnt=cnt+1)      @(posedge clk);
174
 
175
                #10;
176
                //if(desOut !== exp_out)
177
                if((exp_out !== desOut) | (^exp_out===1'bx) | (^desOut===1'bx))
178
 
179
                        $display("ERROR: (%0d) Expected %x Got %x", select, exp_out, desOut);
180
                 //else
181
                   //   $display("PASS : (%0d) Expected %x Got %x", select, exp_out, desOut);
182
 
183
                @(posedge clk);
184
           end
185
        end
186
 
187
        $display("");
188
        $display("**************************************");
189
        $display("* DES Test done ...                  *");
190
        $display("**************************************");
191
        $display("");
192
 
193
        $finish;
194
   end // end of innitial
195
 
196
always #100 clk=~clk;
197
 
198
assign #1 key = {tmp[191:185],tmp[183:177],tmp[175:169],tmp[167:161],
199
                        tmp[159:153],tmp[151:145],tmp[143:137],tmp[135:129]};
200
 
201
assign #1 des_in = decrypt ? tmp[63:0]   : tmp[127:64];
202
assign   exp_out = decrypt ? tmp[127:64] : tmp[63:0];
203
 
204
des u0( .clk(           clk             ),
205
        .desOut(        desOut          ),
206
        .desIn(         des_in          ),
207
        .key(           key             ),
208
        .roundSel(      cnt             ),
209
        .decrypt(       decrypt[0]       )
210
        );
211
 
212
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.