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 19 and 23

Only display areas with differences | Details | Blame | View Log

Rev 19 Rev 23
<##//////////////////////////////////////////////////////////////////
<##//////////////////////////////////////////////////////////////////
////                                                             ////
////                                                             ////
////  Author: Eyal Hochberg                                      ////
////  Author: Eyal Hochberg                                      ////
////          eyal@provartec.com                                 ////
////          eyal@provartec.com                                 ////
////                                                             ////
////                                                             ////
////  Downloaded from: http://www.opencores.org                  ////
////  Downloaded from: http://www.opencores.org                  ////
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
////                                                             ////
////                                                             ////
//// Copyright (C) 2010 Provartec LTD                            ////
//// Copyright (C) 2010 Provartec LTD                            ////
//// www.provartec.com                                           ////
//// www.provartec.com                                           ////
//// info@provartec.com                                          ////
//// info@provartec.com                                          ////
////                                                             ////
////                                                             ////
//// This source file may be used and distributed without        ////
//// This source file may be used and distributed without        ////
//// restriction provided that this copyright statement is not   ////
//// restriction provided that this copyright statement is not   ////
//// removed from the file and that any derivative work contains ////
//// removed from the file and that any derivative work contains ////
//// the original copyright notice and the associated disclaimer.////
//// the original copyright notice and the associated disclaimer.////
////                                                             ////
////                                                             ////
//// This source file is free software; you can redistribute it  ////
//// This source file is free software; you can redistribute it  ////
//// and/or modify it under the terms of the GNU Lesser General  ////
//// and/or modify it under the terms of the GNU Lesser General  ////
//// Public License as published by the Free Software Foundation.////
//// Public License as published by the Free Software Foundation.////
////                                                             ////
////                                                             ////
//// This source is distributed in the hope that it will be      ////
//// This source is distributed in the hope that it will be      ////
//// useful, but WITHOUT ANY WARRANTY; without even the implied  ////
//// useful, but WITHOUT ANY WARRANTY; without even the implied  ////
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR     ////
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR     ////
//// PURPOSE.  See the GNU Lesser General Public License for more////
//// PURPOSE.  See the GNU Lesser General Public License for more////
//// details. http://www.gnu.org/licenses/lgpl.html              ////
//// details. http://www.gnu.org/licenses/lgpl.html              ////
////                                                             ////
////                                                             ////
//////////////////////////////////////////////////////////////////##>
//////////////////////////////////////////////////////////////////##>
 
 
OUTFILE PREFIX_ic_registry_resp.v
OUTFILE PREFIX_ic_registry_resp.v
 
 
ITER MX
ITER MX
ITER SX
ITER SX
 
 
module PREFIX_ic_registry_resp(PORTS);
module PREFIX_ic_registry_resp(PORTS);
 
 
   input                            clk;
   input                            clk;
   input                            reset;
   input                            reset;
 
 
   port                             MMX_AGROUP_IC_AXI_CMD;
   port                             MMX_AGROUP_IC_AXI_CMD;
 
 
   input [ID_BITS-1:0]              SSX_ID;
   input [ID_BITS-1:0]              SSX_ID;
   input                            SSX_VALID;
   input                            SSX_VALID;
   input                            SSX_READY;
   input                            SSX_READY;
   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_IDGROUP_MMX_ID.IDX;
 
 
   wire                             match_SSX_MMX_IDGROUP_MMX_ID.IDX;
   wire                             match_SSX_MMX_IDGROUP_MMX_ID.IDX;
   wire                             no_Amatch_MMX;
   wire                             no_Amatch_MMX;
 
 
   wire                             cmd_push_MMX;
   wire                             cmd_push_MMX;
   wire                             cmd_push_MMX_IDGROUP_MMX_ID.IDX;
   wire                             cmd_push_MMX_IDGROUP_MMX_ID.IDX;
 
 
   wire                             cmd_pop_SSX;
   wire                             cmd_pop_SSX;
   wire                             cmd_pop_MMX_IDGROUP_MMX_ID.IDX;
   wire                             cmd_pop_MMX_IDGROUP_MMX_ID.IDX;
 
 
   wire [SLV_BITS-1:0]              slave_in_MMX_IDGROUP_MMX_ID.IDX;
   wire [SLV_BITS-1:0]              slave_in_MMX_IDGROUP_MMX_ID.IDX;
   wire [SLV_BITS-1:0]              slave_out_MMX_IDGROUP_MMX_ID.IDX;
   wire [SLV_BITS-1:0]              slave_out_MMX_IDGROUP_MMX_ID.IDX;
   wire                             slave_empty_MMX_IDGROUP_MMX_ID.IDX;
   wire                             slave_empty_MMX_IDGROUP_MMX_ID.IDX;
   wire                             slave_full_MMX_IDGROUP_MMX_ID.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_IDGROUP_MMX_ID.IDX = MMX_AID == ID_BITS'bADD_IDGROUP_MMX_ID;
   assign                           Amatch_MMX_IDGROUP_MMX_ID.IDX = MMX_AID == ID_BITS'bADD_IDGROUP_MMX_ID;
 
 
   assign                           match_SSX_MMX_IDGROUP_MMX_ID.IDX = SSX_ID == ID_BITS'bADD_IDGROUP_MMX_ID;
   assign                           match_SSX_MMX_IDGROUP_MMX_ID.IDX = SSX_ID == ID_BITS'bADD_IDGROUP_MMX_ID;
 
 
 
 
   assign                           cmd_push_MMX           = MMX_AVALID & MMX_AREADY;
   assign                           cmd_push_MMX           = MMX_AVALID & MMX_AREADY;
   assign                           cmd_push_MMX_IDGROUP_MMX_ID.IDX = cmd_push_MMX & Amatch_MMX_IDGROUP_MMX_ID.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_IDGROUP_MMX_ID.IDX = CONCAT((cmd_pop_SSX & match_SSX_MMX_IDGROUP_MMX_ID.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_IDGROUP_MMX_ID.IDX = MMX_ASLV;
 
 
 
 
IFDEF DEF_DECERR_SLV
IFDEF DEF_DECERR_SLV
     assign                         no_Amatch_MMX         = GONCAT.REV((~Amatch_MMX_IDGROUP_MMX_ID.IDX) &);
     assign                         no_Amatch_MMX         = GONCAT.REV((~Amatch_MMX_IDGROUP_MMX_ID.IDX) &);
 
 
 
 
   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}};
     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 MSTR_BITS'dMX;
 
 
   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 @(*)
   always @(*)
     begin
     begin
        case (SSX_ID)
        case (SSX_ID)
          ID_BITS'bADD_IDGROUP_MMX_ID : SSX_MSTR = MSTR_BITS'dMX;
          ID_BITS'bADD_IDGROUP_MMX_ID : SSX_MSTR = MSTR_BITS'dMX;
          default : SSX_MSTR = ERR_MSTR;
          default : SSX_MSTR = ERR_MSTR;
        endcase
        endcase
     end
     end
 
 
   always @(*)
   always @(*)
     begin
     begin
        case (SSX_ID)
        case (SSX_ID)
          ID_BITS'bADD_IDGROUP_MMX_ID : SSX_OK = slave_out_MMX_IDGROUP_MMX_ID.IDX == SLV_BITS'dSX;
          ID_BITS'bADD_IDGROUP_MMX_ID : SSX_OK = slave_out_MMX_IDGROUP_MMX_ID.IDX == SLV_BITS'dSX;
          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 IX GROUP_MMX_ID.NUM
 LOOP IX GROUP_MMX_ID.NUM
   prgen_fifo #(SLV_BITS, CMD_DEPTH)
   prgen_fifo #(SLV_BITS, CMD_DEPTH)
   slave_fifo_MMX_IDIX(
   slave_fifo_MMX_IDIX(
                       .clk(clk),
                       .clk(clk),
                       .reset(reset),
                       .reset(reset),
                       .push(cmd_push_MMX_IDIX),
                       .push(cmd_push_MMX_IDIX),
                       .pop(cmd_pop_MMX_IDIX),
                       .pop(cmd_pop_MMX_IDIX),
                       .din(slave_in_MMX_IDIX),
                       .din(slave_in_MMX_IDIX),
                       .dout(slave_out_MMX_IDIX),
                       .dout(slave_out_MMX_IDIX),
                       .empty(slave_empty_MMX_IDIX),
                       .empty(slave_empty_MMX_IDIX),
                       .full(slave_full_MMX_IDIX)
                       .full(slave_full_MMX_IDIX)
                       );
                       );
 
 
   ENDLOOP IX
   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.