833 - Lattice Diamond: ECP2M: PCS: How can I control the location of an LatticeECP2M PCS block?

833 - Lattice Diamond: ECP2M: PCS: How can I control the location of an LatticeECP2M PCS block?

Lattice Diamond: ECP2M: PCS: Yes, you can control where an LatticeECP2M (Physical Coding Sublayer) PCS block is located. The PCS blocks on an LatticeECP2M device can be located at either the upper right, upper left, lower right or lower left. These regions are called "quadrants", and the user can control which quadrant a given PCS goes to by entering a preference in the project *.lpf file. Please see the detailed steps below

It should be noted that not all LatticeECP2M devices have four quads. The number of quads depends on the size of the device.

The selectable quads are as follows:
ECP2M-100: Upper right, lower right, lower left, upper left.
ECP2M-70: Upper right, lower right, lower left, upper left.
ECP2M-50: Upper right, lower right.
ECP2M-35: Upper right.
ECP2M-20: Upper right.

Logically, the user cannot choose any quads other than UR for the 35K and 20K devices, likewise the user can only choose one of the right side quads for the 50K device.

To locate a PCS at a given quad, follow these steps:
  1.  Ensure that your device is not a 20K or 35K device. (These devices only have one quad, so the PCS cannot be relocated.)
  2. In the DP GUI, "View" > "Spreadsheet View". In the left pane expand the "Cells". Find the cell whose path ends with "pcsc_inst". e.g.
    "TOP_design/Level1/Level2/Level3/pcsc_inst". This is the hierarchical path for the pcs instance.
  3. Back in the ispLever GUI, double click on "Edit Preferences". This will bring up the *.lpf file in a text editor. Use the path found in step 2 to enter the following preference in this file:
    LOCATE COMP "/pcsc_inst" SITE "URPCS" ;
    Note: "URPCS" indicates upper right, "LRPCS" lower right, "LLPCS" lower left, and "ULPCS" is upper left.
  4. You can verify that the PCS was correctly located by double clicking on "PAD Specification File" in the ispLEVER "Processes" pane. This will run the design through MAP and place and route, and will assign signals to pins and report those assignments. At the top of the resulting pads report, find the table "Pinout by Pin Name". In the "Port Name" column, find your SERDES data signal outputs (as named in your top level RTL). Note the Pin/Bank of your signals. They will be attached to the pin and bank of that quadrant. e.g. Pin/bank "URC_SQ_HDOUTP3/12" indicates that the signal was attached to the upper right quad, on bank 12.
  5. (optional) As an experiment, you can repeat steps 1-4 for a different quad and watch the reported quadrant change. e.g. In step 2, change the quad to upper left, then look for the pin in step 4 to change to indicate a pin that starts wih "ULC_SQ_....".

    For more information on the PCS and the quad organization, please see the LatticeECP2M SERDES/PCS Usage Guide.