Advertisement
Guest User

Untitled

a guest
Apr 4th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //module testbench();
  2. //
  3. //timeunit 10ns;
  4. //
  5. //timeprecision 1ns;
  6. //
  7. ////logic CLK;
  8. ////logic RESET;
  9. ////logic AVL_READ;                  
  10. ////logic AVL_WRITE;                
  11. ////logic AVL_CS;                    
  12. ////logic [3:0] AVL_BYTE_EN;    
  13. ////logic [3:0] AVL_ADDR;        
  14. ////logic [31:0] AVL_WRITEDATA;  
  15. ////logic [31:0] AVL_READDATA;
  16. ////logic [31:0] EXPORT_DATA;
  17. ////
  18. ////interface_top interf(.*);
  19. //
  20. //
  21. //logic CLK;
  22. //logic RESET;
  23. //logic AES_START;
  24. //logic AES_DONE;
  25. //logic [127:0] AES_KEY;
  26. //logic [127:0] AES_MSG_ENC;
  27. //logic [127:0] AES_MSG_DEC;
  28. //
  29. //AES aes(.*);
  30. //
  31. //always begin : CLOCK_GENERATION
  32. //    #1 CLK = ~CLK;
  33. //end
  34. //
  35. //initial begin : CLOCK_INIT
  36. //    CLK = 0;
  37. //end
  38. //
  39. //initial begin : TEST_VECTORS
  40. //    RESET = 1'b1;
  41. //  
  42. //    #2 RESET = 1'b0;
  43. //  
  44. //    AES_KEY = 128'h000102030405060708090a0b0c0d0e0f;
  45. //    AES_MSG_ENC = 128'hdaec3055df058e1c39e814ea76f6747e;
  46. //  
  47. //    #2 AES_START = 1'b1;
  48. //    #2 AES_START = 1'b0;
  49. //      
  50. //end
  51. //
  52. //endmodule
  53.  
  54. module testbench();
  55.  
  56. timeunit 10ns;
  57.  
  58. timeprecision 1ns;
  59.  
  60. logic CLK;
  61. logic RESET;
  62. logic AVL_READ;                
  63. logic AVL_WRITE;                  
  64. logic AVL_CS;                      
  65. logic [3:0] AVL_BYTE_EN;      
  66. logic [3:0] AVL_ADDR;          
  67. logic [31:0] AVL_WRITEDATA;
  68. logic [31:0] AVL_READDATA;
  69. logic [31:0] EXPORT_DATA;  
  70.  
  71. interface_top interf(.*);
  72.  
  73.  
  74. //INTERFACE POV
  75. //Write to registers 0-3, and 4-7 to insert key, and encoded msg
  76. //write to register 14 to set START
  77.  
  78.  
  79. //AES POV
  80. logic [127:0] AES_KEY;
  81. logic [127:0] AES_MSG_ENC;
  82. logic [127:0] AES_MSG_DEC;
  83. //logic [127:0] stateOut;
  84.  
  85. assign AES_KEY = interf.stupid.aes.AES_KEY;
  86. assign AES_MSG_ENC = interf.stupid.aes.AES_MSG_ENC;
  87. assign AES_MSG_DEC = interf.stupid.aes.AES_MSG_DEC;
  88. //assign stateOut = interf.stupid.aes.stateOut;
  89.  
  90.  
  91. //ACTUAL TESTBENCH
  92. always begin : CLOCK_GENERATION
  93.     #1 CLK = ~CLK;
  94. end
  95.  
  96. initial begin : CLOCK_INIT
  97.     CLK = 0;
  98. end
  99.  
  100. initial begin : TEST_VECTORS
  101.     AVL_CS = 1'b1;
  102.     AVL_READ = 1'b0;
  103.     RESET = 1'b1;
  104.     #2 RESET = 1'b0;
  105.    
  106.     //WRITES IN KEY
  107.     #2 AVL_BYTE_EN = 4'b1111;
  108.     AVL_ADDR = 4'b0011;
  109.     AVL_WRITEDATA = 32'h00010203;
  110.     AVL_WRITE = 1'b1;
  111.     #2 AVL_WRITE = 1'b0;
  112.  
  113.     #2 AVL_ADDR = 4'b0010;
  114.     AVL_WRITEDATA = 32'h04050607;
  115.     AVL_WRITE = 1'b1;
  116.     #2 AVL_WRITE = 1'b0;
  117.    
  118.     #2 AVL_ADDR = 4'b0001;
  119.     AVL_WRITEDATA = 32'h08090a0b;
  120.     AVL_WRITE = 1'b1;
  121.     #2 AVL_WRITE = 1'b0;
  122.    
  123.     #2 AVL_ADDR = 4'b0000;
  124.     AVL_WRITEDATA = 32'h0c0d0e0f;
  125.     AVL_WRITE = 1'b1;
  126.     #2 AVL_WRITE = 1'b0;
  127.    
  128.     //WRITES IN MSG_ENC
  129.     #2 AVL_ADDR = 4'b0111;
  130.     AVL_WRITEDATA = 32'hdaec3055;
  131.     AVL_WRITE = 1'b1;
  132.     #2 AVL_WRITE = 1'b0;
  133.    
  134.     #2 AVL_ADDR = 4'b0110;
  135.     AVL_WRITEDATA = 32'hdf058e1c;
  136.     AVL_WRITE = 1'b1;
  137.     #2 AVL_WRITE = 1'b0;
  138.    
  139.     #2 AVL_ADDR = 4'b0101;
  140.     AVL_WRITEDATA = 32'h39e814ea;
  141.     AVL_WRITE = 1'b1;
  142.     #2 AVL_WRITE = 1'b0;
  143.    
  144.     #2 AVL_ADDR = 4'b0100;
  145.     AVL_WRITEDATA = 32'h76f6747e;
  146.     AVL_WRITE = 1'b1;
  147.     #2 AVL_WRITE = 1'b0;
  148.    
  149.     //WRITES IN START REG
  150.     #2 AVL_ADDR = 4'b1110;
  151.     AVL_WRITEDATA = 32'h00000001;
  152.     AVL_WRITE = 1'b1;
  153.     #2 AVL_WRITE = 1'b0;
  154.    
  155.     #2 AVL_ADDR = 4'b1110;
  156.     AVL_WRITEDATA = 32'h00000000;
  157.     AVL_WRITE = 1'b1;
  158.     #2 AVL_WRITE = 1'b0;
  159.      
  160.     //CONSECUTIVE TEST
  161.      #425
  162.      AVL_CS = 1'b1;
  163.     AVL_READ = 1'b0;
  164.     RESET = 1'b1;
  165.     #2 RESET = 1'b0;
  166.    
  167.     //WRITES IN KEY
  168.     #2 AVL_BYTE_EN = 4'b1111;
  169.     AVL_ADDR = 4'b0011;
  170.     AVL_WRITEDATA = 32'h3b280014;
  171.     AVL_WRITE = 1'b1;
  172.     #2 AVL_WRITE = 1'b0;
  173.  
  174.     #2 AVL_ADDR = 4'b0010;
  175.     AVL_WRITEDATA = 32'hbeaac269;
  176.     AVL_WRITE = 1'b1;
  177.     #2 AVL_WRITE = 1'b0;
  178.    
  179.     #2 AVL_ADDR = 4'b0001;
  180.     AVL_WRITEDATA = 32'hd613a16b;
  181.     AVL_WRITE = 1'b1;
  182.     #2 AVL_WRITE = 1'b0;
  183.    
  184.     #2 AVL_ADDR = 4'b0000;
  185.     AVL_WRITEDATA = 32'hfdc2be03;
  186.     AVL_WRITE = 1'b1;
  187.     #2 AVL_WRITE = 1'b0;
  188.    
  189.     //WRITES IN MSG_ENC
  190.     #2 AVL_ADDR = 4'b0111;
  191.     AVL_WRITEDATA = 32'h439d6199;
  192.     AVL_WRITE = 1'b1;
  193.     #2 AVL_WRITE = 1'b0;
  194.    
  195.     #2 AVL_ADDR = 4'b0110;
  196.     AVL_WRITEDATA = 32'h20ce4156;
  197.     AVL_WRITE = 1'b1;
  198.     #2 AVL_WRITE = 1'b0;
  199.    
  200.     #2 AVL_ADDR = 4'b0101;
  201.     AVL_WRITEDATA = 32'h61019634;
  202.     AVL_WRITE = 1'b1;
  203.     #2 AVL_WRITE = 1'b0;
  204.    
  205.     #2 AVL_ADDR = 4'b0100;
  206.     AVL_WRITEDATA = 32'hf59fcf63;
  207.     AVL_WRITE = 1'b1;
  208.     #2 AVL_WRITE = 1'b0;
  209.    
  210.     //WRITES IN START REG
  211.     #2 AVL_ADDR = 4'b1110;
  212.     AVL_WRITEDATA = 32'h00000001;
  213.     AVL_WRITE = 1'b1;
  214.     #2 AVL_WRITE = 1'b0;
  215.    
  216.     #2 AVL_ADDR = 4'b1110;
  217.     AVL_WRITEDATA = 32'h00000000;
  218.     AVL_WRITE = 1'b1;
  219.     #2 AVL_WRITE = 1'b0;
  220. end
  221.  
  222.  
  223. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement