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

Subversion Repositories robust_axi_fabric

[/] [robust_axi_fabric/] [trunk/] [src/] [base/] [ic_registry_resp.v] - Diff between revs 11 and 16

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

Rev 11 Rev 16
Line 30... Line 30...
OUTFILE PREFIX_ic_registry_resp.v
OUTFILE PREFIX_ic_registry_resp.v
 
 
ITER MX
ITER MX
ITER SX
ITER SX
 
 
LOOP MX
 
ITER MMX_IDX
 
ENDLOOP MX
 
 
 
 
 
module PREFIX_ic_registry_resp(PORTS);
module PREFIX_ic_registry_resp(PORTS);
 
 
   input                            clk;
   input                            clk;
   input                            reset;
   input                            reset;
 
 
Line 50... Line 45...
   input                            SSX_LAST;
   input                            SSX_LAST;
   output [MSTR_BITS-1:0]           SSX_MSTR;
   output [MSTR_BITS-1:0]           SSX_MSTR;
   output                           SSX_OK;
   output                           SSX_OK;
 
 
 
 
 
   wire                             Amatch_MMX_IDGROUP_MMX_ID.IDX;
 
 
   wire                             Amatch_MMX_IDMMX_IDX;
   wire                             match_SSX_MMX_IDGROUP_MMX_ID.IDX;
   wire                             match_SSX_MMX_IDMMX_IDX;
 
   wire                             no_Amatch_MMX;
   wire                             no_Amatch_MMX;
 
 
   wire                             cmd_push_MMX;
   wire                             cmd_push_MMX;
   wire                             cmd_push_MMX_IDMMX_IDX;
   wire                             cmd_push_MMX_IDGROUP_MMX_ID.IDX;
 
 
   wire                             cmd_pop_SSX;
   wire                             cmd_pop_SSX;
LOOP MX
   wire                             cmd_pop_MMX_IDGROUP_MMX_ID.IDX;
   wire                             cmd_pop_MMX_IDMMX_IDX;
 
ENDLOOP MX
 
 
 
   wire [SLV_BITS-1:0]   slave_in_MMX_IDMMX_IDX;
   wire [SLV_BITS-1:0]              slave_in_MMX_IDGROUP_MMX_ID.IDX;
   wire [SLV_BITS-1:0]   slave_out_MMX_IDMMX_IDX;
   wire [SLV_BITS-1:0]              slave_out_MMX_IDGROUP_MMX_ID.IDX;
   wire                             slave_empty_MMX_IDMMX_IDX;
   wire                             slave_empty_MMX_IDGROUP_MMX_ID.IDX;
   wire                             slave_full_MMX_IDMMX_IDX;
   wire                             slave_full_MMX_IDGROUP_MMX_ID.IDX;
 
 
   reg [MSTR_BITS-1:0]   ERR_MSTR_reg;
   reg [MSTR_BITS-1:0]   ERR_MSTR_reg;
   wire [MSTR_BITS-1:0] ERR_MSTR;
   wire [MSTR_BITS-1:0] ERR_MSTR;
 
 
   reg [MSTR_BITS-1:0]   SSX_MSTR;
   reg [MSTR_BITS-1:0]   SSX_MSTR;
   reg                              SSX_OK;
   reg                              SSX_OK;
 
 
 
 
 
 
 
 
   assign                           Amatch_MMX_IDMMX_IDX = MMX_AID == ID_MMX_IDMMX_IDX;
   assign                           Amatch_MMX_IDGROUP_MMX_ID.IDX = MMX_AID == ID_BITS'GROUP_MMX_ID;
 
 
   assign                           match_SSX_MMX_IDMMX_IDX = SSX_ID == ID_MMX_IDMMX_IDX;
   assign                           match_SSX_MMX_IDGROUP_MMX_ID.IDX = SSX_ID == ID_BITS'GROUP_MMX_ID;
 
 
 
 
   assign                           cmd_push_MMX           = MMX_AVALID & MMX_AREADY;
   assign                           cmd_push_MMX           = MMX_AVALID & MMX_AREADY;
   assign                           cmd_push_MMX_IDMMX_IDX = cmd_push_MMX & Amatch_MMX_IDMMX_IDX;
   assign                           cmd_push_MMX_IDGROUP_MMX_ID.IDX = cmd_push_MMX & Amatch_MMX_IDGROUP_MMX_ID.IDX;
   assign                           cmd_pop_SSX            = SSX_VALID & SSX_READY & SSX_LAST;
   assign                           cmd_pop_SSX            = SSX_VALID & SSX_READY & SSX_LAST;
 
 
   LOOP MX
   LOOP MX
     assign                         cmd_pop_MMX_IDMMX_IDX = CONCAT((cmd_pop_SSX & match_SSX_MMX_IDMMX_IDX) |);
  assign                            cmd_pop_MMX_IDGROUP_MMX_ID.IDX = CONCAT((cmd_pop_SSX & match_SSX_MMX_IDGROUP_MMX_ID.IDX) |);
   ENDLOOP MX
   ENDLOOP MX
 
 
 
  assign                           slave_in_MMX_IDGROUP_MMX_ID.IDX = MMX_ASLV;
   assign                           slave_in_MMX_IDMMX_IDX = MMX_ASLV;
 
 
 
 
 
 
 
 
 
