UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 30986

LogiCORE RapidIO v4.3 - Register Manager incorrectly handles Maintenance requests to Unmapped Address space

Description

When the Serial RapidIO Endpoint receives a Maintenance request, it is re-routed to the MREQ interface. Maintenance requests with an Offset directed to Unmapped address space is not correctly handled.

Solution

The Register Manager reference design (reg_manager.v) incorrectly handles Maintenance requests to Unmapped address space. In this scenario, the most common symptom is that the Register Manager state machine will hang on the subsequent Maintenance request.

An ELSE IF statement must be changed to ELSE to correct the issue. The code below shows the change required:

On LINE 1153 of Register_Manager.v

//------------------------------------------------------------------------------

// Timeout counter

// If an address space is addressed that does not exist, a response

// will never happen. Timeout expires when this happens.

always @(posedge clk or negedge reset_n) begin

if (!reset_n)

time_out_cntr <= 6'h0;

// Read discard or write discard or idle state

else if (rx_ns == `REG_RX_IDLE | !rdy_n)

time_out_cntr <= 6'h0;

else // if (!mgt_phy_sel_n_wire | !mgt_log_sel_n_wire | !mgt_usr_sel_n_wire) <---------- Change ELSE IF to ELSE

time_out_cntr <= time_out_cntr + 1;

end

assign req_timeout = time_out_cntr[5];

NOTE: This issue is corrected in the v4.4 Serial RapidIO solution.

AR# 30986
Date Created 06/09/2008
Last Updated 12/15/2012
Status Active
Type General Article