Line 44... |
Line 44... |
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
// Local header file includes / local defines
|
// Local header file includes / local defines
|
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
|
|
//FPGA_SYN enables all FPGA related modifications
|
//FPGA_SYN enables all FPGA related modifications
|
|
`ifdef FPGA_SYN
|
|
`define FPGA_SYN_SCM
|
|
`endif
|
|
|
module bw_r_scm (/*AUTOARG*/
|
module bw_r_scm (/*AUTOARG*/
|
// Outputs
|
// Outputs
|
stb_rdata_ramc, stb_ld_full_raw, stb_ld_partial_raw,
|
stb_rdata_ramc, stb_ld_full_raw, stb_ld_partial_raw,
|
stb_cam_hit_ptr, stb_cam_hit, stb_cam_mhit,
|
stb_cam_hit_ptr, stb_cam_hit, stb_cam_mhit,
|
Line 126... |
Line 126... |
wire [7:0] byte_match_mx ;
|
wire [7:0] byte_match_mx ;
|
wire [7:0] cam_hit ;
|
wire [7:0] cam_hit ;
|
wire [44:0] wdata_ramc ;
|
wire [44:0] wdata_ramc ;
|
wire [44:0] cam_data ;
|
wire [44:0] cam_data ;
|
wire [44:15] wr_data ;
|
wire [44:15] wr_data ;
|
|
`ifdef FPGA_SYN_SCM
|
reg [4:0] stb_addr;
|
reg [4:0] stb_addr;
|
|
`endif
|
|
|
|
|
integer i,j,k,l ;
|
integer i,j,k,l ;
|
|
|
|
|
Line 151... |
Line 151... |
begin
|
begin
|
cam_tid_tmp[1:0] <= stb_cam_cm_tid[1:0] ;
|
cam_tid_tmp[1:0] <= stb_cam_cm_tid[1:0] ;
|
cam_vld_tmp <= stb_cam_vld ;
|
cam_vld_tmp <= stb_cam_vld ;
|
end */
|
end */
|
|
|
|
`ifdef FPGA_SYN_SCM
|
|
`else
|
|
// Wordlines need to be generated locally
|
|
always @ (posedge rclk)
|
|
begin
|
|
for (i=0;i<32;i=i+1)
|
|
begin
|
|
if ({stb_cam_rw_tid[1:0],stb_cam_rw_ptr[2:0]} == i)
|
|
rw_wdline[i] <= 1'b1;
|
|
else
|
|
rw_wdline[i] <= 1'b0;
|
|
end
|
|
end
|
|
`endif
|
|
|
always @(posedge rclk)
|
always @(posedge rclk)
|
begin
|
begin
|
pipe_wr_data[44:15] <= stb_cam_data[44:15];
|
pipe_wr_data[44:15] <= stb_cam_data[44:15];
|
alt_wr_data[44:15] <= stb_alt_wr_data[44:15];
|
alt_wr_data[44:15] <= stb_alt_wr_data[44:15];
|
Line 177... |
Line 177... |
rptr_vld_tmp <= stb_cam_rptr_vld ;
|
rptr_vld_tmp <= stb_cam_rptr_vld ;
|
cam_tid[1:0] <= stb_cam_cm_tid[1:0] ;
|
cam_tid[1:0] <= stb_cam_cm_tid[1:0] ;
|
//cam_tid[1:0] <= cam_tid_tmp[1:0] ;
|
//cam_tid[1:0] <= cam_tid_tmp[1:0] ;
|
//ldq <= stb_quad_ld_cam ; Bug 2870
|
//ldq <= stb_quad_ld_cam ; Bug 2870
|
alt_wsel <= stb_alt_wsel ;
|
alt_wsel <= stb_alt_wsel ;
|
|
`ifdef FPGA_SYN_SCM
|
stb_addr <= {stb_cam_rw_tid[1:0],stb_cam_rw_ptr[2:0]};
|
stb_addr <= {stb_cam_rw_tid[1:0],stb_cam_rw_ptr[2:0]};
|
|
`endif
|
end
|
end
|
|
|
assign ldq = stb_quad_ld_cam ;
|
assign ldq = stb_quad_ld_cam ;
|
assign rptr_vld = rptr_vld_tmp | rst_tri_en ;
|
assign rptr_vld = rptr_vld_tmp | rst_tri_en ;
|
|
|
Line 198... |
Line 198... |
assign wdata_ramc[44:0] = {wr_data[44:15],camwr_data[14:0]};
|
assign wdata_ramc[44:0] = {wr_data[44:15],camwr_data[14:0]};
|
|
|
// Write
|
// Write
|
always @ (negedge rclk)
|
always @ (negedge rclk)
|
begin
|
begin
|
|
`ifdef FPGA_SYN_SCM
|
if(wptr_vld) begin
|
if(wptr_vld) begin
|
if(~rst_tri_en) begin
|
if(~rst_tri_en) begin
|
stb_ramc[stb_addr] <= wdata_ramc[44:0];
|
stb_ramc[stb_addr] <= wdata_ramc[44:0];
|
stb_rdata_ramc[44:0] <= wdata_ramc[44:0];
|
stb_rdata_ramc[44:0] <= wdata_ramc[44:0];
|
end else begin
|
end else begin
|
stb_rdata_ramc[44:0] <= stb_ramc[stb_addr];
|
stb_rdata_ramc[44:0] <= stb_ramc[stb_addr];
|
end
|
end
|
end
|
end
|
|
`else
|
|
for (j=0;j<NUMENTRIES;j=j+1)
|
|
begin
|
|
if (rw_wdline[j] & wptr_vld)
|
|
begin
|
|
if (~rst_tri_en)
|
|
begin
|
|
stb_ramc[j] <= wdata_ramc[44:0];
|
|
// write data is write-thru
|
|
stb_rdata_ramc[44:0] <= wdata_ramc[44:0];
|
|
end
|
|
else
|
|
begin
|
|
// INNO - default rd if wr squashed by scan_ena.
|
|
stb_rdata_ramc[44:0] <= stb_ramc[j];
|
|
end
|
|
end
|
|
end
|
|
`endif
|
// Read
|
// Read
|
|
`ifdef FPGA_SYN_SCM
|
if(rptr_vld & ~scan_ena) begin
|
if(rptr_vld & ~scan_ena) begin
|
if (rptr_vld & wptr_vld & ~rst_tri_en) begin
|
if (rptr_vld & wptr_vld & ~rst_tri_en) begin
|
stb_rdata_ramc[44:0] <= wdata_ramc[44:0];
|
stb_rdata_ramc[44:0] <= wdata_ramc[44:0];
|
end
|
end
|
else begin
|
else begin
|
stb_rdata_ramc[44:0] <= stb_ramc[stb_addr];
|
stb_rdata_ramc[44:0] <= stb_ramc[stb_addr];
|
end
|
end
|
end
|
end
|
|
`else
|
|
for (k=0;k<NUMENTRIES;k=k+1)
|
|
begin
|
|
if (rw_wdline[k] & rptr_vld & ~scan_ena)
|
|
begin
|
|
if (rptr_vld & wptr_vld & ~rst_tri_en) // INNO - write-thru
|
|
stb_rdata_ramc[44:0] <= wdata_ramc[44:0];
|
|
else
|
|
stb_rdata_ramc[44:0] <= stb_ramc[k];
|
|
end
|
|
end
|
|
`endif
|
end
|
end
|
|
|
//=========================================================================================
|
//=========================================================================================
|
// CAM contents of CAM RAM
|
// CAM contents of CAM RAM
|
//=========================================================================================
|
//=========================================================================================
|