// ========== Copyright Header Begin ==========================================
// OpenSPARC T2 Processor File: fflp_cam_ram.v
// Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
// 4150 Network Circle, Santa Clara, California 95054, U.S.A.
// * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; version 2 of the License.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// For the avoidance of doubt, and except that if any non-GPL license
// choice is available it will apply instead, Sun elects to use only
// the General Public License version 2 (GPLv2) at this time for any
// software where a choice of GPL license versions is made
// available with the language indicating that GPLv2 or any later version
// may be used, or where a choice of which version of the GPL is applied is
// otherwise unspecified.
// Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
// CA 95054 USA or visit www.sun.com if you need additional information or
// ========== Copyright Header End ============================================
/**********************************************************************/
/*module name: fflp_cam_ram */
/* FFLP CAM classification */
/*child modules in: fflp_cam_srch.v, fflp_ram_cntl.v */
/* fflp_cam_sched.v fflp_fwd_mstr.v */
/*author name: Jeanne Cai */
/*date created: 03-22-04 */
/* Copyright (c) 2004, Sun Microsystems, Inc. */
/* Sun Proprietary and Confidential */
input[3:0] cam_srch_latency;
input[3:0] cam_srch_ratio;
input[31:0] h1_init_value_reg_dout;
input[15:0] h2_init_value_reg_dout;
input[445:0] fwd_info_bus;
input[199:0] cam_msk_dat_out;
output[199:0] cam_data_inp;
output[7:0] cam_key_reg0_dout;
output[63:0] cam_key_reg1_dout;
output[63:0] cam_key_reg2_dout;
output[63:0] cam_key_reg3_dout;
output[7:0] cam_key_mask_reg0_dout;
output[63:0] cam_key_mask_reg1_dout;
output[63:0] cam_key_mask_reg2_dout;
output[63:0] cam_key_mask_reg3_dout;
output[20:0] cam_cmd_stat_reg_dout;
output[25:0] ecc_parity_status;
output[512:0] fc_fifo_dout;
wire[199:0] cam_data_inp;
wire[7:0] cam_key_reg0_dout;
wire[63:0] cam_key_reg1_dout;
wire[63:0] cam_key_reg2_dout;
wire[63:0] cam_key_reg3_dout;
wire[7:0] cam_key_mask_reg0_dout;
wire[63:0] cam_key_mask_reg1_dout;
wire[63:0] cam_key_mask_reg2_dout;
wire[63:0] cam_key_mask_reg3_dout;
wire[20:0] cam_cmd_stat_reg_dout;
wire[25:0] ecc_parity_status;
wire[512:0] fc_fifo_dout;
wire fc_fifo_space_avail;
wire[41:0] am_din_reg_dout;
wire[9:0] cam_haddr_reg1_dout;
wire kick_off_ram_srch_5;
wire kick_off_ram_srch_4;
wire[445:0] fwd_info_bus_2;
wire[103:0] key_ecc_data_2;
nep_spare_fflp spare_fflp_0 (
.di_nd3 ({1'h1, 1'h1, do_q[3]}),
.di_nd2 ({1'h1, 1'h1, do_q[2]}),
.di_nd1 ({1'h1, 1'h1, do_q[1]}),
.di_nd0 ({1'h1, 1'h1, do_q[0]}),
.rst ({reset,reset,reset,reset}),
fflp_cam_sched fflp_cam_sched_inst (
.cam_srch_latency (cam_srch_latency),
.cam_srch_ratio (cam_srch_ratio),
.cpu_req_cam_acc (cpu_req_cam_acc),
.fc_fifo_space_avail (fc_fifo_space_avail),
fflp_cam_srch fflp_cam_srch_inst (
.pio_disable_cam (pio_disable_cam),
.cam_srch_latency (cam_srch_latency),
.fwd_info_bus (fwd_info_bus),
.pio_rd_vld (pio_rd_vld),
.cam_msk_dat_out (cam_msk_dat_out),
.am_din_reg_dout (am_din_reg_dout),
.pio_32b_mode (pio_32b_mode),
.pio_wr_data (pio_wr_data),
.cpu_req_cam_acc (cpu_req_cam_acc),
.ram_acc_type (ram_acc_type),
.kick_off_ram_ctrl (kick_off_ram_ctrl),
.cam_haddr_reg1_dout (cam_haddr_reg1_dout),
.cam_data_inp (cam_data_inp),
.cam_compare (cam_compare),
.cam_pio_wr (cam_pio_wr),
.cam_pio_rd (cam_pio_rd),
.cam_pio_sel (cam_pio_sel),
.matchout_5 (matchout_5),
.kick_off_ram_srch_4 (kick_off_ram_srch_4),
.kick_off_ram_srch_5 (kick_off_ram_srch_5),
.fwd_info_bus_2 (fwd_info_bus_2),
.key_ecc_data_2 (key_ecc_data_2),
.cam_key_reg0_dout (cam_key_reg0_dout),
.cam_key_reg1_dout (cam_key_reg1_dout),
.cam_key_reg2_dout (cam_key_reg2_dout),
.cam_key_reg3_dout (cam_key_reg3_dout),
.cam_key_mask_reg0_dout (cam_key_mask_reg0_dout),
.cam_key_mask_reg1_dout (cam_key_mask_reg1_dout),
.cam_key_mask_reg2_dout (cam_key_mask_reg2_dout),
.cam_key_mask_reg3_dout (cam_key_mask_reg3_dout),
.cam_cmd_stat_reg_dout (cam_cmd_stat_reg_dout)
fflp_ram_cntl fflp_ram_cntl_inst (
.ram_acc_type (ram_acc_type),
.kick_off_ram_ctrl (kick_off_ram_ctrl),
.cam_haddr_reg1_dout (cam_haddr_reg1_dout),
.cam_key_reg1_dout (cam_key_reg1_dout[41:0]),
.am_din_reg_dout (am_din_reg_dout)
fflp_hash_func fflp_hash_func_inst (
.fwd_info_hash_key (fwd_info_bus[361:0]),
.kick_off_ram_srch_4 (kick_off_ram_srch_4),
.h1_init_value_reg_dout (h1_init_value_reg_dout),
.h2_init_value_reg_dout (h2_init_value_reg_dout),
fflp_fwd_mstr fflp_fwd_mstr_inst (
.disable_chksum (disable_chksum),
.fc_fifo_ren_sync (fc_fifo_ren_sync),
.ext_fc_valid (ext_fc_valid),
.fwd_info_bus_2 (fwd_info_bus_2),
.key_ecc_data_2 (key_ecc_data_2),
.kick_off_ram_srch_5 (kick_off_ram_srch_5),
.matchout_5 (matchout_5),
.cam_haddr_reg1_dout (cam_haddr_reg1_dout),
.am_din_reg_dout (am_din_reg_dout),
.ecc_parity_status (ecc_parity_status),
.fc_fifo_space_avail (fc_fifo_space_avail),
.fc_fifo_empty (fc_fifo_empty),
.fc_fifo_dout (fc_fifo_dout)