IFDEF DEF_DECERR_SLV
IFDEF DEF_DECERR_SLV
   LOOP MX
     assign                         no_Amatch_MMX         = GONCAT.REV((~Amatch_MMX_IDGROUP_MMX_ID.IDX) &);
     assign                         no_Amatch_MMX         = CONCAT((~Amatch_MMX_IDMMX_IDX) &);
 
   ENDLOOP MX
 
 
 
 
 
   always @(posedge clk or posedge reset)
   always @(posedge clk or posedge reset)
     if (reset)
     if (reset)
       ERR_MSTR_reg <= #FFD {MSTR_BITS{1'b0}};
       ERR_MSTR_reg <= #FFD {MSTR_BITS{1'b0}};
   LOOP MX
     else if (cmd_push_MMX & no_Amatch_MMX) ERR_MSTR_reg <= #FFD MSTR_BITS'dMX;
     else if (cmd_push_MMX & no_Amatch_MMX)
 
       ERR_MSTR_reg <= #FFD 'dMX;
 
   ENDLOOP MX
 
 
 
   assign                           ERR_MSTR = ERR_MSTR_reg;
   assign                           ERR_MSTR = ERR_MSTR_reg;
ELSE DEF_DECERR_SLV
ELSE DEF_DECERR_SLV
   assign                           ERR_MSTR = 'd0;
   assign                           ERR_MSTR = 'd0;
ENDIF DEF_DECERR_SLV
ENDIF DEF_DECERR_SLV
 
 
 
 
LOOP SX
LOOP SX
   always @(SSX_ID or ERR_MSTR)
   always @(*)
     begin
     begin
        case (SSX_ID)
        case (SSX_ID)
          LOOP MX
          ID_BITS'GROUP_MMX_ID : SSX_MSTR = MSTR_BITS'dMX;
          ID_MMX_IDMMX_IDX : SSX_MSTR = 'dMX;
 
          ENDLOOP MX
 
          default : SSX_MSTR = ERR_MSTR;
          default : SSX_MSTR = ERR_MSTR;
        endcase
        endcase
     end
     end
 
 
   always @(*)
   always @(*)
     begin
     begin
        case (SSX_ID)
        case (SSX_ID)
          LOOP MX
          ID_BITS'GROUP_MMX_ID : SSX_OK = slave_out_MMX_IDGROUP_MMX_ID.IDX == SLV_BITS'dSX;
          ID_MMX_IDMMX_IDX : SSX_OK = slave_out_MMX_IDMMX_IDX == 'dSX;
 
          ENDLOOP MX
 
          default : SSX_OK = 1'b1; //SLVERR                                   
          default : SSX_OK = 1'b1; //SLVERR                                   
        endcase
        endcase
     end
     end
ENDLOOP SX
ENDLOOP SX
 
 
CREATE prgen_fifo.v DEFCMD(SWAP CONST(#FFD) #FFD)
CREATE prgen_fifo.v DEFCMD(SWAP CONST(#FFD) #FFD)
LOOP MX
LOOP MX
LOOP MMX_IDX
 LOOP IX GROUP_MMX_ID.NUM
   prgen_fifo #(SLV_BITS, CMD_DEPTH)
   prgen_fifo #(SLV_BITS, CMD_DEPTH)
   slave_fifo_MMX_IDMMX_IDX(
   slave_fifo_MMX_IDIX(
                    .clk(clk),
                    .clk(clk),
                    .reset(reset),
                    .reset(reset),
                    .push(cmd_push_MMX_IDMMX_IDX),
                       .push(cmd_push_MMX_IDIX),
                    .pop(cmd_pop_MMX_IDMMX_IDX),
                       .pop(cmd_pop_MMX_IDIX),
                    .din(slave_in_MMX_IDMMX_IDX),
                       .din(slave_in_MMX_IDIX),
                    .dout(slave_out_MMX_IDMMX_IDX),
                       .dout(slave_out_MMX_IDIX),
                            .empty(slave_empty_MMX_IDMMX_IDX),
                       .empty(slave_empty_MMX_IDIX),
                            .full(slave_full_MMX_IDMMX_IDX)
                       .full(slave_full_MMX_IDIX)
                    );
                    );
 
 
ENDLOOP MMX_IDX
   ENDLOOP IX
ENDLOOP MX
ENDLOOP MX
 
 
 
 
endmodule
endmodule
 
 

powered by: WebSVN 2.1.0

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