Lattice Diamond: DCS is a Digital clock select, a clock multiplexer, which is available in devices such as LatticeSC/M, LatticeXP2, LatticeECP2/M and LatticeECP3.
How to assign DCS locations in .lpf preference file?
The syntax is shown in the following example:
LOCATE COMP "xxxx" SITE "DCSTB" ;
The "xxxx" is the instantiation name in your VHDL or Verilog code.
The DCS locations in LatticeSC family are at four edges -- two per edge.
DCSTA, DCSTB
DCSLA, DCSLB
DCSRA, DCSRB
DCSBA, DCSBB
where the letter right after "DCS" shows the edge the DCS is located: T is top, L is left, R is right, B is bottom.
The DCS locations in LatticeXP2, LatticeECP2/M and LatticeECP3 families are near the Center Switch Box -- two per quadrant.
ULDCS1, ULDCS0
URDCS1, URDCS0
LLDCS1, LLDCS0
LRDCS1, LRDCS0
where UL is upper-left, UR is upper-right, LL is lower-left, LR is lower-right.
These examples (in VHDL or Verilog) can be found in apps note for those devices that has DCS available. Here is one for XP2, ECP2/M and ECP3 in Verilog:
DCS dcs_inst (.CLK1(DCS_clkin1), .CLK0(DCS_clkin0), .SEL(DCS_sel), .DCSOUT(DCS_clkout));
In the preference file, you can assign its location like this:
LOCATE COMP "dcs_inst" SITE "LLDCS0" ;