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

Subversion Repositories axi_master

[/] [axi_master/] [trunk/] [src/] [base/] [axi_master.v] - Diff between revs 6 and 9

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 6 Rev 9
Line 101... Line 101...
// insert_rand_chk(input master_num, input burst_num)
// insert_rand_chk(input master_num, input burst_num)
//   Description: add multiple commands to command FIFO. Each command writes incremental data to a random address, reads the data back and checks the data. Useful for random testing.
//   Description: add multiple commands to command FIFO. Each command writes incremental data to a random address, reads the data back and checks the data. Useful for random testing.
//   Parameters: master_num - number of internal master
//   Parameters: master_num - number of internal master
//               burst_num - total number of bursts to check
//               burst_num - total number of bursts to check
//  
//  
 
// insert_rand(input burst_num)
 
//   Description: disperces burst_num between internal masters and calls insert_rand_chk for each master
 
//   Parameters:  burst_num - total number of bursts to check (combined)
 
//
//  
//  
//  Parameters:
//  Parameters:
//  
//  
//    For random testing: (changing these values automatically update interanl masters)
//    For random testing: (changing these values automatically update interanl masters)
//      len_min  - minimum burst AXI LEN (length)
//      len_min  - minimum burst AXI LEN (length)
Line 123... Line 126...
 
 
 
 
ITER IX ID_NUM
ITER IX ID_NUM
module PREFIX(PORTS);
module PREFIX(PORTS);
 
 
 
`include "prgen_rand.v"
 
 
   input                               clk;
   input                               clk;
   input                               reset;
   input                               reset;
 
 
   port                                GROUP_STUB_AXI;
   port                                GROUP_STUB_AXI;
 
 
Line 161... Line 166...
                   .reset(reset),
                   .reset(reset),
                   .GROUP_STUB_AXI(GROUP_STUB_AXI_IX),
                   .GROUP_STUB_AXI(GROUP_STUB_AXI_IX),
                   .idle(idle_IX),
                   .idle(idle_IX),
                   .scrbrd_empty(scrbrd_empty_IX)
                   .scrbrd_empty(scrbrd_empty_IX)
                   );
                   );
 
 
   ENDLOOP IX
   ENDLOOP IX
 
 
     IFDEF TRUE(ID_NUM==1)
     IFDEF TRUE(ID_NUM==1)
 
 
   assign GROUP_STUB_AXI.OUT = GROUP_STUB_AXI_0.OUT;
   assign GROUP_STUB_AXI.OUT = GROUP_STUB_AXI_0.OUT;
   assign GROUP_STUB_AXI_0.IN = GROUP_STUB_AXI.IN;
   assign GROUP_STUB_AXI_0.IN = GROUP_STUB_AXI.IN;
 
 
     ELSE TRUE(ID_NUM==1)
     ELSE TRUE(ID_NUM==1)
 
 
   CREATE ic.v DEFCMD(SWAP.GLOBAL PARENT PREFIX) DEFCMD(SWAP.GLOBAL MASTER_NUM ID_NUM) DEFCMD(SWAP.GLOBAL CONST(ID_BITS) ID_BITS) DEFCMD(SWAP.GLOBAL CONST(CMD_DEPTH) CMD_DEPTH) DEFCMD(SWAP.GLOBAL CONST(DATA_BITS) DATA_BITS) DEFCMD(SWAP.GLOBAL CONST(ADDR_BITS) ADDR_BITS)
   CREATE ic.v \\
 
DEFCMD(SWAP.GLOBAL PARENT PREFIX) \\
 
DEFCMD(SWAP.GLOBAL MASTER_NUM ID_NUM) \\
 
DEFCMD(SWAP.GLOBAL SLAVE_NUM 1) \\
 
DEFCMD(SWAP.GLOBAL CONST(ID_BITS) ID_BITS) \\
 
DEFCMD(SWAP.GLOBAL CONST(CMD_DEPTH) CMD_DEPTH) \\
 
DEFCMD(SWAP.GLOBAL CONST(DATA_BITS) DATA_BITS) \\
 
DEFCMD(SWAP.GLOBAL CONST(ADDR_BITS) ADDR_BITS)
   LOOP IX ID_NUM
   LOOP IX ID_NUM
     STOMP NEWLINE
     STOMP NEWLINE
     DEFCMD(LOOP.GLOBAL MIX_IDX 1)
     DEFCMD(LOOP.GLOBAL MIX_IDX 1) \\
     STOMP NEWLINE
 
     DEFCMD(SWAP.GLOBAL ID_MIX_ID0 IDIX_VAL)
     DEFCMD(SWAP.GLOBAL ID_MIX_ID0 IDIX_VAL)
   ENDLOOP IX
   ENDLOOP IX
 
 
    PREFIX_ic PREFIX_ic(
    PREFIX_ic PREFIX_ic(
                       .clk(clk),
                       .clk(clk),
Line 327... Line 339...
           IX : PREFIX_singleIX.insert_rand_chk(burst_num);
           IX : PREFIX_singleIX.insert_rand_chk(burst_num);
         endcase
         endcase
      end
      end
   endtask
   endtask
 
 
 
   task insert_rand;
 
      input [31:0] burst_num;
 
 
 
      ITER IDX ID_NUM
 
      reg [31:0] burst_numIDX;
 
      integer remain;
 
      begin
 
         remain = burst_num;
 
         LOOP IDX ID_NUM
 
         if (remain > 0)
 
           begin
 
              burst_numIDX = rand(1, remain);
 
              remain = remain - burst_numIDX;
 
              insert_rand_chk(IDX, burst_numIDX);
 
           end
 
         ENDLOOP IDX
 
      end
 
   endtask
 
 
 
 
endmodule
endmodule
 
 
 
 

powered by: WebSVN 2.1.0

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