Article Details

ID: 1957
Case Type: faq
Category: Architecture
Related To: PLL/DLL/Clock Routing
Family: LatticeECP3

Search Answer Database

Search Text Image

[LatticeECP3] Is there a method to partition a PRIMARY clock network?

Yes, each PRIMARY global clock nets in a LatticeECP3 device can be partitioned into four QUADRANTs. In a LatticeECP3 device, there are a total of 8 PRIMARY global clock nets. If each of them can be partitioned, then it is possible to have up to 32 asynchronous PRIMARY global clocks in a LatticeECP3 device. This is because each QUADRANT can have its own input (i.e. unshared input).

A clock can be assigned to all four QUADRANTs, two adjacent QUADRANTs, or one QUADRANT.

There are two ways to assign a PRIMARY clock network to a QUADRANT: Using the Spreadsheet View and editing the LPF.

Below is example syntax for assigning QUADRANTs in an LPF:


1). Assigning to one QUADRANT of a PRIMARY clock network

USE PRIMARY NET <CLOCK_NAME> <QUADRANT_LOCATION>;

Where <QUADRANT_LOCATION> can be either QUADRANT_TL, QUADRANT_TR, QUADRANT_BL, or QUADRANT_BR.


2). Assigning to two QUADRANTs of a PRIMARY clock network

USE PRIMARY NET <CLOCK_NAME> <QUADRANT_LOCATION1> <QUADRANT_LOCATION2>;

Where (<QUADRANT_LOCATION1>, <QUADRANT_LOCATION2>) can be either one of the following pairs of QUADRANTs:

-QUADRANT_TL, QUADRANT_TR
-QUADRANT_TL, QUADRANT_BL
-QUADRANT_TR, QUADRANT_BR
-QUADRANT_BL, QUADRANT_BR

Note that diagonally adjacent QUADRANTs (e.g QUADRANT_TL, QUADRANT_BR) are not valid combinations.


3). Assigning to all four QUADRANT of a PRIMARY clock network is the same as assigning a PRIMARY clock

USE PRIMARY NET <CLOCK_NAME>;

Note that assigning to three adjacent QUADRANTs is not available.

Also note that in the absence of regional constraints, the Placer will put all of the logic related to a certain clock in the correct location so as to honor the QUADRANT constraint. User should also check that any location constraint will not be in conflict with the QUADRANT constraint.