beautypg.com

Placement of serdes – Achronix Speedster22i SerDes User Manual

Page 77

background image

Note: When 10’h1BC is transmitted from the fabric, the output of the 8b/10b decoder on the

PCS receiver path will be 10’h283 (alternate: 10’h17C).
The code for data_generation module that includes comma-characters is shown below

module data_generation (

input clk,

input rst_n,

input data_gen_en,

output [39:0] data_out

);

always @ (posedge clk)

begin

if (rst_n == 1'b0)

// comma-characters when SerDes in reset-state (active-low reset)

data_out <= {10'h000,10'h1BC,10'h000,10'h1BC};

else if (data_gen_en == 1’b1)

// when data-generation enabled, i.e. TX_ready from SerDes is up

// *** Logic for data-generation goes here, such as PRBS-7 ***

// *** Should also contain comma characters ***

else

// comma-characters when data generation is ‘not’ enabled

ln0_TXdata <= {10'h000,10'h1BC,10'h000,10'h1BC};

end

endmodule

Using the clocks from SerDes: This sample design has the EFIFO disabled. Hence, two clocks

are provided by the SerDes for the fabric: TX-clock and RX-clock. These two clocks may not

be aligned with each other. To avoid the false paths, the user needs to use the TX-clk on the

transmitter datapath (such as data generation for SerDes) and the RX-clk on the receive data

path (such as checking the received data from SerDes for correctness).

Placement of SerDes

The placement file used for the simple_serdes_design is: src/constraints/ace_placement.pdc.

This file contains the placement information for the followings:
• Placement information for the SerDes instance
• Clock/reset inputs to the SerDes
• Debug signals that the user may want to bring outside the FPGA.
The placement of SerDes depends on the lane that the user wants to use. While generating

the wrapper from ACE GUI, lane# 8 has been chosen for placement (“Figure 23: New IP

Configuration Window- Overview Page”). The consequent placement in

simple_serdes_design_wrapper.pdc file will be:s

set_placement -batch -fixed { i:x_ch0.u_serdes_wrap.u_serdes } {

s:te_serdes_12lane_top_i1.u_serdes_lane_top_wrap_i0.u_serdes_lane_top }

Since, the SerDes instance as iSerDes in the top-level module, the placement needs to be

modified as:

set_placement -batch -fixed { i:iSerDes.x_ch0.u_serdes_wrap.u_serdes } {

s:te_serdes_12lane_top_i1.u_serdes_lane_top_wrap_i0.u_serdes_lane_top }

For information about how to place the clock signals, reset signals (such as rst_hard in the

listing above) and other debug signals (such as ln0_synthready), please refer to the UG001 –

ACE Users Guide. For the Speedster22i HD1000 Development Kit, the following three show

UG028, July 1, 2014

77