PA3 Nano UG
PA3 Nano UG
User’s Guide
ProASIC3 nano FPGA Fabric User’s Guide
Table of Contents
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Revision History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Related Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs . . . . . . . . . . . . . . 61
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Overview of Clock Conditioning Circuitry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
CCC Support in Microsemi’s Flash Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Global Buffers with No Programmable Delays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Global Buffer with Programmable Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Global Buffers with PLL Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Global Input Selections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Device-Specific Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Revision 5 2
ProASIC3 nano FPGA Fabric User’s Guide
6 SRAM and FIFO Memories in Microsemi's Low Power Flash Devices . . . . . . . . . . . . . . . . . . . . . . . 131
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Device Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
SRAM/FIFO Support in Flash-Based Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
SRAM and FIFO Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Memory Blocks and Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Initializing the RAM/FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Software Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
List of Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Revision 5 3
Table of Contents
12 In-System Programming (ISP) of Microsemi’s Low Power Flash Devices Using FlashPro4/3/3X . . . 261
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
ISP Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
ISP Support in Flash-Based Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Programming Voltage (VPUMP) and VJTAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Nonvolatile Memory (NVM) Programming Voltage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
4 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
13 Core Voltage Switching Circuit for IGLOO and ProASIC3L In-System Programming . . . . . . . . . . . . 275
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Microsemi’s Flash Families Support Voltage Switching Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Circuit Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Circuit Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
DirectC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
List of Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
Revision 5 5
Table of Contents
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
6 R e vi s i o n 5
Introduction
Contents
This user’s guide contains information to help designers understand and use Microsemi's ProASIC®3
nano devices. Each chapter addresses a specific topic. Most of these chapters apply to other Microsemi
device families as well. When a feature or description applies only to a specific device family, this is made
clear in the text.
Revision History
The revision history for each chapter is listed at the end of the chapter. Most of these chapters were
formerly included in device handbooks. Some were originally application notes or information included in
device datasheets.
A "Summary of Changes" table at the end of this user’s guide lists the chapters that were changed in
each revision of the document, with links to the "List of Changes" sections for those chapters.
Related Information
Refer to the ProASIC3 nano Low Power Flash FPGAs datasheet for detailed specifications, timing, and
package and pin information.
The website for ProASIC3 nano devices is /www.microsemi.com/soc/products/pa3nano/default.aspx.
Revision 5 7
1 – FPGA Array Architecture in Low Power Flash
Devices
Device Architecture
Sensing
Switching
Word
Switch Out
Revision 5 9
FPGA Array Architecture in Low Power Flash Devices
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO devices as listed
in Table 1-1. Where the information applies to only one product line or limited devices, these exclusions
will be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 1-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
10 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Device Overview
Low power flash devices consist of multiple distinct programmable architectural features (Figure 1-5 on
page 13 through Figure 1-7 on page 14):
• FPGA fabric/core (VersaTiles)
• Routing and clock resources (VersaNets)
• FlashROM
• Dedicated SRAM and/or FIFO
– 30 k gate and smaller device densities do not support SRAM or FIFO.
– Automotive devices do not support FIFO operation.
• I/O structures
• Flash*Freeze technology and low power modes
Bank 1*
I/Os
Bank 0
Bank 1
VersaTile
CCC-GL
Bank 1
Revision 5 11
FPGA Array Architecture in Low Power Flash Devices
Bank 0
CCC
RAM Block
4,608-Bit Dual-Port
SRAM or FIFO Block
Bank 1
Bank 0
I/Os
VersaTile
Bank 1
Bank 0
ISP AES User Nonvolatile Flash*Freeze† Charge
Decryption FlashRom Technology Pumps
Bank 1
Bank 1
I/Os
Bank 0
Bank 1
VersaTile
12 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Bank 0
CCC
RAM Block
4,608-Bit Dual-Port
SRAM or FIFO Block
Bank 3
Bank 1
I/Os
VersaTile
Bank 3
Bank 1
RAM Block
ISP AES User Nonvolatile Flash*Freeze † Charge
4,608-Bit Dual-Port
Decryption* FlashRom Technology Pumps SRAM or FIFO Block
Bank 2
Bank 0
CCC*
RAM Block
4,608-Bit Dual-Port
Bank 3
Bank 1
I/Os
VersaTile
Bank 3
Bank 1
Bank 2
Revision 5 13
FPGA Array Architecture in Low Power Flash Devices
Bank 0 Bank 1
CCC
RAM Block
4,608-Bit Dual-Port SRAM
or FIFO Block
Bank 7
Bank 2
Pro I/Os
VersaTile
Bank 6
Bank 3
RAM Block
4,608-Bit Dual-Port SRAM
ISP AES User Nonvolatile Flash*Freeze† Charge
or FIFO Block
Decryption FlashRom Technology Pumps
Bank 5 Bank 4
14 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Core Architecture
VersaTile
The proprietary IGLOO and ProASIC3 device architectures provide granularity comparable to gate
arrays. The device core consists of a sea-of-VersaTiles architecture.
As illustrated in Figure 1-8, there are four inputs in a logic VersaTile cell, and each VersaTile can be
configured using the appropriate flash switch connections:
• Any 3-input logic function
• Latch with clear or set
• D-flip-flop with clear or set
• Enable D-flip-flop with clear or set (on a 4th input)
VersaTiles can flexibly map the logic and sequential gates of a design. The inputs of the VersaTile can be
inverted (allowing bubble pushing), and the output of the tile can connect to high-speed, very-long-line
routing resources. VersaTiles and larger functions can be connected with any of the four levels of routing
hierarchy.
When the VersaTile is used as an enable D-flip-flop, SET/CLR is supported by a fourth input. The
SET/CLR signal can only be routed to this fourth input over the VersaNet (global) network. However, if, in
the user’s design, the SET/CLR signal is not routed over the VersaNet network, a compile warning
message will be given, and the intended logic function will be implemented by two VersaTiles instead of
one.
The output of the VersaTile is F2 when the connection is to the ultra-fast local lines, or YL when the
connection is to the efficient long-line or very-long-line resources.
0
1
Data Y
X3 Pin 1
0 0
1 F2
1
YL
0
1
CLK
X2
CLR/
Enable
X1
CLR
XC*
* This input can only be connected to the global clock distribution network.
Figure 1-8 • Low Power Flash Device Core VersaTile
Revision 5 15
FPGA Array Architecture in Low Power Flash Devices
Array Coordinates
During many place-and-route operations in the Microsemi Designer software tool, it is possible to set
constraints that require array coordinates. Table 1-2 provides array coordinates of core cells and memory
blocks for IGLOO and ProASIC3 devices. Table 1-3 provides the information for IGLOO PLUS devices.
Table 1-4 on page 17 provides the information for IGLOO nano and ProASIC3 nano devices. The array
coordinates are measured from the lower left (0, 0). They can be used in region constraints for specific
logic groups/blocks, designated by a wildcard, and can contain core cells, memories, and I/Os.
I/O and cell coordinates are used for placement constraints. Two coordinate systems are needed
because there is not a one-to-one correspondence between I/O cells and core cells. In addition, the I/O
coordinate system changes depending on the die/package combination. It is not listed in Table 1-2. The
Designer ChipPlanner tool provides the array coordinates of all I/O locations. I/O and cell coordinates are
used for placement constraints. However, I/O placement is easier by package pin assignment.
Figure 1-9 on page 17 illustrates the array coordinates of a 600 k gate device. For more information on
how to use array coordinates for region/placement constraints, see the Designer User's Guide or online
help (available in the software) for software tools.
16 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
(194, 4)
VersaTile (Core) VersaTile (Core)
(3, 4)
(194, 3) Memory
(194, 2) Blocks
Memory (3, 3)
Blocks (3, 2)
(197, 1)
(0, 0) (197, 0)
I/O Tile UJTAG FlashROM
Note: The vertical I/O tile coordinates are not shown. West-side coordinates are {(0, 2) to (2, 2)} to {(0, 77) to (2, 77)};
east-side coordinates are {(195, 2) to (197, 2)} to {(195, 77) to (197, 77)}.
Figure 1-9 • Array Coordinates for AGL600, AGLE600, A3P600, and A3PE600
Revision 5 17
FPGA Array Architecture in Low Power Flash Devices
Routing Architecture
The routing structure of low power flash devices is designed to provide high performance through a
flexible four-level hierarchy of routing resources: ultra-fast local resources; efficient long-line resources;
high-speed, very-long-line resources; and the high-performance VersaNet networks.
The ultra-fast local resources are dedicated lines that allow the output of each VersaTile to connect
directly to every input of the eight surrounding VersaTiles (Figure 1-10). The exception to this is that the
SET/CLR input of a VersaTile configured as a D-flip-flop is driven only by the VersaTile global network.
The efficient long-line resources provide routing for longer distances and higher-fanout connections.
These resources vary in length (spanning one, two, or four VersaTiles), run both vertically and
horizontally, and cover the entire device (Figure 1-11 on page 19). Each VersaTile can drive signals onto
the efficient long-line resources, which can access every input of every VersaTile. Routing software
automatically inserts active buffers to limit loading effects.
The high-speed, very-long-line resources, which span the entire device with minimal delay, are used to
route very long or high-fanout nets: length ±12 VersaTiles in the vertical direction and length ±16 in the
horizontal direction from a given core VersaTile (Figure 1-12 on page 19). Very long lines in low power
flash devices have been enhanced over those in previous ProASIC families. This provides a significant
performance boost for long-reach signals.
The high-performance VersaNet global networks are low-skew, high-fanout nets that are accessible from
external pins or internal logic. These nets are typically used to distribute clocks, resets, and other high-
fanout nets requiring minimum skew. The VersaNet networks are implemented as clock trees, and
signals can be introduced at any junction. These can be employed hierarchically, with signals accessing
every input of every VersaTile. For more details on VersaNets, refer to the "Global Resources in Low
Power Flash Devices" section on page 31.
Long Lines
L L L
Inputs
L L L
Ultra-Fast Local Lines
Output
L L L
Note: Input to the core cell for the D-flip-flop set and reset is only available via the VersaNet global
network connection.
Figure 1-10 • Ultra-Fast Local Lines Connected to the Eight Nearest Neighbors
18 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
VersaTile
L L L L L L
L L L L L L
Spans 1 VersaTile
L L L L L L
Spans 2 VersaTiles
Spans 4 VersaTiles
L L L L L L
L L L L L L
Pad Ring
SRAM
I/O Ring
Pad Ring
Revision 5 19
FPGA Array Architecture in Low Power Flash Devices
Related Documents
User’s Guides
Designer User's Guide
http://www.microsemi.com/soc/documents/designer_ug.pdf
List of Changes
The following table lists critical changes that were made in each revision of the chapter.
20 R e visio n 5
2 – Low Power Modes in ProASIC3/E and
ProASIC3 nano FPGAs
Introduction
The demand for low power systems and semiconductors, combined with the strong growth observed for
value-based FPGAs, is driving growing demand for low power FPGAs. For portable and battery-operated
applications, power consumption has always been the greatest challenge. The battery life of a system
and on-board devices has a direct impact on the success of the product. As a result, FPGAs used in
these applications should meet low power consumption requirements.
ProASIC®3/E and ProASIC3 nano FPGAs offer low power consumption capability inherited from their
nonvolatile and live-at-power-up (LAPU) flash technology. This application note describes the power
consumption and how to use different power saving modes to further reduce power consumption for
power-conscious electronics design.
Revision 5 21
Low Power Modes in ProASIC3/E and ProASIC3 nano FPGAs
22 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
CLKA GLA
GLB
POWERDOWN YB
GLC
YC
LOCK
OADIV[4:0]*
OAMUX[2:0]*
DLYGLA[4:0]*
OBDIV[4:0]*
OBMUX[2:0]*
DLYYB[4:0]*
DLYGLB[4:0]*
OCDIV[4:0]*
OCMUX[2:0]*
DLYYC[4:0]*
DLYGLC[4:0]*
FINDIV[6:0]*
FBDIV[6:0]*
FBDLY[4:0]*
FBSEL[1:0]*
XDLYSEL*
VCOSEL[2:0]*
Revision 5 23
Low Power Modes in ProASIC3/E and ProASIC3 nano FPGAs
ProASIC3/E Device
Internal
Signal
Programming
Circuitry
ULSICC
FlashROM
Macro
Figure 2-2 • User Low Static (Idle) Mode Application—Internal Control Signal
24 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
ProASIC3/E/nano Device
External
Signal
Programming
Circuitry
ULSICC
FlashROM
Macro
Any User's I/O
Figure 2-3 • User Low Static (Idle) Mode Application—External Control Signal
ULSICC Signal
1 μs 1 μs
Sleep Mode
ProASIC3/E and ProASIC3 nano FPGAs support Sleep mode when device functionality is not required.
In Sleep mode, the VCC (core voltage), VJTAG (JTAG DC voltage), and VPUMP (programming voltage)
are grounded, resulting in the FPGA core being turned off to reduce power consumption. While the
ProASIC3/E device is in Sleep mode, the rest of the system is still operating and driving the input buffers
of the ProASIC3/E device. The driven inputs do not pull up power planes, and the current draw is limited
to a minimal leakage current.
Table 2-3 shows the status of the power supplies in Sleep mode. When a power supply is powered off,
the corresponding power pin can be left floating or grounded.
Table 2-3 • Sleep Mode—Power Supply Requirements for ProASIC3/E/nano Devices
Power Supplies ProASIC3/E/nano Device
VCC Powered off
VCCI = VMV Powered on
VJTAG Powered off
VPUMP Powered off
Revision 5 25
Low Power Modes in ProASIC3/E and ProASIC3 nano FPGAs
Table 2-4 shows the current draw in Sleep mode for an A3P250 device with the following test conditions:
VCCI = VMV; VCC = VJTAG = VPUMP = GND.
Table 2-5 shows the current draw in Sleep mode for an A3PE600 device with the following test
conditions: VCCI = VMV; VCC = VJTAG = VPUMP = GND.
Table 2-5 • A3PE600 Current Draw in Sleep Mode
A3PE600
Typical Conditions ICCI (µA) ICCI (µA) per Bank
VCCI = 3.3 V 59.85 7.48
VCCI = 2.5 V 45.50 5.69
VCCI = 1.8 V 32.98 4.12
VCCI = 1.5 V 27.66 3.46
VCCI = 0 V or Floating 0.0 0.0
ICC FPGA Core 0.0 0.0
Leakage Current per I/O 0.1 0.1
IPUMP 0.0 0.0
Note: The data in this table were taken under typical conditions and are based on characterization. The
data is not guaranteed.
ProASIC3/E and ProASIC3 nano devices were designed such that before device power-up, all I/Os are
in tristate mode. The I/Os will remain tristated during power-up until the last voltage supply (VCC or
VCCI) is powered to its functional level. After the last supply reaches the functional level, the outputs will
exit the tristate mode and drive the logic at the input of the output buffer. The behavior of user I/Os is
independent of the VCC and VCCI sequence or the state of other FPGA voltage supplies (VPUMP and
VJTAG). During power-down, device I/Os become tristated once the first power supply (VCC or VCCI)
drops below its brownout voltage level. The I/O behavior during power-down is also independent of
voltage supply sequencing.
Figure 2-5 on page 27 shows a timing diagram for the FPGA core entering the activation and
deactivation trip points for a typical application when the VCC power supply ramp rate is 100 µs (ramping
from 0 V to 1.5 V). This is, in fact, the timing diagram for the FPGA entering and exiting Sleep mode, as it
is dependent on powering down or powering up VCC. Depending on the ramp rate of the power supply
and board-level configurations, the user can easily calculate how long it takes for the core to become
active or inactive. For more information, refer to the "Power-Up/-Down Behavior of Low Power Flash
Devices" section on page 307.
26 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
VCC
Deactivation Trip Point
VCC = 1.5 V Vd = 0.75 ± 0.25 V
t
Sleep Mode
Shutdown Mode
For all ProASIC3/E and ProASIC3 nano devices, shutdown mode can be entered by turning off all power
supplies when device functionality is not needed. Cold-sparing and hot-insertion features in ProASIC3
nano devices enable the device to be powered down without turning off the entire system. When power
returns, the live at power-up feature enables immediate operation of the device.
1.5 V Power
Supply
P-Channel
Power FET
Microprocessor
Power On/Off VCC, VJTAG, and VPUMP Pins
ProASIC3/E/nano
Control Signal
Figure 2-6 • Controlling Power On/Off State Using Microprocessor and Power FET
Revision 5 27
Low Power Modes in ProASIC3/E and ProASIC3 nano FPGAs
Alternatively, Figure 2-7 shows how a microprocessor can be used with a voltage regulator's shutdown
pin to turn the power supplies connected to the device on or off.
Microprocessor
Shutdown Shutdown
Control Signal Control Signal
for VCCI for VCC, VJTAG, and VPUMP
Figure 2-7 • Controlling Power On/Off State Using Microprocessor and Voltage Regulator
Though Sleep mode or Shutdown mode can be used to save power, the content of the SRAM and the
state of the registers is lost when power is turned off if no other measure is taken. To keep the original
contents of the device, a low-cost external serial EEPROM can be used to save and restore the device
contents when entering and exiting Sleep mode. In the Embedded SRAM Initialization Using External
Serial EEPROM application note, detailed information and a reference design are provided to initialize
the embedded SRAM using an external serial EEPROM. The user can easily customize the reference
design to save and restore the FPGA state when entering and exiting Sleep mode. The microcontroller
will need to manage this activity, so before powering down VCC, the data must be read from the FPGA
and stored externally. Similarly, after the FPGA is powered up, the microcontroller must allow the FPGA
to load the data from external memory and restore its original state.
Conclusion
Microsemi ProASIC3/E and ProASIC3 nano FPGAs inherit low power consumption capability from their
nonvolatile and live-at-power-up flash-based technology. Power consumption can be reduced further
using the Static (Idle), User Low Static (Idle), Sleep, or Shutdown power modes. All these features result
in a low-power, cost-effective, single-chip solution designed specifically for power-sensitive electronics
applications.
Related Documents
Application Notes
Embedded SRAM Initialization Using External Serial EEPROM
http://www.microsemi.com/soc/documents/EmbeddedSRAMInit_AN.pdf
28 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
List of Changes
The following table lists critical changes that were made in each revision of the chapter.
Revision 5 29
3 – Global Resources in Low Power Flash Devices
Introduction
IGLOO, Fusion, and ProASIC3 FPGA devices offer a powerful, low-delay VersaNet global network
scheme and have extensive support for multiple clock domains. In addition to the Clock Conditioning
Circuits (CCCs) and phase-locked loops (PLLs), there is a comprehensive global clock distribution
network called a VersaNet global network. Each logical element (VersaTile) input and output port has
access to these global networks. The VersaNet global networks can be used to distribute low-skew clock
signals or high-fanout nets. In addition, these highly segmented VersaNet global networks contain spines
(the vertical branches of the global network tree) and ribs that can reach all the VersaTiles inside their
region. This allows users the flexibility to create low-skew local clock networks using spines. This
document describes VersaNet global networks and discusses how to assign signals to these global
networks and spines in a design flow. Details concerning low power flash device PLLs are described in
the "Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs" section on
page 61. This chapter describes the low power flash devices’ global architecture and uses of these global
networks in designs.
Global Architecture
Low power flash devices offer powerful and flexible control of circuit timing through the use of global
circuitry. Each chip has up to six CCCs, some with PLLs.
• In IGLOOe, ProASIC3EL, and ProASIC3E devices, all CCCs have PLLs—hence, 6 PLLs per
device (except the PQ208 package, which has only 2 PLLs).
• In IGLOO, IGLOO nano, IGLOO PLUS, ProASIC3, and ProASIC3L devices, the west CCC
contains a PLL core (except in 10 k through 30 k devices).
• In Fusion devices, the west CCC also contains a PLL core. In the two larger devices (AFS600 and
AFS1500), the west and east CCCs each contain a PLL.
Refer to Table 4-6 on page 84 for details. Each PLL includes delay lines, a phase shifter (0°, 90°, 180°,
270°), and clock multipliers/dividers. Each CCC has all the circuitry needed for the selection and
interconnection of inputs to the VersaNet global network. The east and west CCCs each have access to
three chip global lines on each side of the chip (six chip global lines total). The CCCs at the four corners
each have access to three quadrant global lines in each quadrant of the chip (except in 10 k through 30 k
gate devices).
The nano 10 k, 15 k, and 20 k devices support four VersaNet global resources, and 30 k devices support
six global resources. The 10 k through 30 k devices have simplified CCCs called CCC-GLs.
The flexible use of the VersaNet global network allows the designer to address several design
requirements. User applications that are clock-resource-intensive can easily route external or gated
internal clocks using VersaNet global routing networks. Designers can also drastically reduce delay
penalties and minimize resource usage by mapping critical, high-fanout nets to the VersaNet global
network.
Note: Microsemi recommends that you choose the appropriate global pin and use the appropriate global
resource so you can realize these benefits.
The following sections give an overview of the VersaNet global network, the structure of the global
network, access point for the global networks, and the clock aggregation feature that enables a design to
have very low clock skew using spines.
Revision 5 31
Global Resources in Low Power Flash Devices
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO products as
listed in Table 3-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 3-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
32 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
I/ORing
Top Spine
Chip (main)
Chip (main)
Global Pads
Global Pads
Spine
Ribs
I/O Ring
Bottom Spine
Scope of Spine
(shaded area
plus local RAMs
Spine-Selection and I/Os)
MUX
Embedded
RAM Blocks
Pad Ring
B1 B2 B3 Logic Tiles
Revision 5 33
Global Resources in Low Power Flash Devices
2 2 2 2
Figure 3-2 • Simplified VersaNet Global Network (30 k gates and below)
3 3 3 3
Chip (main)
Global
6 6 Network 6 6
3 CCC
3
CCC
6 6 6 6
Chip Global Spine
3 3 3 3
CCC CCC
South Quadrant Global Network
Figure 3-3 • Simplified VersaNet Global Network (60 k gates and above)
34 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Quadrant Global
+
Quadrant Global
Location A + + Location B
GAAO/IOuxwByVz + GBAO/IOuxwByVz
GAA1/IOuxwByVz + GBA1/IOuxwByVz
GAA2/IOuxwByVz GBA2/IOuxwByVz
GABO/IOuxwByVz +
+
GBBO/IOuxwByVz
GAB1/IOuxwByVz
GBB1/IOuxwByVz
GAB2/IOuxwByVz + + GBB2/IOuxwByVz
GACO/IOuxwByVz
GAC1/IOuxwByVz Bankx Bankx + GBCO/IOuxwByVz
GAC2/IOuxwByVz + GBC1/IOuxwByVz
GBC2/IOuxwByVz
+
3
3 3 3
3
Quadrant Global Spine
Bankx
Bankx
+
+
Chip Global
+
Chip Global +
Location F Location C
GFAO/IOuxwByVz GCAO/IOuxwByVz
6 6 6
GFA1/IOuxwByVz GCA1/IOuxwByVz
+
+ 3 6
GFA2/IOuxwByVz + GCA2/IOuxwByVz
GFBO/IOuxwByVz + GCBO/IOuxwByVz
GFB1/IOuxwByVz 6 3 GCB1/IOuxwByVz
GFB2/IOuxwByVz 6 6 6 GCB2/IOuxwByVz
GFCO/IOuxwByVz
Chip Global Spine
GCCO/IOuxwByVz
+
GFC1/IOuxwByVz +
GCC1/IOuxwByVz
Bankx
Bankx
GFC2/IOuxwByVz
+
+ GCC2/IOuxwByVz
3
3 3 3 3
3
+
Quadrant Global Quadrant Global
Location E + Bankx Bankx
+ Location D
GEAO/IOuxwByVz +
GDAO/IOuxwByVz
GEAC/IOuxwByVz + GDA1/IOuxwByVz
GEA2/IOuxwByVz GDA2/IOuxwByVz
GEBO/IOuxwByVz + +
GDBO/IOuxwByVz
GEB1/IOuxwByVz + CCC w it h PLL GDB1/IOuxwByVz
GEB2/IOuxwByVz + GDB2/IOuxwByVz
GECO/IOuxwByVz CCC w it h or w it hout PLL GDCO/IOuxwByVz
GEC1/IOuxwByVz + +
GDC1/IOuxwByVz
GEC2/IOuxwByVz + GDC2/IOuxwByVz
CCC w it hout PLL
Revision 5 35
Global Resources in Low Power Flash Devices
Figure 3-5 shows more detailed global input connections. It shows the global input pins connection to the
northwest quadrant global networks. Each global buffer, as well as the PLL reference clock, can be
driven from one of the following:
• 3 dedicated single-ended I/Os using a hardwired connection
• 2 dedicated differential I/Os using a hardwired connection (not supported for IGLOO nano or
ProASIC3 nano devices)
• The FPGA core
1
GAA1/IO00PDB0V0 +
Routed Clock
1 2
GAA2/IO13PDB7V1 + (from FPGA core)
Note: Differential inputs are not supported for IGLOO nano or ProASIC3 nano devices.
Figure 3-5 • Global I/O Overview
36 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Figure 3-6 shows all nine global inputs for the location A connected to the top left quadrant global
network via CCC.
GAAO/
IOuxwByVz
GAA1/
IOuxwByVz MUX CLKA Quadrant Global for CLKA
GAA2/
IOuxwByVz
GABO/
IOuxwByVz
GAB1/
IOuxwByVz MUX CLKB CCC Quadrant Global for CLKB
GAB2/
IOuxwByVz
GACO/
IOuxwByVz
GAC1/ MUX
IOuxwByVz CLKC Quadrant Global for CLKC
GAC2/
IOuxwByVz
Since each bank can have a different I/O standard, the user should be careful to choose the correct
global I/O for the design. There are 54 global pins available to access 18 global networks. For the single-
ended and voltage-referenced I/O standards, you can use any of these three available I/Os to access the
global network. For differential I/O standards such as LVDS and LVPECL, the I/O macro needs to be
placed on (A0, A1), (B0, B1), (C0, C1), or a similar location. The unassigned global I/Os can be used
as regular I/Os. Note that pin names starting with GF and GC are associated with the chip global
networks, and GA, GB, GD, and GE are used for quadrant global networks. Table 3-2 on page 38 and
Table 3-3 on page 39 show the general chip and quadrant global pin names.
Revision 5 37
Global Resources in Low Power Flash Devices
38 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Note: Only one of the I/Os can be directly connected to a quadrant at a time.
Revision 5 39
Global Resources in Low Power Flash Devices
40 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Spine Architecture
The low power flash device architecture allows the VersaNet global networks to be segmented. Each of
these networks contains spines (the vertical branches of the global network tree) and ribs that can reach
all the VersaTiles inside its region. The nine spines available in a vertical column reside in global
networks with two separate regions of scope: the quadrant global network, which has three spines, and
the chip (main) global network, which has six spines. Note that the number of quadrant globals and
globals/spines per tree varies depending on the specific device. Refer to Table 3-4 for the clocking
resources available for each device. The spines are the vertical branches of the global network tree,
shown in Figure 3-3 on page 34. Each spine in a vertical column of a chip (main) global network is further
divided into two spine segments of equal lengths: one in the top and one in the bottom half of the die
(except in 10 k through 30 k gate devices).
Top and bottom spine segments radiating from the center of a device have the same height. However,
just as in the ProASICPLUS® family, signals assigned only to the top and bottom spine cannot access the
middle two rows of the die. The spines for quadrant clock networks do not cross the middle of the die and
cannot access the middle two rows of the architecture.
Each spine and its associated ribs cover a certain area of the device (the "scope" of the spine; see
Figure 3-3 on page 34). Each spine is accessed by the dedicated global network MUX tree architecture,
which defines how a particular spine is driven—either by the signal on the global network from a CCC, for
example, or by another net defined by the user. Details of the chip (main) global network spine-selection
MUX are presented in Figure 3-8 on page 44. The spine drivers for each spine are located in the middle
of the die.
Quadrant spines can be driven from user I/Os or an internal signal from the north and south sides of the
die. The ability to drive spines in the quadrant global networks can have a significant effect on system
performance for high-fanout inputs to a design. Access to the top quadrant spine regions is from the top
of the die, and access to the bottom quadrant spine regions is from the bottom of the die. The A3PE3000
device has 28 clock trees and each tree has nine spines; this flexible global network architecture enables
users to map up to 252 different internal/external clocks in an A3PE3000 device.
Revision 5 41
Global Resources in Low Power Flash Devices
42 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Spine Access
The physical location of each spine is identified by the letter T (top) or B (bottom) and an accompanying
number (Tn or Bn). The number n indicates the horizontal location of the spine; 1 refers to the first spine
on the left side of the die. Since there are six chip spines in each spine tree, there are up to six spines
available for each combination of T (or B) and n (for example, six T1 spines). Similarly, there are three
quadrant spines available for each combination of T (or B) and n (for example, four T1 spines), as shown
in Figure 3-7.
Global
Network
Global
Network
C
A spine is also called a local clock network, and is accessed by the dedicated global MUX architecture.
These MUXes define how a particular spine is driven. Refer to Figure 3-8 on page 44 for the global MUX
architecture. The MUXes for each chip global spine are located in the middle of the die. Access to the top
and bottom chip global spine is available from the middle of the die. There is no control dependency
between the top and bottom spines. If a top spine, T1, of a chip global network is assigned to a net, B1 is
not wasted and can be used by the global clock network. The signal assigned only to the top or bottom
spine cannot access the middle two rows of the architecture. However, if a spine is using the top and
bottom at the same time (T1 and B1, for instance), the previous restriction is lifted.
The MUXes for each quadrant global spine are located in the north and south sides of the die. Access to
the top and bottom quadrant global spines is available from the north and south sides of the die. Since
the MUXes for quadrant spines are located in the north and south sides of the die, you should not try to
drive T1 and B1 quadrant spines from the same signal.
Revision 5 43
Global Resources in Low Power Flash Devices
Internal/External Internal/External
Signals Signals
Internal/External
Signal
Tree Node MUX
Global Rib
Internal/External
Signal
Global Driver MUX
Spine
44 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Tn Tn + 1 Tn + 2 Tn + 3 Tn + 4
The clock aggregation for the quadrant spines can cross over from the left to right quadrant, but not from
top to bottom. The quadrant spine assignment T1:T4 is legal, but the quadrant spine assignment T1:B1
is not legal. Note that this clock aggregation is hardwired. You can always assign signals to spine T1 and
B2 by instantiating a buffer, but this may add skew in the signal.
Revision 5 45
Global Resources in Low Power Flash Devices
Design Recommendations
The following sections provide design flow recommendations for using a global network in a design.
• "Global Macros and I/O Standards"
• "Global Macro and Placement Selections" on page 48
• "Using Global Macros in Synplicity" on page 50
• "Global Promotion and Demotion Using PDC" on page 51
• "Spine Assignment" on page 52
• "Designer Flow for Global Assignment" on page 53
• "Simple Design Example" on page 55
• "Global Management in PLL Design" on page 57
• "Using Spines of Occupied Global Networks" on page 58
CLKINT
Use these available macros to assign a signal to the global network. In addition to these global macros,
PLL and CLKDLY macros can also drive the global networks. Use I/O–standard–specific clock macros
(CLKBUF_x) to instantiate a specific I/O standard for the global signals. Table 3-9 on page 47 shows the
list of these I/O–standard–specific macros. Note that if you use these I/O–standard–specific clock
macros, you cannot change the I/O standard later in the design stage. If you use the regular CLKBUF
macro, you can use MVN or the PDC file in Designer to change the I/O standard. The default I/O
46 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
standard for CLKBUF is LVTTL in the current Microsemi Libero® System-on-Chip (SoC) and Designer
software.
The current synthesis tool libraries only infer the CLKBUF or CLKINT macros in the netlist. All other
global macros must be instantiated manually into your HDL code. The following is an example of
CLKBUF_LVCMOS25 global macro instantiations that you can copy and paste into your code:
VHDL
component clkbuf_lvcmos25
port (pad : in std_logic; y : out std_logic);
end component
begin
-- concurrent statements
u2 : clkbuf_lvcmos25 port map (pad => ext_clk, y => int_clk);
end
Verilog
module design (______);
input _____;
output ______;
endmodule
Revision 5 47
Global Resources in Low Power Flash Devices
To Core
GFA0
GFA1 +
To global network
GFA2 +
48 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Bankx Bankx
Location B
Location A
Bankx
Bankx
Location C
Chip Global Region
Location F
Bankx
Bankx
Bankx Bankx Location D
Location E
Bankx Bankx
Location B
Location A
Bankx
Bankx
Quadrant Global Region
Location F Location C
Bankx
Bankx
Revision 5 49
Global Resources in Low Power Flash Devices
INBUF CLKINT
To Core
GFA0
GFA1 +
To global network
GFA2 +
INBUF
50 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
CLKA GLA
EXTFB LOCK
POWERDOWN
OADIVRST
GLB
YB
GLC
YC
Revision 5 51
Global Resources in Low Power Flash Devices
The following will happen during demotion of a global signal to regular nets:
• CLKBUF_x becomes INBUF_x; CLKINT is removed from the netlist.
• The essential global macro, such as the output of the Clock Conditioning Circuit, cannot be
demoted.
• No automatic buffering will happen.
Since no automatic buffering happens when a signal is demoted, this net may have a high delay due to
large fanout. This may have a negative effect on the quality of the results. Microsemi recommends that
the automatic global demotion only be used on small-fanout nets. Use clock networks for high-fanout
nets to improve timing and routability.
Spine Assignment
The low power flash device architecture allows the global networks to be segmented and used as clock
spines. These spines, also called local clock networks, enable the use of PDC or MVN to assign a signal
to a spine.
PDC syntax to promote a net to a spine/local clock:
assign_local_clock –net netname –type [quadrant|chip] Tn|Bn|Tn:Bm
If the net is driven by a clock macro, Designer automatically demotes the clock net to a regular net before
it is assigned to a spine. Nets driven by a PLL or CLKDLY macro cannot be assigned to a local clock.
When assigning a signal to a spine or quadrant global network using PDC (pre-compile), the Designer
software will legalize the shared instances. The number of shared instances to be legalized can be
controlled by compile options. If these networks are created in MVN (only quadrant globals can be
created), no legalization is done (as it is post-compile). Designer does not do legalization between non-
clock nets.
As an example, consider two nets, net_clk and net_reset, driving the same flip-flop. The following PDC
constraints are used:
assign_local_clock –net net_clk –type chip T3
assign_local_clock –net net_reset –type chip T1:T2
During Compile, Designer adds a buffer in the reset net and places it in the T1 or T2 region, and places
the flip-flop in the T3 spine region (Figure 3-16).
D D
CLK CLK
net_clk net_clk
CLR CLR
net_reset net_reset
Added
buffer
T1 T2 T3
52 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
You can control the maximum number of shared instances allowed for the legalization to take place using
the Compile Option dialog box shown in Figure 3-17. Refer to Libero SoC / Designer online help for
details on the Compile Option dialog box. A large number of shared instances most likely indicates a
floorplanning problem that you should address.
Revision 5 53
Global Resources in Low Power Flash Devices
3. Occasionally, the synthesis tool assigns a global macro to clock nets, even though the fanout is
significantly less than other asynchronous signals. Select Demote global nets whose fanout is
less than and enter a reasonable value for fanouts. This frees up some global networks from the
signals that have very low fanouts. This can also be done using PDC.
4. Use a local clock network for the signals that do not need to go to the whole chip but should have
low skew. This local clock network assignment can only be done using PDC.
5. Assign the I/O buffer using MVN if you have fixed I/O assignment. As shown in Figure 3-10 on
page 45, there are three sets of global pins that have a hardwired connection to each global
network. Do not try to put multiple CLKBUF macros in these three sets of global pins. For
example, do not assign two CLKBUFs to GAA0x and GAA2x pins.
6. You must click Commit at the end of MVN assignment. This runs the pre-layout checker and
checks the validity of global assignment.
7. Always run Compile with the Keep existing physical constraints option on. This uses the
quadrant clock network assignment in the MVN assignment and checks if you have the desired
signals on the global networks.
8. Run Layout and check the timing.
54 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
reg256_behave
PLL2 Shhl_In
Shhl_In Shhl_out
POWER-DOWN LOCK
REG_PLLCLK2GLA_OUT
PDOWN Adr
CLKA GLA Clock
PLLZ_CLKA
GLB REG_PLLCLK2GLA
\$116
reg256_behave
Shhl_In
DATA_QCLK1 Shhl_In Shhl_out REG_QCLK1_OUT
Adr
QCLK1 Clock
REG_QCLK1
DATA_PLLCQCLK2
EN_ALL
reg256_behave
Shhl_In
DATA_QCLK2 Shhl_In Shhl_out REG_QCLK2_OUT
ACLR Adr
QCLK2 Clock
REG_QCLK2
reg256_behave
Shhl_In
Shhl_In Shhl_out REG_PLLCLK2GLB_OUT
Adr
Clock
REG_PLLCLK2GLB
reg256_behave
Shhl_In
DATA_QCLK3 Shhl_In Shhl_out REG_QCLK3_OUT
Adr
QCLK3 Clock
REG_QCLK3
DATA_PLLCLK1
reg256_behave
Shhl_In
PLL1 Shhl_In Shhl_out
Adr REG_PLLCLK1_OUT
POWER-DOWN LOCK
PLL1_CLKA CLKA GLA Clock
\$115 REG_PLLCLK1
Revision 5 55
Global Resources in Low Power Flash Devices
Step 1
Run Synthesis with default options. The Synplicity log shows the following device utilization:
Cell usage:
cell count area count*area
DFN1E1C1 1536 2.0 3072.0
BUFF 278 1.0 278.0
INBUF 10 0.0 0.0
VCC 9 0.0 0.0
GND 9 0.0 0.0
OUTBUF 6 0.0 0.0
CLKBUF 3 0.0 0.0
PLL 2 0.0 0.0
TOTAL 1853 3350.0
Step 2
Run Compile with the Promote regular nets whose fanout is greater than option selected in Designer;
you will see the following in the Compile report:
Device utilization report:
==========================
CORE Used: 1536 Total: 13824 (11.11%)
IO (W/ clocks) Used: 19 Total: 147 (12.93%)
Differential IO Used: 0 Total: 65 (0.00%)
GLOBAL Used: 8 Total: 18 (44.44%)
PLL Used: 2 Total: 2 (100.00%)
RAM/FIFO Used: 0 Total: 24 (0.00%)
FlashROM Used: 0 Total: 1 (0.00%)
……………………
The following nets have been assigned to a global resource:
Fanout Type Name
--------------------------
1536 INT_NET Net : EN_ALL_c
Driver: EN_ALL_pad_CLKINT
Source: AUTO PROMOTED
1536 SET/RESET_NET Net : ACLR_c
Driver: ACLR_pad_CLKINT
Source: AUTO PROMOTED
256 CLK_NET Net : QCLK1_c
Driver: QCLK1_pad_CLKINT
Source: AUTO PROMOTED
256 CLK_NET Net : QCLK2_c
Driver: QCLK2_pad_CLKINT
Source: AUTO PROMOTED
256 CLK_NET Net : QCLK3_c
Driver: QCLK3_pad_CLKINT
Source: AUTO PROMOTED
256 CLK_NET Net : $1N14
Driver: $1I5/Core
Source: ESSENTIAL
256 CLK_NET Net : $1N12
Driver: $1I6/Core
Source: ESSENTIAL
256 CLK_NET Net : $1N10
Driver: $1I6/Core
Source: ESSENTIAL
Designer will promote five more signals to global due to high fanout. There are eight signals assigned to
global networks.
56 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
During Layout, Designer will assign two of the signals to quadrant global locations.
Step 3 (optional)
You can also assign the QCLK1_c and QCLK2_c nets to quadrant regions using the following PDC
commands:
assign_local_clock –net QCLK1_c –type quadrant UL
assign_local_clock –net QCLK2_c –type quadrant LL
Step 4
Import this PDC with the netlist and run Compile again. You will see the following in the Compile report:
The following nets have been assigned to a global resource:
Fanout Type Name
--------------------------
1536 INT_NET Net : EN_ALL_c
Driver: EN_ALL_pad_CLKINT
Source: AUTO PROMOTED
1536 SET/RESET_NET Net : ACLR_c
Driver: ACLR_pad_CLKINT
Source: AUTO PROMOTED
256 CLK_NET Net : QCLK3_c
Driver: QCLK3_pad_CLKINT
Source: AUTO PROMOTED
256 CLK_NET Net : $1N14
Driver: $1I5/Core
Source: ESSENTIAL
256 CLK_NET Net : $1N12
Driver: $1I6/Core
Source: ESSENTIAL
256 CLK_NET Net : $1N10
Driver: $1I6/Core
Source: ESSENTIAL
The following nets have been assigned to a quadrant clock resource using PDC:
Fanout Type Name
--------------------------
256 CLK_NET Net : QCLK1_c
Driver: QCLK1_pad_CLKINT
Region: quadrant_UL
256 CLK_NET Net : QCLK2_c
Driver: QCLK2_pad_CLKINT
Region: quadrant_LL
Step 5
Run Layout.
Revision 5 57
Global Resources in Low Power Flash Devices
Conclusion
IGLOO, Fusion, and ProASIC3 devices contain 18 global networks: 6 chip global networks and 12
quadrant global networks. These global networks can be segmented into local low-skew networks called
spines. The spines provide low-skew networks for the high-fanout signals of a design. These allow you
up to 252 different internal/external clocks in an A3PE3000 device. This document describes the
architecture for the global network, plus guidelines and methodologies in assigning signals to globals and
spines.
Related Documents
User’s Guides
IGLOO, ProASIC3, SmartFusion, and Fusion Macro Library Guide
http://www.microsemi.com/soc/documents/pa3_libguide_ug.pdf
58 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
List of Changes
The following table lists critical changes that were made in each revision of the chapter.
Revision 5 59
Global Resources in Low Power Flash Devices
60 R e visio n 5
4 – Clock Conditioning Circuits in Low Power
Flash Devices and Mixed Signal FPGAs
Introduction
This document outlines the following device information: Clock Conditioning Circuit (CCC) features, PLL
core specifications, functional descriptions, software configuration information, detailed usage
information, recommended board-level considerations, and other considerations concerning clock
conditioning circuits and global networks in low power flash devices or mixed signal FPGAs.
Multiplexer
Tree
To
Core CLKA To Global Network A
3 Global I/Os
From
Core
To
Core CLKB CCC
3 Global I/Os To Global Network B
Function Block
From (with or without PLL)
Core
To
Core CLKC To Global Network C
3 Global I/Os
From
Core
Multiple Signals
Single Signals
Figure 4-1 • Overview of the CCCs Offered in Fusion, IGLOO, and ProASIC3
Revision 5 61
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
Each CCC can implement up to three independent global buffers (with or without programmable delay)
or a PLL function (programmable frequency division/multiplication, phase shift, and delays) with up to
three global outputs. Unused global outputs of a PLL can be used to implement independent global
buffers, up to a maximum of three global outputs for a given CCC.
CCC Programming
The CCC block is fully configurable, either via flash configuration bits set in the programming bitstream or
through an asynchronous interface. This asynchronous dedicated shift register interface is dynamically
accessible from inside the low power flash devices to permit parameter changes, such as PLL divide
ratios and delays, during device operation.
To increase the versatility and flexibility of the clock conditioning system, the CCC configuration is
determined either by the user during the design process, with configuration data being stored in flash
memory as part of the device programming procedure, or by writing data into a dedicated shift register
during normal device operation.
This latter mode allows the user to dynamically reconfigure the CCC without the need for core
programming. The shift register is accessed through a simple serial interface. Refer to the "UJTAG
Applications in Microsemi’s Low Power Flash Devices" section on page 297 or the application note Using
Global Resources in Actel Fusion Devices.
Global Resources
Low power flash and mixed signal devices provide three global routing networks (GLA, GLB, and GLC)
for each of the CCC locations. There are potentially many I/O locations; each global I/O location can be
chosen from only one of three possibilities. This is controlled by the multiplexer tree circuitry in each
global network. Once the I/O location is selected, the user has the option to utilize the CCCs before the
signals are connected to the global networks. The CCC in each location (up to six) has the same
structure, so generating the CCC macros is always done with an identical software GUI. The CCCs in the
corner locations drive the quadrant global networks, and the CCCs in the middle of the east and west
chip sides drive the chip global networks. The quadrant global networks span only a quarter of the
device, while the chip global networks span the entire device. For more details on global resources
offered in low power flash devices, refer to the "Global Resources in Low Power Flash Devices" section
on page 31.
A global buffer can be placed in any of the three global locations (CLKA-GLA, CLKB-GLB, or
CLKC-GLC) of a given CCC. A PLL macro uses the CLKA CCC input to drive its reference clock. It uses
the GLA and, optionally, the GLB and GLC global outputs to drive the global networks. A PLL macro can
also drive the YB and YC regular core outputs. The GLB (or GLC) global output cannot be reused if the
YB (or YC) output is used. Refer to the "PLL Macro Signal Descriptions" section on page 68 for more
information.
Each global buffer, as well as the PLL reference clock, can be driven from one of the following:
• 3 dedicated single-ended I/Os using a hardwired connection
• 2 dedicated differential I/Os using a hardwired connection (not supported for IGLOO nano or
ProASIC3 nano devices)
• The FPGA core
62 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO devices as listed
in Table 4-1. Where the information applies to only one product line or limited devices, these exclusions
will be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 4-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
Revision 5 63
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
A Y PAD Y
Note: IGLOO nano and ProASIC nano devices do not support differential inputs.
Figure 4-2 • CCC Options: Global Buffers with No Programmable Delay
64 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Clock Source
Clock Conditioning Output
Input LVDS/LVPECL Macro
GLA
PADN Y CLK GL or
PADP GLB
or
INBUF* Macro DLYGL[4:0] GLC
PAD Y
Notes:
1. For INBUF* driving a PLL macro or CLKDLY macro, the I/O will be hard-routed to the CCC; i.e., will be placed by
software to a dedicated Global I/O.
2. IGLOO nano and ProASIC3 nano devices do not support differential inputs.
Figure 4-3 • CCC Options: Global Buffers with Programmable Delay
The CLKDLY macro is a pass-through clock source that does not use the PLL, but provides the ability to
delay the clock input using a programmable delay. The CLKDLY macro takes the selected clock input
and adds a user-defined delay element. This macro generates an output clock phase shift from the input
clock.
The CLKDLY macro can be driven by an INBUF* macro to create a composite macro, where the I/O
macro drives the global buffer (with programmable delay) using a hardwired connection. In this case, the
software will automatically place the dedicated global I/O in the appropriate locations. Many specific
INBUF macros support the wide variety of single-ended and differential I/O standards supported by the
low power flash family. The available INBUF macros are described in the IGLOO, ProASIC3,
SmartFusion, and Fusion Macro Library Guide.
The CLKDLY macro can be driven directly from the FPGA core. The CLKDLY macro can also be driven
from an I/O that is routed through the FPGA regular routing fabric. In this case, users must instantiate a
special macro, PLLINT, to differentiate the clock input driven by the hardwired I/O connection.
The visual CLKDLY configuration in the SmartGen area of the Microsemi Libero System-on-Chip (SoC)
and Designer tools allows the user to select the desired amount of delay and configures the delay
elements appropriately. SmartGen also allows the user to select the input clock source. SmartGen will
automatically instantiate the special macro, PLLINT, when needed.
Revision 5 65
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
66 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
GLA
CLKA GLA
PADN Y EXTFB LOCK or
POWERDOWN GLB
PADP OADIVRST1 YB GLA and (GLB or YB)
GLC
YC
or
INBUF* Macro OADIVHALF1
PAD Y 2 GLA and (GLC or YC)
OADIV[4:0]
OAMUX[2:0] 2 or
DLYGLA[4:0] 2
OBDIV[4:0] 2
OBMUX[2:0] 2
GLA and (GLB or YB) and
2
DLYYB[4:0]
DLYGLB[4:0]
2 (GLC or YC)
OCDIV[4:0] 2
2
OCMUX[2:0]
2
DLYYC[4:0]
DLYGLC[4:0]2
2
FINDIV[6:0]
FBDIV[6:0] 2
FBDLY[4:0]2
FBSEL[1:0]2
XDLYSEL2
VCOSEL[2:0]2
Notes:
1. For Fusion only.
2. Refer to the IGLOO, ProASIC3, SmartFusion, and Fusion Macro Library Guide for more information.
3. For INBUF* driving a PLL macro or CLKDLY macro, the I/O will be hard-routed to the CCC; i.e., will be placed by
software to a dedicated Global I/O.
4. IGLOO nano and ProASIC3 nano devices do not support differential inputs.
Figure 4-4 • CCC Options: Global Buffers with PLL
The PLL macro provides five derived clocks (three independent) from a single reference clock. The PLL
macro also provides power-down input and lock output signals. The additional inputs shown on the
macro are configuration settings, which are configured through the use of SmartGen. For manual setting
of these bits refer to the IGLOO, ProASIC3, SmartFusion, and Fusion Macro Library Guide for details.
Figure 4-6 on page 71 illustrates the various clock output options and delay elements.
Revision 5 67
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
Input Clock
The inputs to the input reference clock (CLKA) of the PLL can come from global input pins, regular I/O
pins, or internally from the core. For Fusion families, the input reference clock can also be from the
embedded RC oscillator or crystal oscillator.
68 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
YB and YC are identical to GLB and GLC, respectively, with the exception of a higher selectable final
output delay. The SmartGen PLL Wizard will configure these outputs according to user specifications and
can enable these signals with or without the enabling of Global Output Clocks.
The above signals can be enabled in the following output groupings in both internal and external
feedback configurations of the static PLL:
• One output – GLA only
• Two outputs – GLA + (GLB and/or YB)
• Three outputs – GLA + (GLB and/or YB) + (GLC and/or YC)
Revision 5 69
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
To Core
GxA0
The reference clock,
CLKA, can be assigned
on GxA0 or GxA1.
–
GxA1 +
–
Routed Clok
GxA2 + (from FPGA core)
To Core
GxB0
External Feedback
–
(EXTFB) signal is GxB1 +
assigned on GxB1
Source for CCC
by Designer automatically.
(CLKA or CLKB or CLKC)
–
Routed Clok
GxB2 + (from FPGA core)
70 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
SmartGen also allows the user to select the various delays and phase shift values necessary to adjust
the phases between the reference clock (CLKA) and the derived clocks (GLA, GLB, GLC, YB, and YC).
SmartGen allows the user to select the input clock source. SmartGen automatically instantiates the
special macro, PLLINT, when needed.
CLKA
Programmable
Programmable Delay Delay Type 1
Programmable GLB
EXTFB Delay Type 2
Phase
Select
Programmable YB
Delay Type 1
Programmable GLC
Delay Type 2
Phase
Select
Programmable YC
Delay Type 1
Note: Clock divider and clock multiplier blocks are not shown in this figure or in SmartGen. They are automatically
configured based on the user's required frequencies.
Figure 4-6 • CCC with PLL Block
Revision 5 71
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
Routed Clock
(from FPGA core)
Figure 4-7 • Clock Input Sources (30 k gates devices and below)
1
GAA1/IO00PDB0V0 +
Routed Clock
1 2
GAA2/IO13PDB7V1 + (from FPGA core)
Notes:
1. Represents the global input pins. Globals have direct access to the clock conditioning block and are
not routed via the FPGA fabric. Refer to the "User I/O Naming Conventions in I/O Structures" chapter
of the appropriate device user’s guide.
2. Instantiate the routed clock source input as follows:
a) Connect the output of a logic element to the clock input of a PLL, CLKDLY, or CLKINT macro.
b) Do not place a clock source I/O (INBUF or INBUF_LVPECL/LVDS/B-LVDS/M-LVDS/DDR) in
a relevant global pin location.
3. IGLOO nano and ProASIC3 nano devices do not support differential inputs.
Figure 4-8 • Clock Input Sources Including CLKBUF, CLKBUF_LVDS/LVPECL, and CLKINT (60 k
gates devices and above)
72 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Each global buffer, as well as the PLL reference clock, can be driven from one of the following:
• 3 dedicated single-ended I/Os using a hardwired connection
• 2 dedicated differential I/Os using a hardwired connection (not applicable for IGLOO nano and
ProASIC3 nano devices)
• The FPGA core
Since the architecture of the devices varies as size increases, the following list details I/O types
supported for globals:
Fusion
• AFS600 and AFS1500: All single-ended, differential, and voltage-referenced I/O standards (Pro
I/O).
• AFS090 and AFS250: All single-ended and differential I/O standards.
Revision 5 73
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
To Core
Gmn0
Multiplexer PLL or CLKDLY
_ Tree Macro
Gmn1 +
To Global (or local)
CLKA Routing Network
IOuxwByVz
Gmn* = Global Input Pin
_
IOuxwByVz = Regular I/O Pin
Routed Clock
Gmn2 +
(from FPGA core)
PLLINT
Note: Fusion CCCs have additional source selections (RCOSC, XTAL).
Figure 4-9 • Illustration of Hardwired I/O (global input pins) Usage for IGLOO and ProASIC3 devices 60 k Gates
and Larger
To Core
Dedicated I/O Pad
Routed Clock
(from the FPGA core)
Figure 4-10 • Illustration of Hardwired I/O (global input pins) Usage for IGLOO and ProASIC3 devices 30 k
Gates and Smaller
74 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
To Core
Gmn*
Multiplexer PLL or CLKDLY
Tree Macro
_
Gmn* +
To Global (or Local)
CLKA
Routing Network
IOuxwByVz*
_
Routed Clock
Gmn* +
(from FPGA Core) Gmn* = Global Input Pin
PLLINT IOuxwByVz = Regular I/O Pin
IOuxwByVz*
For Fusion devices, the input reference clock can also be from the embedded RC oscillator and crystal
oscillator. In this case, the CCC configuration is the same as the hardwired I/O clock source, and users
are required to instantiate the RC oscillator or crystal oscillator macro and connect its output to the input
reference clock of the CCC block.
Revision 5 75
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
To Core
Gmn*
Multiplexer
PLL or CLKDLY
Tree
_ Macro
Gmn* +
To Global (or Local)
CLKA
Routing Network
IOuxwByVz*
Gmn* = Global Input Pin
Routed Clock IOuxwByVz = Regular I/O Pin
_ (from FPGA Core)
Gmn* +
PLLINT From Internal
Signals
For Fusion devices, the input reference clock can also be from the embedded RC oscillator and crystal
oscillator. In this case, the CCC configuration is the same as the hardwired I/O clock source, and users
are required to instantiate the RC oscillator or crystal oscillator macro and connect its output to the input
reference clock of the CCC block.
76 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 77
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
Device-Specific Layout
Two kinds of CCCs are offered in low power flash devices: CCCs with integrated PLLs, and CCCs
without integrated PLLs (simplified CCCs). Table 4-5 lists the number of CCCs in various devices.
Table 4-5 • Number of CCCs by Device Size and Package
Device CCCs with CCCs without
Integrated Integrated PLLs
ProASIC3 IGLOO Package PLLs (simplified CCC)
A3PN010 AGLN010 All 0 2
A3PN015 AGLN015 All 0 2
A3PN020 AGLN020 All 0 2
AGLN060 CS81 0 6
A3PN060 AGLN060 All other 1 5
packages
AGLN125 CS81 0 6
A3PN125 AGLN125 All other 1 5
packages
AGLN250 CS81 0 6
A3PN250 AGLN250 All other 1 5
packages
A3P015 AGL015 All 0 2
A3P030 AGL030/AGLP030 All 0 2
AGL060/AGLP060 CS121/CS201 0 6
A3P060 AGL060/AGLP060 All other 1 5
packages
A3P125 AGL125/AGLP125 All 1 5
A3P250/L AGL250 All 1 5
A3P400 AGL400 All 1 5
A3P600/L AGL600 All 1 5
A3P1000/L AGL1000 All 1 5
A3PE600 AGLE600 PQ208 2 4
A3PE600/L All other 6 0
packages
A3PE1500 PQ208 2 4
A3PE1500 All other 6 0
packages
A3PE3000/L PQ208 2 4
A3PE3000/L AGLE3000 All other 6 0
packages
Fusion Devices
AFS090 All 1 5
AFS250, M1AFS250 All 1 5
AFS600, M7AFS600, M1AFS600 All 2 4
AFS1500, M1AFS1500 All 2 4
78 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
This section outlines the following device information: CCC features, PLL core specifications, functional
descriptions, software configuration information, detailed usage information, recommended board-level
considerations, and other considerations concerning global networks in low power flash devices.
Revision 5 79
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
CCC Locations
CCCs located in the middle of the east and west sides of the device access the three VersaNet global
networks on each side (six total networks), while the four CCCs located in the four corners access three
quadrant global networks (twelve total networks). See Figure 4-13.
3 3 3 3
Quadrant Global Spine
Chip-Wide (main)
Global
Networks
6 6 6 6
3 CCC Location C
CCC Location F 3
6 6 6 6
Global Spine
3 3 3 3
Figure 4-13 • Global Network Architecture for 60 k Gate Devices and Above
The following explains the locations of the CCCs in IGLOO and ProASIC3 devices:
In Figure 4-15 on page 82 through Figure 4-16 on page 82, CCCs with integrated PLLs are indicated in
red, and simplified CCCs are indicated in yellow. There is a letter associated with each location of the
CCC, in clockwise order. The upper left corner CCC is named "A," the upper right is named "B," and so
on. These names finish up at the middle left with letter "F."
80 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
A Bank 0 B
CCC
RAM Block
4,608-Bit Dual-Port
SRAM or FIFO Block
Bank 3
Bank 1
I/Os
F C
VersaTile
Bank 3
Bank 1
RAM Block
4,608-Bit Dual-Port
ISP AES User Nonvolatile
Decryption FlashROM (FROM)
Charge Pumps SRAM or FIFO Block
E D
Bank 2
Note: The number and architecture of the banks are different for some devices.
10 k through 30 k gate devices do not support PLL features. In these devices, there are two CCC-GLs at
the lower corners (one at the lower right, and one at the lower left). These CCC-GLs do not have
programmable delays.
Revision 5 81
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
A B
CCC
RAM Block
4,608-Bit Dual-Port SRAM
or FIFO Block
Pro I/Os
F C
VersaTile
RAM Block
4,608-Bit Dual-Port SRAM
ISP AES User Nonvolatile Flash*Freeze Charge or FIFO Block
Decryption FlashRom Technology Pumps
E D
Figure 4-15 • CCC Locations in IGLOOe and ProASIC3E Family Devices (except PQFP-208
package)
A Bank 0
CCC B
RAM Block
4,608-Bit Dual-Port
SRAM or FIFO Block
Bank 3
Bank 1
I/Os
F C
VersaTile
Bank 3
Bank 1
RAM Block
4,608-Bit Dual-Port
ISP AES User Nonvolatile Flash*Freeze Charge
Decryption* FlashRom Technology Pumps
SRAM or FIFO Block
E D
Bank 2
82 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
A Bank 0 B
CCC
RAM Block
4,608-Bit Dual-Port
SRAM or FIFO Block
Bank 3
Bank 1
I/Os
F C
VersaTile
Bank 3
Bank 1
RAM Block
4,608-Bit Dual-Port
ISP AES User Nonvolatile
Decryption FlashROM (FROM)
Charge Pumps SRAM or FIFO Block
E D
Bank 2
Figure 4-17 • CCC Locations in Fusion Family Devices (AFS090, AFS250, M1AFS250)
A Bank 0
CCC B
RAM Block
4,608-Bit Dual-Port
SRAM or FIFO Block
Bank 3
Bank 1
I/Os
F C
VersaTile
Bank 3
Bank 1
RAM Block
4,608-Bit Dual-Port
ISP AES User Nonvolatile Flash*Freeze Charge
Decryption* FlashRom Technology Pumps
SRAM or FIFO Block
E D
Bank 2
Figure 4-18 • CCC Locations in Fusion Family Devices (except AFS090, AFS250, M1AFS250)
Revision 5 83
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
Loop Bandwidth
Common design practice for systems with a low-noise input clock is to have PLLs with small loop
bandwidths to reduce the effects of noise sources at the output. Table 4-6 shows the PLL loop
bandwidth, providing a measure of the PLL's ability to track the input clock and jitter.
Frequency
Frequency
Reference
Output
Input FIN Voltage
Phase Low-Pass M × FIN
Controlled
Detector Filter
Oscillator
Divide by M
Delay
Counter
Figure 4-19 • Simplified PLL Core with Feedback Divider and Delay
The PLL is an electronic servo loop that phase-aligns the PD feedback signal with the reference input. To
achieve this, the PLL dynamically adjusts the VCO output signal according to the average phase
difference between the input and feedback signals.
The first element is the PD, which produces a voltage proportional to the phase difference between its
inputs. A simple example of a digital phase detector is an Exclusive-OR gate. The second element, the
LPF, extracts the average voltage from the phase detector and applies it to the VCO. This applied voltage
alters the resonant frequency of the VCO, thus adjusting its output frequency.
Consider Figure 4-19 with the feedback path bypassing the divider and delay elements. If the LPF
steadily applies a voltage to the VCO such that the output frequency is identical to the input frequency,
this steady-state condition is known as lock. Note that the input and output phases are also identical. The
PLL core sets a LOCK output signal HIGH to indicate this condition.
Should the input frequency increase slightly, the PD detects the frequency/phase difference between its
reference and feedback input signals. Since the PD output is proportional to the phase difference, the
change causes the output from the LPF to increase. This voltage change increases the resonant
frequency of the VCO and increases the feedback frequency as a result. The PLL dynamically adjusts in
this manner until the PD senses two phase-identical signals and steady-state lock is achieved. The
opposite (decreasing PD output signal) occurs when the input frequency decreases.
Now suppose the feedback divider is inserted in the feedback path. As the division factor M (shown in
Figure 4-20 on page 85) is increased, the average phase difference increases. The average phase
84 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
difference will cause the VCO to increase its frequency until the output signal is phase-identical to the
input after undergoing division. In other words, lock in both frequency and phase is achieved when the
output frequency is M times the input. Thus, clock division in the feedback path results in multiplication at
the output.
A similar argument can be made when the delay element is inserted into the feedback path. To achieve
steady-state lock, the VCO output signal will be delayed by the input period less the feedback delay. For
periodic signals, this is equivalent to time-advancing the output clock by the feedback delay.
Another key parameter of a PLL system is the acquisition time. Acquisition time is the amount of time it
takes for the PLL to achieve lock (i.e., phase-align the feedback signal with the input reference clock).
For example, suppose there is no voltage applied to the VCO, allowing it to operate at its free-running
frequency. Should an input reference clock suddenly appear, a lock would be established within the
maximum acquisition time.
Functional Description
This section provides detailed descriptions of PLL block functionality: clock dividers and multipliers, clock
delay adjustment, phase adjustment, and dynamic PLL configuration.
90°
180° Output
CLKA n Delay
PLL Core 270° GLA
u D2
m 0° Primary
Fixed D1
Delay
Feedback
System Delay Output
Delay Delay
D2 GLB
v Secondary 1
D1 YB
Output
Delay
Output
Delay
D1 = Programmable Delay Type 1
D2 = Programmable Delay Type 2 D2 GLC
w Secondary 2
D1 YC
Output
Delay
Revision 5 85
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
Dividers n and m (the input divider and feedback divider, respectively) provide integer frequency division
factors from 1 to 128. The output dividers u, v, and w provide integer division factors from 1 to 32.
Frequency scaling of the reference clock CLKA is performed according to the following formulas:
fGLA = fCLKA × m / (n × u) – GLA Primary PLL Output Clock
EQ 4-1
fGLB = fYB = fCLKA × m / (n × v) – GLB Secondary 1 PLL Output Clock(s)
EQ 4-2
fGLC = fYC = fCLKA × m / (n × w) – GLC Secondary 2 PLL Output Clock(s)
EQ 4-3
SmartGen provides a user-friendly method of generating the configured PLL netlist, which includes
automatically setting the division factors to achieve the closest possible match to the requested
frequencies. Since the five output clocks share the n and m dividers, the achievable output frequencies
are interdependent and related according to the following formula:
fGLA = fGLB × (v / u) = fGLC × (w / u)
EQ 4-4
The additional YB and YC signals have access to a selectable delay from 0.6 ns to 5.56 ns in 160 ps
increments (typical). This is the same delay value as the CLKDLY macro. It is similar to CLKDLY, which
bypasses the PLL core just to take advantage of the phase adjustment option with the delay value.
The following parameters must be taken into consideration to achieve minimum delay at the outputs
(GLA, GLB, GLC, YB, and YC) relative to the reference clock: routing delays from the PLL core to CCC
outputs, core outputs and global network output delays, and the feedback path delay. The feedback path
delay acts as a time advance of the input clock and will offset any delays introduced beyond the PLL core
output. The routing delays are determined from back-annotated simulation and are configuration-
dependent.
86 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Phase Adjustment
The four phases available (0, 90, 180, 270) are phases with respect to VCO (PLL output). The
VCO is divided to achieve the user's CCC required output frequency (GLA, YB/GLB, YC/GLC). The
division happens after the selection of the VCO phase. The effective phase shift is actually the VCO
phase shift divided by the output divider. This is why the visual CCC shows both the actual achievable
phase and more importantly the actual delay that is equivalent to the phase shift that can be
achieved.
SDIN
<80:0>* Flash
SDOUT
Dynamic Shift Programming
SCLK
Register Configuration
SSHIFT
SUPDATE Bits
<80>
RESET_ENABLE
<79:0> <79:0>*
MODE
Configuration Bits
Note: *For Fusion, bit <88:81> is also needed.
Figure 4-21 • The CCC Configuration MUX Architecture
The selection between the flash configuration bits and the bits from the configuration register is made
using the MODE signal shown in Figure 4-21. If the MODE signal is logic HIGH, the dynamic shift
register configuration bits are selected. There are 81 control bits to configure the different functions of the
CCC.
Revision 5 87
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
Each group of control bits is assigned a specific location in the configuration shift register. For a list of the
81 configuration bits (C[80:0]) in the CCC and a description of each, refer to "PLL Configuration Bits
Description" on page 90. The configuration register can be serially loaded with the new configuration
data and programmed into the CCC using the following ports:
• SDIN: The configuration bits are serially loaded into a shift register through this port. The LSB of
the configuration data bits should be loaded first.
• SDOUT: The shift register contents can be shifted out (LSB first) through this port using the shift
operation.
• SCLK: This port should be driven by the shift clock.
• SSHIFT: The active-high shift enable signal should drive this port. The configuration data will be
shifted into the shift register if this signal is HIGH. Once SSHIFT goes LOW, the data shifting will
be halted.
• SUPDATE: The SUPDATE signal is used to configure the CCC with the new configuration bits
when shifting is complete.
To access the configuration ports of the shift register (SDIN, SDOUT, SSHIFT, etc.), the user should
instantiate the CCC macro in his design with appropriate ports. Microsemi recommends that users
choose SmartGen to generate the CCC macros with the required ports for dynamic reconfiguration.
Users must familiarize themselves with the architecture of the CCC core and its input, output, and
configuration ports to implement the desired delay and output frequency in the CCC structure.
Figure 4-22 shows a model of the CCC with configurable blocks and switches.
88 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
CLKA
/n
90° (7)
C<6:0>
PLL 180° (6) GLA
M D
Core 270° (5)
U
0° (4) X /u
A C<50:46>
/m
(2) Internal
C<13:7> C<18:14>
(1) C<31:29>
(0)
(2)
D
(1)
D M
U
C<44:40> X /v D YB
C<45> B
C<39:38>
C<23:19>
C<34:32>
D GLB
CLKB
C<55:51>
Internal
M
U D YC
/w
X
C
C<70:66>
C<28:24>
C<37:35> D GLC
CLKC
C<60:56>
Internal
Revision 5 89
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
90 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Table 4-8 • Configuration Bit Descriptions for the CCC Blocks (continued)
Config.
Bits Signal Name Description
83 RXCSEL1 CLKC input selection Select the CLKC input clock source between
RC oscillator and crystal oscillator (refer to
Table 4-16 on page 94).2
82 RXBSEL1 CLKB input selection Select the CLKB input clock source between
RC oscillator and crystal oscillator (refer to
Table 4-16 on page 94).2
81 RXASEL1 CLKA input selection Select the CLKA input clock source between
RC oscillator and crystal oscillator (refer to
Table 4-16 on page 94).2
80 RESETEN Reset Enable Enables (active high) the synchronization of
PLL output dividers after dynamic
reconfiguration (SUPDATE). The Reset
Enable signal is READ-ONLY.
79 DYNCSEL Clock Input C Dynamic Configures clock input C to be sent to GLC for
Select dynamic control.2
78 DYNBSEL Clock Input B Dynamic Configures clock input B to be sent to GLB for
Select dynamic control.2
77 DYNASEL Clock Input A Dynamic Configures clock input A for dynamic PLL
Select configuration.2
<76:74> VCOSEL[2:0] VCO Gear Control Three-bit VCO Gear Control for four frequency
ranges (refer to Table 4-19 on page 95 and
Table 4-20 on page 95).
73 STATCSEL MUX Select on Input C MUX selection for clock input C2
72 STATBSEL MUX Select on Input B MUX selection for clock input B2
71 STATASEL MUX Select on Input A MUX selection for clock input A2
<70:66> DLYC[4:0] YC Output Delay Sets the output delay value for YC.
<65:61> DLYB[4:0] YB Output Delay Sets the output delay value for YB.
<60:56> DLYGLC[4:0] GLC Output Delay Sets the output delay value for GLC.
<55:51> DLYGLB[4:0] GLB Output Delay Sets the output delay value for GLB.
<50:46> DLYGLA[4:0] Primary Output Delay Primary GLA output delay
45 XDLYSEL System Delay Select When selected, inserts System Delay in the
feedback path in Figure 4-20 on page 85.
<44:40> FBDLY[4:0] Feedback Delay Sets the feedback delay value for the
feedback element in Figure 4-20 on page 85.
<39:38> FBSEL[1:0] Primary Feedback Delay Controls the feedback MUX: no delay, include
Select programmable delay element, or use external
feedback.
<37:35> OCMUX[2:0] Secondary 2 Output Selects from the VCO’s four phase outputs for
Select GLC/YC.
<34:32> OBMUX[2:0] Secondary 1 Output Selects from the VCO’s four phase outputs for
Select GLB/YB.
Notes:
1. The <88:81> configuration bits are only for the Fusion dynamic CCC.
2. This value depends on the input clock source, so Layout must complete before these bits can be set.
After completing Layout in Designer, generate the "CCC_Configuration" report by choosing Tools >
Report > CCC_Configuration. The report contains the appropriate settings for these bits.
Revision 5 91
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
Table 4-8 • Configuration Bit Descriptions for the CCC Blocks (continued)
Config.
Bits Signal Name Description
<31:29> OAMUX[2:0] GLA Output Select Selects from the VCO’s four phase outputs for
GLA.
<28:24> OCDIV[4:0] Secondary 2 Output Sets the divider value for the GLC/YC outputs.
Divider Also known as divider w in Figure 4-20 on
page 85. The divider value will be OCDIV[4:0]
+ 1.
<23:19> OBDIV[4:0] Secondary 1 Output Sets the divider value for the GLB/YB outputs.
Divider Also known as divider v in Figure 4-20 on
page 85. The divider value will be OBDIV[4:0]
+ 1.
<18:14> OADIV[4:0] Primary Output Divider Sets the divider value for the GLA output. Also
known as divider u in Figure 4-20 on page 85.
The divider value will be OADIV[4:0] + 1.
<13:7> FBDIV[6:0] Feedback Divider Sets the divider value for the PLL core
feedback. Also known as divider m in
Figure 4-20 on page 85. The divider value will
be FBDIV[6:0] + 1.
<6:0> FINDIV[6:0] Input Divider Input Clock Divider (/n). Sets the divider value
for the input delay on CLKA. The divider value
will be FINDIV[6:0] + 1.
Notes:
1. The <88:81> configuration bits are only for the Fusion dynamic CCC.
2. This value depends on the input clock source, so Layout must complete before these bits can be set.
After completing Layout in Designer, generate the "CCC_Configuration" report by choosing Tools >
Report > CCC_Configuration. The report contains the appropriate settings for these bits.
92 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Table 4-9 to Table 4-15 on page 94 provide descriptions of the configuration data for the configuration
bits.
…
127 128 0.0078125
…
127 128 128
…
31 32 0.03125
Revision 5 93
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
Table 4-14 • Programmable Delay Selection for Feedback Delay and Secondary Core Output Delays
FBDLY<4:0>; DLYYB<4:0>; DLYYC<4:0> State Delay Value
0 Typical delay = 600 ps
1 Typical delay = 760 ps
2 Typical delay = 920 ps
…
…
31 Typical delay = 5.56 ns
Table 4-15 • Programmable Delay Selection for Global Clock Output Delays
DLYGLA<4:0>; DLYGLB<4:0>; DLYGLC<4:0> State Delay Value
0 Typical delay = 225 ps
1 Typical delay = 760 ps
2 Typical delay = 920 ps
…
94 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Table 4-19 • Configuration Bit <76:75> / VCOSEL<2:1> Selection for All Families
VCOSEL[2:1]
00 01 10 11
Min. Max. Min. Max. Min. Max. Min. Max.
Voltage (MHz) (MHz) (MHz) (MHz) (MHz) (MHz) (MHz) (MHz)
IGLOO and IGLOO PLUS
1.2 V ± 5% 24 35 30 70 60 140 135 160
1.5 V ± 5% 24 43.75 30 87.5 60 175 135 250
ProASIC3L, RT ProASIC3, and Military ProASIC3/L
1.2 V ± 5% 24 35 30 70 60 140 135 250
1.5 V ± 5% 24 43.75 30 70 60 175 135 350
ProASIC3 and Fusion
1.5 V ± 5% 24 43.75 33.75 87.5 67.5 175 135 350
Table 4-20 • Configuration Bit <74> / VCOSEL<0> Selection for All Families
VCOSEL[0] Description
0 Fast PLL lock acquisition time with high tracking jitter. Refer to the corresponding datasheet for specific
value and definition.
1 Slow PLL lock acquisition time with low tracking jitter. Refer to the corresponding datasheet for specific
value and definition.
Revision 5 95
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
Software Configuration
SmartGen automatically generates the desired CCC functional block by configuring the control bits, and
allows the user to select two CCC modes: Static PLL and Delayed Clock (CLKDLY).
Input
Selection
96 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
Feedback Configuration
The PLL provides both internal and external feedback delays. Depending on the configuration, various
combinations of feedback delays can be achieved.
Internal Feedback Configuration
This configuration essentially sets the feedback multiplexer to route the VCO output of the PLL core as
the input to the feedback of the PLL. The feedback signal can be processed with the fixed system and
the adjustable feedback delay, as shown in Figure 4-24. The dividers are automatically configured by
SmartGen based on the user input.
Indicated below is the System Delay pull-down menu. The System Delay can be bypassed by setting it to
0. When set, it adds a 2 ns delay to the feedback path (which results in delay advancement of the output
clock by 2 ns).
Figure 4-25 shows the controllable Feedback Delay. If set properly in conjunction with the fixed System
Delay, the total output delay can be advanced significantly.
Revision 5 97
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
Name : test_pll
Family : ProASIC3E
Output Format : VHDL
Type : Static PLL
Input Freq(MHz) : 10.000
CLKA Source : Hardwired I/O
Feedback Delay Value Index : 1
Feedback Mux Select : 2
XDLY Mux Select : No
Primary Freq(MHz) : 33.000
Primary PhaseShift : 0
Primary Delay Value Index : 1
Primary Mux Select : 4
Secondary1 Freq(MHz) : 66.000
Use GLB : YES
Use YB : YES
GLB Delay Value Index : 1
YB Delay Value Index : 1
Secondary1 PhaseShift : 0
Secondary1 Mux Select : 4
Secondary2 Freq(MHz) : 101.000
Use GLC : YES
Use YC : NO
GLC Delay Value Index : 1
YC Delay Value Index : 1
Secondary2 PhaseShift : 0
Secondary2 Mux Select : 4
…
…
…
Below is an example Verilog HDL description of a legal PLL core configuration generated by SmartGen:
module test_pll(POWERDOWN,CLKA,LOCK,GLA);
input POWERDOWN, CLKA;
output LOCK, GLA;
98 R e visio n 5
ProASIC3 nano FPGA Fabric User’s Guide
VCC VCC_1_net(.Y(VCC));
GND GND_1_net(.Y(GND));
PLL Core(.CLKA(CLKA), .EXTFB(GND), .POWERDOWN(POWERDOWN),
.GLA(GLA), .LOCK(LOCK), .GLB(), .YB(), .GLC(), .YC(),
.OADIV0(GND), .OADIV1(GND), .OADIV2(GND), .OADIV3(GND),
.OADIV4(GND), .OAMUX0(GND), .OAMUX1(GND), .OAMUX2(VCC),
.DLYGLA0(GND), .DLYGLA1(GND), .DLYGLA2(GND), .DLYGLA3(GND)
, .DLYGLA4(GND), .OBDIV0(GND), .OBDIV1(GND), .OBDIV2(GND),
.OBDIV3(GND), .OBDIV4(GND), .OBMUX0(GND), .OBMUX1(GND),
.OBMUX2(GND), .DLYYB0(GND), .DLYYB1(GND), .DLYYB2(GND),
.DLYYB3(GND), .DLYYB4(GND), .DLYGLB0(GND), .DLYGLB1(GND),
.DLYGLB2(GND), .DLYGLB3(GND), .DLYGLB4(GND), .OCDIV0(GND),
.OCDIV1(GND), .OCDIV2(GND), .OCDIV3(GND), .OCDIV4(GND),
.OCMUX0(GND), .OCMUX1(GND), .OCMUX2(GND), .DLYYC0(GND),
.DLYYC1(GND), .DLYYC2(GND), .DLYYC3(GND), .DLYYC4(GND),
.DLYGLC0(GND), .DLYGLC1(GND), .DLYGLC2(GND), .DLYGLC3(GND)
, .DLYGLC4(GND), .FINDIV0(VCC), .FINDIV1(GND), .FINDIV2(
VCC), .FINDIV3(GND), .FINDIV4(GND), .FINDIV5(GND),
.FINDIV6(GND), .FBDIV0(VCC), .FBDIV1(GND), .FBDIV2(VCC),
.FBDIV3(GND), .FBDIV4(GND), .FBDIV5(GND), .FBDIV6(GND),
.FBDLY0(GND), .FBDLY1(GND), .FBDLY2(GND), .FBDLY3(GND),
.FBDLY4(GND), .FBSEL0(VCC), .FBSEL1(GND), .XDLYSEL(GND),
.VCOSEL0(GND), .VCOSEL1(GND), .VCOSEL2(GND));
defparam Core.VCOFREQUENCY = 33.000;
endmodule
The "PLL Configuration Bits Description" section on page 90 provides descriptions of the PLL
configuration bits for completeness. The configuration bits are shown as busses only for purposes of
illustration. They will actually be broken up into individual pins in compilation libraries and all simulation
models. For example, the FBSEL[1:0] bus will actually appear as pins FBSEL1 and FBSEL0. The setting
of these select lines for the static PLL configuration is performed by the software and is completely
transparent to the user.
Revision 5 99
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
100 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
When SmartGen is used to define the configuration that will be shifted in via the serial interface,
SmartGen prints out the values of the 81 configuration bits. For ease of use, several configuration bits
are automatically inferred by SmartGen when the dynamic PLL core is generated; however, <71:73>
(STATASEL, STATBSEL, STATCSEL) and <77:79> (DYNASEL, DYNBSEL, DYNCSEL) depend on the
input clock source of the corresponding CCC. Users must first run Layout in Designer to determine the
exact setting for these ports. After Layout is complete, generate the "CCC_Configuration" report by
choosing Tools > Reports > CCC_Configuration in the Designer software. Refer to "PLL Configuration
Bits Description" on page 90 for descriptions of the PLL configuration bits. For simulation purposes, bits
<71:73> and <78:80> are "don't care." Therefore, it is strongly suggested that SmartGen be used to
generate the correct configuration bit settings for the dynamic PLL core.
After setting all the required parameters, users can generate one or more PLL configurations with HDL or
EDIF descriptions by clicking the Generate button. SmartGen gives the option of saving session results
and messages in a log file:
****************
Macro Parameters
****************
Name : dyn_pll_hardio
Family : ProASIC3E
Output Format : VERILOG
Type : Dynamic CCC
Input Freq(MHz) : 30.000
CLKA Source : Hardwired I/O
Feedback Delay Value Index : 1
Feedback Mux Select : 1
XDLY Mux Select : No
Primary Freq(MHz) : 33.000
Primary PhaseShift : 0
Primary Delay Value Index : 1
Primary Mux Select : 4
Secondary1 Freq(MHz) : 40.000
Use GLB : YES
Use YB : NO
GLB Delay Value Index : 1
YB Delay Value Index : 1
Secondary1 PhaseShift : 0
Secondary1 Mux Select : 0
Secondary1 Input Freq(MHz) : 40.000
CLKB Source : Hardwired I/O
Secondary2 Freq(MHz) : 50.000
Use GLC : YES
Use YC : NO
GLC Delay Value Index : 1
YC Delay Value Index : 1
Secondary2 PhaseShift : 0
Secondary2 Mux Select : 0
Secondary2 Input Freq(MHz) : 50.000
CLKC Source : Hardwired I/O
Configuration Bits:
FINDIV[6:0] 0000101
FBDIV[6:0] 0100000
OADIV[4:0] 00100
OBDIV[4:0] 00000
OCDIV[4:0] 00000
OAMUX[2:0] 100
OBMUX[2:0] 000
OCMUX[2:0] 000
FBSEL[1:0] 01
FBDLY[4:0] 00000
XDLYSEL 0
DLYGLA[4:0] 00000
DLYGLB[4:0] 00000
Revision 5 101
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
DLYGLC[4:0] 00000
DLYYB[4:0] 00000
DLYYC[4:0] 00000
VCOSEL[2:0] 100
######################################
# Dynamic Stream Data
######################################
--------------------------------------
|NAME |SDIN |VALUE |TYPE |
--------------------------------------
|FINDIV |[6:0] |0000101 |EDIT |
|FBDIV |[13:7] |0100000 |EDIT |
|OADIV |[18:14] |00100 |EDIT |
|OBDIV |[23:19] |00000 |EDIT |
|OCDIV |[28:24] |00000 |EDIT |
|OAMUX |[31:29] |100 |EDIT |
|OBMUX |[34:32] |000 |EDIT |
|OCMUX |[37:35] |000 |EDIT |
|FBSEL |[39:38] |01 |EDIT |
|FBDLY |[44:40] |00000 |EDIT |
|XDLYSEL |[45] |0 |EDIT |
|DLYGLA |[50:46] |00000 |EDIT |
|DLYGLB |[55:51] |00000 |EDIT |
|DLYGLC |[60:56] |00000 |EDIT |
|DLYYB |[65:61] |00000 |EDIT |
|DLYYC |[70:66] |00000 |EDIT |
|STATASEL|[71] |X |MASKED |
|STATBSEL|[72] |X |MASKED |
|STATCSEL|[73] |X |MASKED |
|VCOSEL |[76:74] |100 |EDIT |
|DYNASEL |[77] |X |MASKED |
|DYNBSEL |[78] |X |MASKED |
|DYNCSEL |[79] |X |MASKED |
|RESETEN |[80] |1 |READONLY |
Below is the resultant Verilog HDL description of a legal dynamic PLL core configuration generated by
SmartGen:
module dyn_pll_macro(POWERDOWN, CLKA, LOCK, GLA, GLB, GLC, SDIN, SCLK, SSHIFT, SUPDATE,
MODE, SDOUT, CLKB, CLKC);
VCC VCC_1_net(.Y(VCC));
GND GND_1_net(.Y(GND));
102 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
endmodule
After setting all the required parameters, users can generate one or more PLL configurations with HDL or
EDIF descriptions by clicking the Generate button. SmartGen gives the option of saving session results
and messages in a log file:
****************
Macro Parameters
****************
Name : delay_macro
Family : ProASIC3
Output Format : Verilog
Type : Delayed Clock
Delay Index : 2
CLKA Source : Hardwired I/O
module delay_macro(GL,CLK);
output GL;
input CLK;
Revision 5 103
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
VCC VCC_1_net(.Y(VCC));
GND GND_1_net(.Y(GND));
CLKDLY Inst1(.CLK(CLK), .GL(GL), .DLYGL0(VCC), .DLYGL1(GND), .DLYGL2(VCC),
.DLYGL3(GND), .DLYGL4(GND));
endmodule
Simulation Verification
The integration of the generated PLL and CLKDLY modules is similar to any VHDL component or Verilog
module instantiation in a larger design; i.e., there is no special requirement that users need to take into
account to successfully synthesize their designs.
For simulation purposes, users need to refer to the VITAL or Verilog library that includes the functional
description and associated timing parameters. Refer to the Software Tools section of the Microsemi SoC
Products Group website to obtain the family simulation libraries. If Designer is installed, these libraries
are stored in the following locations:
<Designer_Installation_Directory>\lib\vtl\95\proasic3.vhd
<Designer_Installation_Directory>\lib\vtl\95\proasic3e.vhd
<Designer_Installation_Directory>\lib\vlog\proasic3.v
<Designer_Installation_Directory>\lib\vlog\proasic3e.v
For Libero users, there is no need to compile the simulation libraries, as they are conveniently pre-
compiled in the ModelSim® Microsemi simulation tool.
104 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
The following is an example of a PLL configuration utilizing the clock frequency synthesis and clock delay
adjustment features. The steps include generating the PLL core with SmartGen, performing simulation
for verification with ModelSim, and performing static timing analysis with SmartTime in Designer.
Parameters of the example PLL configuration:
Input Frequency – 20 MHz
Primary Output Requirement – 20 MHz with clock advancement of 3.02 ns
Secondary 1 Output Requirement – 40 MHz with clock delay of 2.515 ns
Figure 4-29 shows the SmartGen settings. Notice that the overall delays are calculated automatically,
allowing the user to adjust the delay elements appropriately to obtain the desired delays.
After confirming the correct settings, generate a structural netlist of the PLL and verify PLL core settings
by checking the log file:
Name : test_pll_delays
Family : ProASIC3E
Output Format : VHDL
Type : Static PLL
Input Freq(MHz) : 20.000
CLKA Source : Hardwired I/O
Feedback Delay Value Index : 21
Feedback Mux Select : 2
XDLY Mux Select : No
Primary Freq(MHz) : 20.000
Primary PhaseShift : 0
Primary Delay Value Index : 1
Primary Mux Select : 4
Secondary1 Freq(MHz) : 40.000
Use GLB : YES
Use YB : NO
…
…
…
Primary Clock frequency 20.000
Primary Clock Phase Shift 0.000
Revision 5 105
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
Next, perform simulation in ModelSim to verify the correct delays. Figure 4-30 shows the simulation
results. The delay values match those reported in the SmartGen PLL Wizard.
106 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 107
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
global assignments are not allocated properly. See the "Physical Constraints for Quadrant Clocks"
section for information on assigning global signals to the quadrant clock networks.
Promoted global signals will be instantiated with CLKINT macros to drive these signals onto the global
network. This is automatically done by Designer when the Auto-Promotion option is selected. If the user
wishes to assign the signals to the quadrant globals instead of the default chip globals, this can done by
using ChipPlanner, by declaring a physical design constraint (PDC), or by importing a PDC file.
Keep in mind the following when placing quadrant clocks using MultiView Navigator:
Hardwired I/O–Driven CCCs
• Find the associated clock input port under the Ports tab, and place the input port at one of the
Gmn* locations using PinEditor or I/O Attribute Editor, as shown in Figure 4-32.
Figure 4-32 • Port Assignment for a CCC with Hardwired I/O Clock Input
108 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
• Use quadrant global region assignments by finding the clock net associated with the CCC macro
under the Nets tab and creating a quadrant global region for the net, as shown in Figure 4-33.
Cascading CCCs
The CCCs in low power flash devices can be cascaded. Cascading CCCs can help achieve more
accurate PLL output frequency results than those achievable with a single CCC. In addition, this
technique is useful when the user application requires the output clock of the PLL to be a multiple of the
reference clock by an integer greater than the maximum feedback divider value of the PLL (divide by
128) to achieve the desired frequency.
For example, the user application may require a 280 MHz output clock using a 2 MHz input reference
clock, as shown in Figure 4-34 on page 110.
Revision 5 109
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
Figure 4-35 • First-Stage PLL Showing Input of 2 MHz and Output of 256 MHz
A second PLL can be connected serially to achieve the required frequency. EQ 4-1 on page 86 to EQ 4-3
on page 86 are extended as follows:
fGLA2 = fGLA × m2 / (n2 × u2) = fCLKA1 × m1 × m2 / (n1 × u1 × n2 × u2) – Primary PLL Output Clock
EQ 4-6
fGLB2 = fYB2 = fCLKA1 × m1 × m2 / (n1 × n2 × v1 × v2) – Secondary 1 PLL Output Clock(s)
EQ 4-7
fGLC2 = fYC2 = fCLKA1 × m1 × m2 / (n1 × n2 × w1 × w2) – Secondary 2 PLL Output Clock(s)
EQ 4-8
In the example, the final output frequency (foutput) from the primary output of the second PLL will be as
follows (EQ 4-9):
foutput = fGLA2 = fGLA × m2 / (n2 × u2) = 256 MHz × 70 / (64 × 1) = 280 MHz
EQ 4-9
Figure 4-36 on page 111 shows the settings of the second PLL. When configuring the second PLL (or
any subsequent-stage PLLs), specify the input to be Core Logic–Driven. This generates a netlist with the
second PLL routed internally from the core. Do not specify the input to be Hardwired I/O–Driven or
External I/O–Driven, as these options prohibit the connection from the output of the first PLL to the input
of the second PLL.
110 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Figure 4-36 • Second-Stage PLL Showing Input of 256 MHz from First Stage and Final Output of 280 MHz
Figure 4-37 shows the simulation results, where the first PLL’s output period is 3.9 ns (~256 MHz), and
the stage 2 (final) output period is 3.56 ns (~280 MHz).
Revision 5 111
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
VCCPLx
IGLOO/e or 10 nF 100 nF 10 μF
Power
ProASIC3/E
Supply
Device
VCOMPLx
Figure 4-38 • Decoupling Scheme for One PLL (should be replicated for each PLL used)
112 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Conclusion
The advanced CCCs of the IGLOO and ProASIC3 devices are ideal for applications requiring precise
clock management. They integrate easily with the internal low-skew clock networks and provide flexible
frequency synthesis, clock deskewing, and/or time-shifting operations.
Related Documents
Application Notes
Board-Level Considerations
http://www.microsemi.com/soc/documents/ALL_AC276_AN.pdf
Datasheets
Fusion Family of Mixed Signal FPGAs
http://www.microsemi.com/soc/documents/Fusion_DS.pdf
User’s Guides
IGLOO, ProASIC3, SmartFusion, and Fusion Macro Library Guide
http://www.microsemi.com/soc/documents/pa3_libguide_ug.pdf
List of Changes
The following table lists critical changes that were made in each revision of the chapter.
Revision 5 113
Clock Conditioning Circuits in Low Power Flash Devices and Mixed Signal FPGAs
114 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 115
5 – FlashROM in Microsemi’s Low Power Flash
Devices
Introduction
The Fusion, IGLOO, and ProASIC3 families of low power flash-based devices have a dedicated
nonvolatile FlashROM memory of 1,024 bits, which provides a unique feature in the FPGA market. The
FlashROM can be read, modified, and written using the JTAG (or UJTAG) interface. It can be read but
not modified from the FPGA core. Only low power flash devices contain on-chip user nonvolatile memory
(NVM).
6
ADDR (READ)
5
4
3
2
1
0
Revision 5 117
FlashROM in Microsemi’s Low Power Flash Devices
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO devices as listed
in Table 5-1. Where the information applies to only one product line or limited devices, these exclusions
will be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 5-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
118 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Bank 0 Bank 1
CCC
SRAM Block
4,608-Bit Dual-Port SRAM
or FIFO Block
OSC
I/Os
CCC/PLL
VersaTile
Bank 4
Bank 2
SRAM Block
4,608-Bit Dual-Port SRAM
ISP AES User Nonvolatile
Decryption FlashROM
Charge Pumps or FIFO Block
Analog Analog Analog Analog Analog Analog Analog Analog Analog Analog
Quad Quad Quad Quad Quad Quad Quad Quad Quad Quad
CCC
Bank 3
CCC
RAM Block
4,608-Bit Dual-Port SRAM
or FIFO Block
I/Os
VersaTile
RAM Block
4,608-Bit Dual-Port SRAM
or FIFO Block
Nonvolatile Memory Charge Pumps
ISP AES Decryption FlashROM
Revision 5 119
FlashROM in Microsemi’s Low Power Flash Devices
FlashROM Applications
The SmartGen core generator is used to configure FlashROM content. You can configure each page
independently. SmartGen enables you to create and modify regions within a page; these regions can be
1 to 16 bytes long (Figure 5-4).
5
4
3
2
1
0
The FlashROM content can be changed independently of the FPGA core content. It can be easily
accessed and programmed via JTAG, depending on the security settings of the device. The SmartGen
core generator enables each region to be independently updated (described in the "Programming and
Accessing FlashROM" section on page 122). This enables you to change the FlashROM content on a
per-part basis while keeping some regions "constant" for all parts. These features allow the FlashROM to
be used in diverse system applications. Consider the following possible uses of FlashROM:
• Internet protocol (IP) addressing (wireless or fixed)
• System calibration settings
• Restoring configuration after unpredictable system power-down
• Device serialization and/or inventory control
• Subscription-based business models (e.g., set-top boxes)
• Secure key storage
• Asset management tracking
• Date stamping
• Version management
120 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
FlashROM Security
Low power flash devices have an on-chip Advanced Encryption Standard (AES) decryption core,
combined with an enhanced version of the Microsemi flash-based lock technology (FlashLock®).
Together, they provide unmatched levels of security in a programmable logic device. This security
applies to both the FPGA core and FlashROM content. These devices use the 128-bit AES (Rijndael)
algorithm to encrypt programming files for secure transmission to the on-chip AES decryption core. The
same algorithm is then used to decrypt the programming file. This key size provides approximately 3.4 ×
1038 possible 128-bit keys. A computing system that could find a DES key in a second would take
approximately 149 trillion years to crack a 128-bit AES key. The 128-bit FlashLock feature in low power
flash devices works via a FlashLock security Pass Key mechanism, where the user locks or unlocks the
device with a user-defined key. Refer to the "Security in Low Power Flash Devices" section on page 235.
If the device is locked with certain security settings, functions such as device read, write, and erase are
disabled. This unique feature helps to protect against invasive and noninvasive attacks. Without the
correct Pass Key, access to the FPGA is denied. To gain access to the FPGA, the device first must be
unlocked using the correct Pass Key. During programming of the FlashROM or the FPGA core, you can
generate the security header programming file, which is used to program the AES key and/or FlashLock
Pass Key. The security header programming file can also be generated independently of the FlashROM
and FPGA core content. The FlashLock Pass Key is not stored in the FlashROM.
Low power flash devices with AES-based security allow for secure remote field updates over public
networks such as the Internet, and ensure that valuable intellectual property (IP) remains out of the
hands of IP thieves. Figure 5-5 shows this flow diagram.
Programming
Flash Device
Data
FlashROM
FPGA Core
AES AES-128
Encryption Same AES Key Decryption
Core
Untrusted
Medium
Revision 5 121
FlashROM in Microsemi’s Low Power Flash Devices
Figure 5-6 shows the accessing of the FlashROM using the UJTAG macro. This is similar to FPGA core
access, where the 7-bit address defines which of the eight pages (three MSBs) is being read and which
of the 16 bytes within the selected page (four LSBs) are being read. Refer to the "UJTAG Applications in
Microsemi’s Low Power Flash Devices" section on page 297 for details on using the UJTAG macro to
read the FlashROM.
Figure 5-7 on page 123 and Figure 5-8 on page 123 show the FlashROM access from the JTAG port.
The FlashROM content can be read on a random basis. The three-bit address defines which page is
being read or updated.
UJTAG
Address Generation and
Data Serialization
UIREG [7:0] Enable
FlashROM
RESET
TDO
URSTB Addr [6:0]
Control Addr [6:0]
TDI UDRUPD
UDRCK CLK
TMS Data [7:0] Data[7:0]
UDRCAP SDI
TCK UDRSH SDO
UTDI
TRST
UTDO
122 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Page Number
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
111
7
3-Bit Page Address 6
5
ADDR (READ)
4
3 MSB of
3
2
1
0
8-Bit Data
8-Bit Data
to FPGA Core
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
7
6
5
ADDR (READ)
4
3 MSB of
3
2
1
0
Revision 5 123
FlashROM in Microsemi’s Low Power Flash Devices
SmartGen
User
Simulator
Design
Synthesis
User
Netlist
Back-
Annotated
Netlist
Designer
Core Security
Map Header
Options
FlashPoint
Programmer
Programming
Files
124 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 125
FlashROM in Microsemi’s Low Power Flash Devices
SmartGen allows you to generate the FlashROM netlist in VHDL, Verilog, or EDIF format. After the
FlashROM netlist is generated, the core can be instantiated in the main design like other SmartGen
cores. Note that the macro library name for FlashROM is UFROM. The following is a sample FlashROM
VHDL netlist that can be instantiated in the main design:
library ieee;
use ieee.std_logic_1164.all;
library fusion;
entity FROM_a is
port( ADDR : in std_logic_vector(6 downto 0); DOUT : out std_logic_vector(7 downto 0));
end FROM_a;
component UFROM
generic (MEMORYFILE:string);
port(DO0, DO1, DO2, DO3, DO4, DO5, DO6, DO7 : out std_logic;
ADDR0, ADDR1, ADDR2, ADDR3, ADDR4, ADDR5, ADDR6 : in std_logic := 'U') ;
end component;
component GND
port( Y : out std_logic);
end component;
begin
end DEF_ARCH;
SmartGen generates the following files along with the netlist. These are located in the SmartGen folder
for the Libero SoC project.
1. MEM (Memory Initialization) file
2. UFC (User Flash Configuration) file
3. Log file
The MEM file is used for simulation, as explained in the "Simulation of FlashROM Design" section on
page 127. The UFC file, generated by SmartGen, has the FlashROM configuration for single or multiple
devices and is used during STAPL generation. It contains the region properties and simulation values.
Note that any changes in the MEM file will not be reflected in the UFC file. Do not modify the UFC to
change FlashROM content. Instead, use the SmartGen GUI to modify the FlashROM content. See the
"Programming File Generation for FlashROM Design" section on page 127 for a description of how the
UFC file is used during the programming file generation. The log file has information regarding the file
type and file location.
126 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 127
FlashROM in Microsemi’s Low Power Flash Devices
Figure 5-12 shows the programming file generator, which enables different STAPL file generation
methods. When you select Program FlashROM and choose the UFC file, the FlashROM Settings
window appears, as shown in Figure 5-13. In this window, you can select the FlashROM page you want
to program and the data value for the configured regions. This enables you to use a different page for
different programming files.
The programming hardware and software can load the FlashROM with the appropriate STAPL file.
Programming software handles the single STAPL file that contains multiple FlashROM contents for
multiple devices, and programs the FlashROM in sequential order (e.g., for device serialization). This
feature is supported in the programming software. After programming with the STAPL file, you can run
DEVICE_INFO to check the FlashROM content.
128 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
DEVICE_INFO displays the FlashROM content, serial number, Design Name, and checksum, as shown
below:
EXPORT IDCODE[32] = 123261CF
EXPORT SILSIG[32] = 00000000
User information :
CHECKSUM: 61A0
Design Name: TOP
Programming Method: STAPL
Algorithm Version: 1
Programmer: UNKNOWN
=========================================
FlashROM Information :
EXPORT Region_7_0[128] = FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
=========================================
Security Setting :
Encrypted FlashROM Programming Enabled.
Encrypted FPGA Array Programming Enabled.
=========================================
The Libero SoC file manager recognizes the UFC and MEM files and displays them in the appropriate
view. Libero SoC also recognizes the multiple programming files if you choose the option to generate
multiple files for multiple FlashROM contents in Designer. These features enable a user-friendly flow for
the FlashROM generation and programming in Libero SoC.
Revision 5 129
FlashROM in Microsemi’s Low Power Flash Devices
Conclusion
The Fusion, IGLOO, and ProASIC3 families are the only FPGAs that offer on-chip FlashROM support.
This document presents information on the FlashROM architecture, possible applications, programming,
access through the JTAG and UJTAG interface, and integration into your design. In addition, the Libero
tool set enables easy creation and modification of the FlashROM content.
The nonvolatile FlashROM block in the FPGA can be customized, enabling multiple applications.
Additionally, the security offered by the low power flash devices keeps both the contents of FlashROM
and the FPGA design safe from system over-builders, system cloners, and IP thieves.
Related Documents
User’s Guides
FlashPro User’s Guide
http://www.microsemi.com/documents/FlashPro_UG.pdf
List of Changes
The following table lists critical changes that were made in each revision of the chapter.
130 R e vi s i o n 5
6 – SRAM and FIFO Memories in Microsemi's Low
Power Flash Devices
Introduction
As design complexity grows, greater demands are placed upon an FPGA's embedded memory. Fusion,
IGLOO, and ProASIC3 devices provide the flexibility of true dual-port and two-port SRAM blocks. The
embedded memory, along with built-in, dedicated FIFO control logic, can be used to create cascading
RAM blocks and FIFOs without using additional logic gates.
IGLOO, IGLOO PLUS, and ProASIC3L FPGAs contain an additional feature that allows the device to be
put in a low power mode called Flash*Freeze. In this mode, the core draws minimal power (on the order
of 2 to 127 µW) and still retains values on the embedded SRAM/FIFO and registers. Flash*Freeze
technology allows the user to switch to Active mode on demand, thus simplifying power management
and the use of SRAM/FIFOs.
Device Architecture
The low power flash devices feature up to 504 kbits of RAM in 4,608-bit blocks (Figure 6-1 on page 132
and Figure 6-2 on page 133). The total embedded SRAM for each device can be found in the
datasheets. These memory blocks are arranged along the top and bottom of the device to allow better
access from the core and I/O (in some devices, they are only available on the north side of the device).
Every RAM block has a flexible, hardwired, embedded FIFO controller, enabling the user to implement
efficient FIFOs without sacrificing user gates.
In the IGLOO and ProASIC3 families of devices, the following memories are supported:
• 30 k gate devices and smaller do not support SRAM and FIFO.
• 60 k and 125 k gate devices support memories on the north side of the device only.
• 250 k devices and larger support memories on the north and south sides of the device.
In Fusion devices, the following memories are supported:
• AFS090 and AFS250 support memories on the north side of the device only.
• AFS600 and AFS1500 support memories on the north and south sides of the device.
Revision 5 131
SRAM and FIFO Memories in Microsemi's Low Power Flash Devices
Bank 0
CCC
RAM Block
4,608-Bit Dual-Port
SRAM or FIFO Block
Bank 3
Bank 1
I/Os
VersaTile
Bank 3
Bank 1
RAM Block
ISP AES User Nonvolatile Flash*Freeze Charge
4,608-Bit Dual-Port
Decryption 1 FlashRom Technology 2 Pumps SRAM or FIFO Block
Bank 2
Notes:
1. AES decryption not supported in 30 k gate devices and smaller.
2. Flash*Freeze is supported in all IGLOO devices and the ProASIC3L devices.
Figure 6-1 • IGLOO and ProASIC3 Device Architecture Overview
132 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Bank 0 Bank 1
CCC/PLL
RAM Block
4,608-Bit Dual-Port SRAM
or FIFO Block
OSC
I/Os
CCC
VersaTile
Bank 4
Bank 2
RAM Block
4,608-Bit Dual-Port SRAM
ISP AES User Nonvolatile
Charge Pumps or FIFO Block
Decryption FlashROM (FROM)
Analog Analog Analog Analog Analog Analog Analog Analog Analog Analog
Quad Quad Quad Quad Quad Quad Quad Quad Quad Quad
Bank 3
Revision 5 133
SRAM and FIFO Memories in Microsemi's Low Power Flash Devices
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO devices as listed
in Table 6-1. Where the information applies to only one product line or limited devices, these exclusions
will be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 6-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
134 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 135
SRAM and FIFO Memories in Microsemi's Low Power Flash Devices
WD0
DINB0 WD0
WW1
WIDTHB1 WW0 WEN
WIDTHB0 WBLK
PIPEB WCLK
WMODEB
BLKB RPIPE
WENB WEN
CLKB WCLK
RESET RESET RESET
Notes:
1. Automotive ProASIC3 devices restrict RAM4K9 to a single port or to dual ports with the same clock 180° out of
phase (inverted) between clock pins. In single-port mode, inputs to port B should be tied to ground to prevent
errors during compile. This warning applies only to automotive ProASIC3 parts of certain revisions and earlier.
Contact Technical Support at [email protected] for information on the revision number for a particular lot
and date code.
2. For FIFO4K18, the same clock 180° out of phase (inverted) between clock pins should be used.
Figure 6-3 • Supported Basic RAM Macros
136 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
SRAM Features
RAM4K9 Macro
RAM4K9 is the dual-port configuration of the RAM block (Figure 6-4). The RAM4K9 nomenclature refers
to both the deepest possible configuration and the widest possible configuration the dual-port RAM block
can assume, and does not denote a possible memory aspect ratio. The RAM block can be configured to
the following aspect ratios: 4,096×1, 2,048×2, 1,024×4, and 512×9. RAM4K9 is fully synchronous and
has the following features:
• Two ports that allow fully independent reads and writes at different frequencies
• Selectable pipelined or nonpipelined read
• Active-low block enables for each port
• Toggle control between read and write mode for each port
• Active-low asynchronous reset
• Pass-through write data or hold existing data on output. In pass-through mode, the data written to
the write port will immediately appear on the read port.
• Designer software will automatically facilitate falling-edge clocks by bubble-pushing the inversion
to previous stages.
Reset
Note: For timing diagrams of the RAM signals, refer to the appropriate family datasheet.
Figure 6-4 • RAM4K9 Simplified Configuration
Revision 5 137
SRAM and FIFO Memories in Microsemi's Low Power Flash Devices
138 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Note: When using the SRAM in single-port mode for Automotive ProASIC3 devices, ADDRB
should be tied to ground.
Table 6-3 • Address Pins Unused/Used for Various Supported Bus Widths
ADDRx
D×W Unused Used
4k×1 None [11:0]
2k×2 [11] [10:0]
1k×4 [11:10] [9:0]
512×9 [11:9] [8:0]
Note: The "x" in ADDRx implies A or B.
RAM512X18 Macro
RAM512X18 is the two-port configuration of the same RAM block (Figure 6-5 on page 140). Like the
RAM4K9 nomenclature, the RAM512X18 nomenclature refers to both the deepest possible configuration
and the widest possible configuration the two-port RAM block can assume. In two-port mode, the RAM
block can be configured to either the 512×9 aspect ratio or the 256×18 aspect ratio. RAM512X18 is also
fully synchronous and has the following features:
• Dedicated read and write ports
• Active-low read and write enables
• Selectable pipelined or nonpipelined read
• Active-low asynchronous reset
• Designer software will automatically facilitate falling-edge clocks by bubble-pushing the inversion
to previous stages.
Revision 5 139
SRAM and FIFO Memories in Microsemi's Low Power Flash Devices
Reset
Note: For timing diagrams of the RAM signals, refer to the appropriate family datasheet.
Figure 6-5 • 512X18 Two-Port RAM Block Diagram
WD and RD
These are the input and output data signals, and they are 18 bits wide. When a 512×9 aspect ratio is
used for write, WD[17:9] are unused and must be grounded. If this aspect ratio is used for read, RD[17:9]
are undefined.
WADDR and RADDR
These are read and write addresses, and they are nine bits wide. When the 256×18 aspect ratio is used
for write or read, WADDR[8] and RADDR[8] are unused and must be grounded.
WCLK and RCLK
These signals are the write and read clocks, respectively. They can be clocked on the rising or falling
edge of WCLK and RCLK.
WEN and REN
These signals are the write and read enables, respectively. They are both active-low by default. These
signals can be configured as active-high.
RESET
This active-low signal resets the control logic, forces the output hold state registers to zero, disables
reads and writes from the SRAM block, and clears the data hold registers when asserted. It does not
reset the contents of the memory array.
While the RESET signal is active, read and write operations are disabled. As with any asynchronous
reset signal, care must be taken not to assert it too close to the edges of active read and write clocks.
PIPE
This signal is used to specify pipelined read on the output. A LOW on PIPE indicates a nonpipelined
read, and the data appears on the output in the same clock cycle. A HIGH indicates a pipelined read, and
data appears on the output in the next clock cycle.
140 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
SRAM Usage
The following descriptions refer to the usage of both RAM4K9 and RAM512X18.
Clocking
The dual-port SRAM blocks are only clocked on the rising edge. SmartGen allows falling-edge-triggered
clocks by adding inverters to the netlist, hence achieving dual-port SRAM blocks that are clocked on
either edge (rising or falling). For dual-port SRAM, each port can be clocked on either edge and by
separate clocks by port. Note that for Automotive ProASIC3, the same clock, with an inversion between
the two clock pins of the macro, should be used in design to prevent errors during compile.
Low power flash devices support inversion (bubble-pushing) throughout the FPGA architecture, including
the clock input to the SRAM modules. Inversions added to the SRAM clock pin on the design schematic
or in the HDL code will be automatically accounted for during design compile without incurring additional
delay in the clock path.
The two-port SRAM can be clocked on the rising or falling edge of WCLK and RCLK.
If negative-edge RAM and FIFO clocking is selected for memory macros, clock edge inversion
management (bubble-pushing) is automatically used within the development tools, without performance
penalty.
Modes of Operation
There are two read modes and one write mode:
• Read Nonpipelined (synchronous—1 clock edge): In the standard read mode, new data is driven
onto the RD bus in the same clock cycle following RA and REN valid. The read address is
registered on the read port clock active edge, and data appears at RD after the RAM access time.
Setting PIPE to OFF enables this mode.
• Read Pipelined (synchronous—2 clock edges): The pipelined mode incurs an additional clock
delay from address to data but enables operation at a much higher frequency. The read address
is registered on the read port active clock edge, and the read data is registered and appears at
RD after the second read clock edge. Setting PIPE to ON enables this mode.
• Write (synchronous—1 clock edge): On the write clock active edge, the write data is written into
the SRAM at the write address when WEN is HIGH. The setup times of the write address, write
enables, and write data are minimal with respect to the write clock.
RAM Initialization
Each SRAM block can be individually initialized on power-up by means of the JTAG port using the UJTAG
mechanism. The shift register for a target block can be selected and loaded with the proper bit
configuration to enable serial loading. The 4,608 bits of data can be loaded in a single operation.
FIFO Features
The FIFO4KX18 macro is created by merging the RAM block with dedicated FIFO logic (Figure 6-6 on
page 142). Since the FIFO logic can only be used in conjunction with the memory block, there is no
separate FIFO controller macro. As with the RAM blocks, the FIFO4KX18 nomenclature does not refer to
a possible aspect ratio, but rather to the deepest possible data depth and the widest possible data width.
FIFO4KX18 can be configured into the following aspect ratios: 4,096×1, 2,048×2, 1,024×4, 512×9, and
256×18. In addition to being fully synchronous, the FIFO4KX18 also has the following features:
• Four FIFO flags: Empty, Full, Almost-Empty, and Almost-Full
• Empty flag is synchronized to the read clock
• Full flag is synchronized to the write clock
• Both Almost-Empty and Almost-Full flags have programmable thresholds
• Active-low asynchronous reset
• Active-low block enable
• Active-low write enable
• Active-high read enable
• Ability to configure the FIFO to either stop counting after the empty or full states are reached or to
allow the FIFO counters to continue
Revision 5 141
SRAM and FIFO Memories in Microsemi's Low Power Flash Devices
• Designer software will automatically facilitate falling-edge clocks by bubble-pushing the inversion
to previous stages.
Reset
RD[17:0] RD
WD WD[17:0]
RCLK RCLK
WCLK WCLK
RAM
RADD[J:0]
WADD[J:0]
WW[2:0]
REN
RW[2:0]
RPIPE
FREN WEN
FWEN
RBLK CNT 12
REN E
= FULL
ESTOP AFVAL
AFULL
AEMPTY
AEVAL
WBLK CNT 12 SUB 12
WEN E
= EMPTY
FSTOP
Reset
The FIFOs maintain a separate read and write address. Whenever the difference between the write
address and the read address is greater than or equal to the almost-full value (AFVAL), the Almost-Full
flag is asserted. Similarly, the Almost-Empty flag is asserted whenever the difference between the write
address and read address is less than or equal to the almost-empty value (AEVAL).
Due to synchronization between the read and write clocks, the Empty flag will deassert after the second
read clock edge from the point that the write enable asserts. However, since the Empty flag is
synchronized to the read clock, it will assert after the read clock reads the last data in the FIFO. Also,
since the Full flag is dependent on the actual hardware configuration, it will assert when the actual
physical implementation of the FIFO is full.
For example, when a user configures a 128×18 FIFO, the actual physical implementation will be a
256×18 FIFO element. Since the actual implementation is 256×18, the Full flag will not trigger until the
142 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
256×18 FIFO is full, even though a 128×18 FIFO was requested. For this example, the Almost-Full flag
can be used instead of the Full flag to signal when the 128th data word is reached.
To accommodate different aspect ratios, the almost-full and almost-empty values are expressed in terms
of data bits instead of data words. SmartGen translates the user’s input, expressed in data words, into
data bits internally. SmartGen allows the user to select the thresholds for the Almost-Empty and Almost-
Full flags in terms of either the read data words or the write data words, and makes the appropriate
conversions for each flag.
After the empty or full states are reached, the FIFO can be configured so the FIFO counters either stop or
continue counting. For timing numbers, refer to the appropriate family datasheet.
Revision 5 143
SRAM and FIFO Memories in Microsemi's Low Power Flash Devices
RD
This is the output data bus and is 18 bits wide. Not all 18 bits are valid in all configurations. Like the WD
bus, high-order bits become unusable if the data width is less than 18. The output data on unused pins is
undefined (Table 6-7).
Table 6-7 • Input Data Signal Usage for Different Aspect Ratios
D×W WD/RD Unused
4k×1 WD[17:1], RD[17:1]
2k×2 WD[17:2], RD[17:2]
1k×4 WD[17:4], RD[17:4]
512×9 WD[17:9], RD[17:9]
256×18 –
ESTOP, FSTOP
ESTOP is used to stop the FIFO read counter from further counting once the FIFO is empty (i.e., the
EMPTY flag goes HIGH). A HIGH on this signal inhibits the counting.
FSTOP is used to stop the FIFO write counter from further counting once the FIFO is full (i.e., the FULL
flag goes HIGH). A HIGH on this signal inhibits the counting.
For more information on these signals, refer to the "ESTOP and FSTOP Usage" section.
FULL, EMPTY
When the FIFO is full and no more data can be written, the FULL flag asserts HIGH. The FULL flag is
synchronous to WCLK to inhibit writing immediately upon detection of a full condition and to prevent
overflows. Since the write address is compared to a resynchronized (and thus time-delayed) version of
the read address, the FULL flag will remain asserted until two WCLK active edges after a read operation
eliminates the full condition.
When the FIFO is empty and no more data can be read, the EMPTY flag asserts HIGH. The EMPTY flag
is synchronous to RCLK to inhibit reading immediately upon detection of an empty condition and to
prevent underflows. Since the read address is compared to a resynchronized (and thus time-delayed)
version of the write address, the EMPTY flag will remain asserted until two RCLK active edges after a
write operation removes the empty condition.
For more information on these signals, refer to the "FIFO Flag Usage Considerations" section on
page 145.
AFULL, AEMPTY
These are programmable flags and will be asserted on the threshold specified by AFVAL and AEVAL,
respectively.
When the number of words stored in the FIFO reaches the amount specified by AEVAL while reading,
the AEMPTY output will go HIGH. Likewise, when the number of words stored in the FIFO reaches the
amount specified by AFVAL while writing, the AFULL output will go HIGH.
AFVAL, AEVAL
The AEVAL and AFVAL pins are used to specify the almost-empty and almost-full threshold values. They
are 12-bit signals. For more information on these signals, refer to the "FIFO Flag Usage Considerations"
section on page 145.
FIFO Usage
ESTOP and FSTOP Usage
The ESTOP pin is used to stop the read counter from counting any further once the FIFO is empty (i.e.,
the EMPTY flag goes HIGH). Likewise, the FSTOP pin is used to stop the write counter from counting
any further once the FIFO is full (i.e., the FULL flag goes HIGH).
The FIFO counters in the device start the count at zero, reach the maximum depth for the configuration
(e.g., 511 for a 512×9 configuration), and then restart at zero. An example application for ESTOP, where
the read counter keeps counting, would be writing to the FIFO once and reading the same content over
and over without doing another write.
144 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 145
SRAM and FIFO Memories in Microsemi's Low Power Flash Devices
Table 6-8 and Table 6-9 show the maximum potential width and depth configuration for each device. Note
that 15 k and 30 k gate devices do not support RAM or FIFO.
146 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Cascaded Wide Cascaded Wide Cascaded Wide Cascaded 2 Deep Cascaded 4 Deep
and 16 Wide and 16 Wide
18 Number Block 1 2 2 4 8 18 32
Configuration 256 × 8 2 × (512 × 9) 2 × (512 × 9) 4 × (512 × 9) 8 × (512 × 9) 16 × (512 × 9) 16 × (512 × 9)
Cascaded Wide Cascaded Wide Cascaded 2 Deep Cascaded 4 Deep Cascaded 8 Deep Cascaded 16
and 2 Wide and 2 Wide and 2 Wide Deep and 2 Wide
32 Number Block 2 4 4 8 16 32 64
Configuration 2 × (256 × 18) 4 × (512 × 9) 4 × (512 × 9) 8 × (1,024 × 4) 16 × (2,048 × 2) 32 × (4,096 × 1) 64 × (4,096 × 1)
Cascaded Wide Cascaded Wide Cascaded Wide Cascaded Wide Cascaded Wide Cascaded Wide Cascaded 2 Deep
and 32 Wide
36 Number Block 2 4 4 8 16 32
Configuration 2 × (256 × 18) 4 × (512 × 9) 4 × (512 × 9) 4 × (512 × 9) 16 × (512 × 9) 16 × (512 × 9)
Cascaded Wide Cascaded Wide Cascaded Wide Cascaded 2 Deep Cascaded 4 Deep Cascaded 8 Deep
and 4 Wide and 4 Wide and 4 Wide
64 Number Block 4 8 8 16 32 64
Configuration 4 × (256 × 18) 8 × (512 × 9) 8 × (512 × 9) 16 × (1,024 × 4) 32 × (2,048 × 2) 64 × (4,096 × 1)
Cascaded Wide Cascaded Wide Cascaded Wide Cascaded Wide Cascaded Wide Cascaded Wide
72 Number Block 4 8 8 16 32
Configuration 4 × (256 × 18) 8 × (512 × 9) 8 × (512 × 9) 16 × (512 × 9) 16 × (512 × 9)
Cascaded Wide Cascaded Wide Cascaded Wide Cascaded Wide Cascaded 4 Deep
and 8 Wide
Note: Memory configurations represented by grayed cells are not supported.
R e visi on 5 147
SRAM and FIFO Memories in Microsemi's Low Power Flash Devices
RAM1
WD
WADDR
WCLK
UJTAG User Interface
WEN
TRST UIREG[7:0] IR[7:0]
WDATA RAM2
TRST URSTB Reset
TDO WADDR WD
TDO UDRUPD DR_UPDATE
WCLK WADDR
TDI TDI UDRSH DR_SHIFT
WEN1 WCLK
TMS UDRCAP DR_CAPTURE
UDRCK DR_CLK WEN2 WEN
TMS TCK
UTDI DIN WEN3
TCK RAM3
UTDO DOUT
WD
WADDR
WCLK
WEN
148 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
recommended, since it reduces the complexity of the user interface block and the board-level JTAG
driver.
Moreover, using an internal counter for address generation speeds up the initialization procedure, since
the user only needs to import the data through the JTAG port.
The designer may use different methods to select among the multiple RAM blocks. Using counters along
with demultiplexers is one approach to set the write enable signals. Basically, the number of RAM blocks
needing initialization determines the most efficient approach. For example, if all the blocks are initialized
with the same data, one enable signal is enough to activate the write procedure for all of them at the
same time. Another alternative is to use different opcodes to initialize each memory block. For a small
number of RAM blocks, using counters is an optimal choice. For example, a ring counter can be used to
select from multiple RAM blocks. The clock driver of this counter needs to be controlled by the address
generation process.
Once the addressing of one block is finished, a clock pulse is sent to the (ring) counter to select the next
memory block.
Figure 6-9 illustrates a simple block diagram of an interface block between UJTAG and RAM blocks.
UDRUPDI WCLK
UIREG
In Compare Result
with
Defined Opcode
Chip Select WEN1
URSTB En Ring WEN2
Reset Counter
CLK WENi
m
Addr Counter m WADDR
En Q
Binary
Reset
CLK Counter
Revision 5 149
SRAM and FIFO Memories in Microsemi's Low Power Flash Devices
150 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
The ROM emulation application is based on RAM block initialization. If the user's main design has
access only to the read ports of the RAM block (RADDR, RD, RCLK, and REN), and the contents of the
RAM are already initialized through the TAP, then the memory blocks will emulate ROM functionality for
the core design. In this case, the write ports of the RAM blocks are accessed only by the user interface
block, and the interface is activated only by the TAP Instruction Register contents.
Users should note that the contents of the RAM blocks are lost in the absence of applied power.
However, the 1 kbit of flash memory, FlashROM, in low power flash devices can be used to retain data
after power is removed from the device. Refer to the "SRAM and FIFO Memories in Microsemi's Low
Power Flash Devices" section on page 131 for more information.
reg clk_out;
Revision 5 151
SRAM and FIFO Memories in Microsemi's Low Power Flash Devices
//
addr_counter counter_1 (.Clock(data_update), .Q(wr_addr), .Aset(rst_n),
.Enable(enable));
addr_counter counter_2 (.Clock(test_clk), .Q(rd_addr), .Aset(rst_n),
.Enable( test_active));
endmodule
endmodule
Address Counter
module addr_counter (Clock, Q, Aset, Enable);
input Clock;
output [1:0] Q;
input Aset;
input Enable;
assign Q = Qaux;
endmodule
152 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Pipeline Register
module D_pipeline (Data, Clock, Q);
reg [3:0] Q;
endmodule
VCC VCC_1_net(.Y(VCC));
GND GND_1_net(.Y(GND));
INV WEBUBBLEB(.A(WRB), .Y(WEBP));
RAM4K9 RAMBLOCK0(.ADDRA11(GND), .ADDRA10(GND), .ADDRA9(GND), .ADDRA8(GND),
.ADDRA7(GND), .ADDRA6(GND), .ADDRA5(GND), .ADDRA4(GND), .ADDRA3(GND), .ADDRA2(GND),
.ADDRA1(RADDR[1]), .ADDRA0(RADDR[0]), .ADDRB11(GND), .ADDRB10(GND), .ADDRB9(GND),
.ADDRB8(GND), .ADDRB7(GND), .ADDRB6(GND), .ADDRB5(GND), .ADDRB4(GND), .ADDRB3(GND),
.ADDRB2(GND), .ADDRB1(WADDR[1]), .ADDRB0(WADDR[0]), .DINA8(GND), .DINA7(GND),
.DINA6(GND), .DINA5(GND), .DINA4(GND), .DINA3(GND), .DINA2(GND), .DINA1(GND),
.DINA0(GND), .DINB8(GND), .DINB7(GND), .DINB6(GND), .DINB5(GND), .DINB4(GND),
.DINB3(DI[3]), .DINB2(DI[2]), .DINB1(DI[1]), .DINB0(DI[0]), .WIDTHA0(GND),
.WIDTHA1(VCC), .WIDTHB0(GND), .WIDTHB1(VCC), .PIPEA(GND), .PIPEB(GND),
.WMODEA(GND), .WMODEB(GND), .BLKA(WEAP), .BLKB(WEBP), .WENA(VCC), .WENB(GND),
.CLKA(RCLOCK), .CLKB(WCLOCK), .RESET(VCC), .DOUTA8(), .DOUTA7(), .DOUTA6(),
.DOUTA5(), .DOUTA4(), .DOUTA3(DO[3]), .DOUTA2(DO[2]), .DOUTA1(DO[1]),
.DOUTA0(DO[0]), .DOUTB8(), .DOUTB7(), .DOUTB6(), .DOUTB5(), .DOUTB4(), .DOUTB3(),
.DOUTB2(), .DOUTB1(), .DOUTB0());
INV WEBUBBLEA(.A(RDB), .Y(WEAP));
endmodule
Revision 5 153
SRAM and FIFO Memories in Microsemi's Low Power Flash Devices
Software Support
The SmartGen core generator is the easiest way to select and configure the memory blocks
(Figure 6-12). SmartGen automatically selects the proper memory block type and aspect ratio, and
cascades the memory blocks based on the user's selection. SmartGen also configures any additional
signals that may require tie-off.
SmartGen will attempt to use the minimum number of blocks required to implement the desired memory.
When cascading, SmartGen will configure the memory for width before configuring for depth. For
example, if the user requests a 256×8 FIFO, SmartGen will use a 512×9 FIFO configuration, not 256×18.
154 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
SmartGen enables the user to configure the desired RAM element to use either a single clock for read
and write, or two independent clocks for read and write. The user can select the type of RAM as well as
the width/depth and several other parameters (Figure 6-13).
SmartGen also has a Port Mapping option that allows the user to specify the names of the ports
generated in the memory block (Figure 6-14).
SmartGen also configures the FIFO according to user specifications. Users can select no flags, static
flags, or dynamic flags. Static flag settings are configured using configuration flash and cannot be altered
Revision 5 155
SRAM and FIFO Memories in Microsemi's Low Power Flash Devices
without reprogramming the device. Dynamic flag settings are determined by register values and can be
altered without reprogramming the device by reloading the register values either from the design or
through the UJTAG interface described in the "Initializing the RAM/FIFO" section on page 148.
SmartGen can also configure the FIFO to continue counting after the FIFO is full. In this configuration,
the FIFO write counter will wrap after the counter is full and continue to write data. With the FIFO
configured to continue to read after the FIFO is empty, the read counter will also wrap and re-read data
that was previously read. This mode can be used to continually read back repeating data patterns stored
in the FIFO (Figure 6-15).
FIFOs configured using SmartGen can also make use of the port mapping feature to configure the
names of the ports.
Limitations
Users should be aware of the following limitations when configuring SRAM blocks for low power flash
devices:
• SmartGen does not track the target device in a family, so it cannot determine if a configured
memory block will fit in the target device.
• Dual-port RAMs with different read and write aspect ratios are not supported.
• Cascaded memory blocks can only use a maximum of 64 blocks of RAM.
• The Full flag of the FIFO is sensitive to the maximum depth of the actual physical FIFO block, not
the depth requested in the SmartGen interface.
156 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Conclusion
Fusion, IGLOO, and ProASIC3 devices provide users with extremely flexible SRAM blocks for most
design needs, with the ability to choose between an easy-to-use dual-port memory or a wide-word two-
port memory. Used with the built-in FIFO controllers, these memory blocks also serve as highly efficient
FIFOs that do not consume user gates when implemented. The SmartGen core generator provides a fast
and easy way to configure these memory elements for use in designs.
List of Changes
The following table lists critical changes that were made in each revision of the chapter.
Revision 5 157
SRAM and FIFO Memories in Microsemi's Low Power Flash Devices
158 R e vi s i o n 5
7 – I/O Structures in nano Devices
Introduction
Low power flash devices feature a flexible I/O structure, supporting a range of mixed voltages (1.2 V,
1.5 V, 1.8 V, 2.5 V, and 3.3 V) through bank-selectable voltages. IGLOO® and ProASIC3 nano devices
support standard I/Os with the addition of Schmitt trigger and hot-swap capability.
Users designing I/O solutions are faced with a number of implementation decisions and configuration
choices that can directly impact the efficiency and effectiveness of their final design. The flexible I/O
structure, supporting a wide variety of voltages and I/O standards, enables users to meet the growing
challenges of their many diverse applications. The Microsemi Libero® System-on-Chip (SoC) software
provides an easy way to implement I/O that will result in robust I/O design.
This document describes Standard I/O types used for the nano devices in terms of he supported
standards. It then explains the individual features and how to implement them in Libero SoC.
Scan
Y
I/O / Q0 1
Input
Register
PAD
CLR
I/O / CLK Scan
Signal Drive Strength
and Slew Rate Control
I/O / D0
2 Pull-Up/-Down
Output Resistor Control
Register
Scan
CLR
I/O / OE 3
Output
Register
CLR
I/O / CLR
Figure 7-1 • I/O Block Logical Representation for Single-Tile Designs (10 k, 15 k, and 20 k devices)
Revision 5 159
I/O Structures in nano Devices
I/O / Q0 1 2
Input Input
Register Register
To FPGA Core Y
CLR/PRE
I/O / Q1 3
Input PAD
Scan
ICE Register
Pull-Up/-Down
Resistor Control
A E = Enable Pin
Scan
I/O / D0 4
Output
OCE Register
I/O / D1 / ICE 5
ICE Output
Register
I/O / OE 6
Output
OCE Enable
Register
Figure 7-2 • I/O Block Logical Representation for Dual-Tile Designs (60 k,125 k, and 250 k Devices)
160 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO devices as listed
in Table 7-1. Where the information applies to only one product line or limited devices, these exclusions
will be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 7-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
Revision 5 161
I/O Structures in nano Devices
162 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 163
I/O Structures in nano Devices
I/O Architecture
I/O Tile
IGLOO and ProASIC3 nano devices utilize either a single-tile or dual-tile I/O architecture (Figure 7-1 on
page 159 and Figure 7-2 on page 160). The 10 k, 15 k, and 20 k devices utilize the single-tile design and
the 60 k, 125 k and 250 k devices utilize the dual-tile design. In both cases, the I/O tile provides a
flexible, programmable structure for implementing a large number of I/O standards. In addition, the
registers available in the I/O tile can be used to support high-performance register inputs and outputs,
with register enable if desired. For single-tile designs, all I/O registers share both the CLR and CLK ports,
while for the dual-tile designs, the output register and output enable register share one CLK port. For the
dual-tile designs, the registers can also be used to support the JESD-79C Double Data Rate (DDR)
standard within the I/O structure (see the "DDR for Microsemi’s Low Power Flash Devices" section on
page 205 for more information).
I/O Registers
Each I/O module contains several input and output registers. Refer to Figure 7-3 on page 165 for a
simplified representation of the I/O block. The number of input registers is selected by a set of switches
(not shown in Figure 7-2 on page 160) between registers to implement single-ended data transmission to
and from the FPGA core. The Designer software sets these switches for the user. For single-tile designs,
a common CLR/PRE signal is employed by all I/O registers when I/O register combining is used. The I/O
register combining requires that no combinatorial logic be present between the register and the I/O.
164 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Weak
Pull-Up
Control
(from
OE
core)
(from core logic)
ESD Protection1
Drive
Output Buffer Strength
I/O PAD
Logic and
Output
Slew Rate
Control
Clamp Diode
ESD Protection1
Notes:
1. All NMOS transistors connected to the I/O pad serve as ESD protection.
2. See Table 7-2 on page 162 for available I/O standards.
3. 5 V tolerance requires external resistor.
Figure 7-3 • Simplified I/O Buffer Circuitry
Revision 5 165
I/O Structures in nano Devices
I/O Standards
Single-Ended Standards
These I/O standards use a push-pull CMOS output stage with a voltage referenced to system ground to
designate logical states. The input buffer configuration, output drive, and I/O supply voltage (VCCI) vary
among the I/O standards (Figure 7-4).
VCCI VCCI
OUT IN
Device 1 Device 2
GND GND
166 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
I/O Features
Both IGLOO nano and ProASIC3 nano devices support multiple I/O features that make board design
easier. For example, an I/O feature like Schmitt Trigger in the input buffer saves the board space that
would be used by an external Schmitt trigger for a slow or noisy input signal. These features are also
programmable for each I/O, which in turn gives flexibility in interfacing with other components. The
following is a detailed description of all available features in nano devices.
Table 7-7 • Programmable I/O Features (user control via I/O Attribute Editor)
Feature Description Range
Slew Control Output slew rate HIGH, LOW
Output Drive (mA) Output drive strength Depends on I/O type
Resistor Pull Weak resistor pull circuit Up, Down, None
Schmitt Trigger Schmitt trigger for input only ON, OFF
Hot-Swap Support
All nano devices are hot-swappable.
The hot-swap feature appears as a read-only check box in the I/O Attribute Editor that shows whether an
I/O is hot-swappable or not. Refer to the "Power-Up/-Down Behavior of Low Power Flash Devices"
section on page 307 for details on hot-swapping.
Hot-swapping is the operation of hot insertion or hot removal of a card in a powered-up system. The
levels of hot-swap support and examples of related applications are described in Table 7-8 on page 168
to Table 7-11 on page 169. The I/Os also need to be configured in hot-insertion mode if hot-plugging
compliance is required. nano devices have an I/O structure that allows the support of Level 3 and Level 4
hot-swap with only two levels of staging.
Revision 5 167
I/O Structures in nano Devices
168 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
For Level 3 and Level 4 compliance with the nano devices, cards with two levels of staging should have
the following sequence:
• Grounds
• Powers, I/Os, and other pins
Revision 5 169
I/O Structures in nano Devices
Cold-Sparing Support
Cold-sparing refers to the ability of a device to leave system data undisturbed when the system is
powered up, while the component itself is powered down, or when power supplies are floating.
Cold-sparing is supported on all IGLOO nano and ProASIC3 nano devices only when the user provides
resistors from each power supply to ground. The resistor value is calculated based on the decoupling
capacitance on a given power supply. The RC constant should be greater than 3 µs.
To remove resistor current during operation, it is suggested that the resistor be disconnected (e.g., with
an NMOS switch) from the power supply after the supply has reached its final value. Refer to the "Power-
Up/-Down Behavior of Low Power Flash Devices" section on page 307 for details on cold-sparing.
Cold-sparing means that a subsystem with no power applied (usually a circuit board) is electrically
connected to the system that is in operation. This means that all input buffers of the subsystem must
present very high input impedance with no power applied so as not to disturb the operating portion of the
system.
When targeting low power applications, I/O cold-sparing may add additional current if a pin is configured
with either a pull-up or pull-down resistor and driven in the opposite direction. A small static current is
induced on each I/O pin when the pin is driven to a voltage opposite to the weak pull resistor. The current
is equal to the voltage drop across the input pin divided by the pull resistor. Refer to the "Detailed I/O DC
Characteristics" section of the appropriate family datasheet for the specific pull resistor value for the
corresponding I/O standard.
For example, assuming an LVTTL 3.3 V input pin is configured with a weak pull-up resistor, a current will
flow through the pull-up resistor if the input pin is driven LOW. For LVTTL 3.3 V, the pull-up resistor is
~45 kΩ, and the resulting current is equal to 3.3 V / 45 kΩ = 73 µA when the I/O pin is driven LOW. This
is true also when a weak pull-down is chosen and the input pin is driven HIGH. This current can be
avoided by driving the input Low when a weak pull-down resistor is used and driving it HIGH when a
weak pull-up resistor is used.
This current draw can occur in the following cases:
• In Active and Static modes:
– Input buffers with pull-up, driven Low
– Input buffers with pull-down, driven High
– Bidirectional buffers with pull-up, driven Low
– Bidirectional buffers with pull-down, driven High
– Output buffers with pull-up, driven Low
– Output buffers with pull-down, driven High
– Tristate buffers with pull-up, driven Low
– Tristate buffers with pull-down, driven High
• In Flash*Freeze mode (not supported on ProASIC3 nano devices):
– Input buffers with pull-up, driven Low
– Input buffers with pull-down, driven High
– Bidirectional buffers with pull-up, driven Low
– Bidirectional buffers with pull-down, driven High
170 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Table 7-12 • I/O Hot-Swap and 5 V Input Tolerance Capabilities in nano Devices
5 V Input Output
I/O Assignment Clamp Diode Hot Insertion Tolerance Input Buffer Buffer
3.3 V LVTTL/LVCMOS No Yes Yes* Enabled/Disabled
LVCMOS 2.5 V No Yes No Enabled/Disabled
LVCMOS 1.8 V No Yes No Enabled/Disabled
LVCMOS 1.5 V No Yes No Enabled/Disabled
LVCMOS 1.2 V No Yes No Enabled/Disabled
* Can be implemented with an external IDT bus switch, resistor divider, or Zener with resistor.
5 V Input Tolerance
I/Os can support 5 V input tolerance when LVTTL 3.3 V or LVCMOS 3.3 V configurations are used (see
Table 7-12). There are three recommended solutions for achieving 5 V receiver tolerance (see Figure 7-5
on page 172 to Figure 7-7 on page 173 for details of board and macro setups). All the solutions meet a
common requirement of limiting the voltage at the input to 3.6 V or less. In fact, the I/O absolute
maximum voltage rating is 3.6 V, and any voltage above 3.6 V may cause long-term gate oxide failures.
Solution 1
The board-level design must ensure that the reflected waveform at the pad does not exceed the limits
provided in the recommended operating conditions in the datasheet. This is a requirement to ensure
long-term reliability.
This solution requires two board resistors, as demonstrated in Figure 7-5 on page 172. Here are some
examples of possible resistor values (based on a simplified simulation model with no line effects and
10 Ω transmitter output resistance, where Rtx_out_high = (VCCI – VOH) / IOH and
Rtx_out_low = VOL / IOL).
Example 1 (high speed, high current):
Rtx_out_high = Rtx_out_low = 10 Ω
R1 = 36 Ω (±5%), P(r1)min = 0.069 Ω
R2 = 82 Ω (±5%), P(r2)min = 0.158 Ω
Imax_tx = 5.5 V / (82 × 0.95 + 36 × 0.95 + 10) = 45.04 mA
tRISE = tFALL = 0.85 ns at C_pad_load = 10 pF (includes up to 25% safety margin)
tRISE = tFALL = 4 ns at C_pad_load = 50 pF (includes up to 25% safety margin)
Revision 5 171
I/O Structures in nano Devices
Solution 1
I/O Input
5.5 V 3.3 V
Rext1
Rext2
172 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Solution 2
This solution requires one board resistor and one Zener 3.3 V diode, as demonstrated in Figure 7-6.
Solution 2
I/O Input
5.5 V 3.3 V
Rext1
Zener
3.3 V
Solution 3
This solution requires a bus switch on the board, as demonstrated in Figure 7-7.
Solution 3
I/O Input
3.3 V
Bus
Switch
IDTQS32X23
5.5 V
5.5 V
Revision 5 173
I/O Structures in nano Devices
5 V Output Tolerance
nano Standard I/Os must be set to 3.3 V LVTTL or 3.3 V LVCMOS mode to reliably drive 5 V TTL
receivers. It is also critical that there be NO external I/O pull-up resistor to 5 V, since this resistor would
pull the I/O pad voltage beyond the 3.6 V absolute maximum value and consequently cause damage to
the I/O.
When set to 3.3 V LVTTL or 3.3 V LVCMOS mode, the I/Os can directly drive signals into 5 V TTL
receivers. In fact, VOL = 0.4 V and VOH = 2.4 V in both 3.3 V LVTTL and 3.3 V LVCMOS modes exceeds
the VIL = 0.8 V and VIH = 2 V level requirements of 5 V TTL receivers. Therefore, level 1 and level 0 will
be recognized correctly by 5 V TTL receivers.
Schmitt Trigger
A Schmitt trigger is a buffer used to convert a slow or noisy input signal into a clean one before passing it
to the FPGA. Using Schmitt trigger buffers guarantees a fast, noise-free input signal to the FPGA.
nano devices have Schmitt triggers built into their I/O circuitry. Schmitt Trigger is available on all I/O
configurations.
This feature can be implemented by using a Physical Design Constraints (PDC) command (Table 7-5 on
page 163) or by selecting a check box in the I/O Attribute Editor in Designer. The check box is cleared by
default.
174 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
– If one of the registers has a PRE pin, all the other registers that are candidates for combining
in the I/O must have a PRE pin.
– If one of the registers has neither a CLR nor a PRE pin, all the other registers that are
candidates for combining must have neither a CLR nor a PRE pin.
– If the clear or preset pins are present, they must have the same polarity.
– If the clear or preset pins are present, they must be driven by the same signal (net).
3. For single-tile devices (10 k, 15 k, and 20 k): Registers connected to an I/O on the Output and
Output Enable pins must have the same clock function (both CLR and CLK are shared among all
registers):
– Both the Output and Output Enable registers must not have an E pin (clock enable).
4. For dual-tile devices (60 k, 125 k, and 250 k): Registers connected to an I/O on the Output and
Output Enable pins must have the same clock and enable function:
– Both the Output and Output Enable registers must have an E pin (clock enable), or none at all.
– If the E pins are present, they must have the same polarity. The CLK pins must also have the
same polarity.
In some cases, the user may want registers to be combined with the input of a bibuf while
maintaining the output as-is. This can be achieved by using PDC commands as follows:
set_io <signal name> -REGISTER yes ------register will combine
set_preserve <signal name> ----register will not combine
Output Drive
The output buffers of nano devices can provide multiple drive strengths to meet signal integrity
requirements. The LVTTL and LVCMOS (except 1.2 V LVCMOS) standards have selectable drive
strengths.
Drive strength should also be selected according to the design requirements and noise immunity of the
system.
Revision 5 175
I/O Structures in nano Devices
Refer to Table 7-10 on page 169 for more information about the slew rate and drive strength specification
for LVTTL/LVCMOS 3.3 V, LVCMOS 2.5 V, LVCMOS 1.8 V, LVCMOS 1.5 V, and LVCMOS 1.2 V output
buffers.
176 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 177
I/O Structures in nano Devices
Gmn is only used for I/Os that also have CCC access—i.e., global pins.
FF = Indicates the I/O dedicated for the Flash*Freeze mode activation pin
G = Global
m = Global pin location associated with each CCC on the device: A (northwest corner), B (northeast
corner), C (east middle), D (southeast corner), E (southwest corner), and F (west middle)
n = Global input MUX and pin number of the associated Global location m—either A0, A1, A2, B0,
B1, B2, C0, C1, or C2. Refer to the "Global Resources in Low Power Flash Devices" section on
page 31 for information about the three input pins per clock source MUX at CCC location m.
u = I/O pair number in the bank, starting at 00 from the northwest I/O bank and proceeding in a
clockwise direction
x = R (Regular—single-ended) for the I/Os that support single-ended standards.
w = S (Single-Ended)
B = Bank
y = Bank number (0–3). The Bank number starts at 0 from the northwest I/O bank and proceeds in
a clockwise direction.
VCCIB0
VCCIB0
VCCIB0
VCCIB0
GNDQ
GND
GND
GND
VCC
VCC
GND
CCC Bank 0 CCC
"A" "B" GND
GNDQ
VCCIB1
Vcc
GND
Bank 3 Bank 1 VCC
VCCIB3
GND
VCCIB1
VCC
VCCIB2
GND
VCC
VCCIB2
GND
GNDQ
VCCIB2
TMS
TDI
TCK
Figure 7-8 • I/O Naming Conventions for nano Devices – Top View
178 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Bank 1
CCC- CCC-
GL Bank 1 GL
Legend
Revision 5 179
I/O Structures in nano Devices
Bank 1
CCC- CCC-
Bank 1
GL GL
Legend
Bank 1 Bank 0
Bank 1 Bank 0
Legend
180 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Bank 3 Bank 1
Bank 3 Bank 1
Legend
Board-Level Considerations
Low power flash devices have robust I/O features that can help in reducing board-level components. The
devices offer single-chip solutions, which makes the board layout simpler and more immune to signal
integrity issues. Although, in many cases, these devices resolve board-level issues, special attention
should always be given to overall signal integrity. This section covers important board-level
considerations to facilitate optimum device performance.
Termination
Proper termination of all signals is essential for good signal quality. Nonterminated signals, especially
clock signals, can cause malfunctioning of the device.
For general termination guidelines, refer to the Board-Level Considerations application note for
Microsemi FPGAs. Also refer to the "Pin Descriptions and Packaging" chapter of the appropriate device
datasheet for termination requirements for specific pins.
Low power flash I/Os are equipped with on-chip pull-up/-down resistors. The user can enable these
resistors by instantiating them either in the top level of the design (refer to the IGLOO, ProASIC3,
SmartFusion, and Fusion Macro Library Guide for the available I/O macros with pull-up/-down) or in the
I/O Attribute Editor in Designer if generic input or output buffers are instantiated in the top level. Unused
I/O pins are configured as inputs with pull-up resistors.
As mentioned earlier, low power flash devices have multiple programmable drive strengths, and the user
can eliminate unwanted overshoot and undershoot by adjusting the drive strengths.
Revision 5 181
I/O Structures in nano Devices
Power-Up Behavior
Low power flash devices are power-up/-down friendly; i.e., no particular sequencing is required for
power-up and power-down. This eliminates extra board components for power-up sequencing, such as a
power-up sequencer.
During power-up, all I/Os are tristated, irrespective of I/O macro type (input buffers, output buffers, I/O
buffers with weak pull-ups or weak pull-downs, etc.). Once I/Os become activated, they are set to the
user-selected I/O macros. Refer to the "Power-Up/-Down Behavior of Low Power Flash Devices" section
on page 307 for details.
Drive Strength
Low power flash devices have up to four programmable output drive strengths. The user can select the
drive strength of a particular output in the I/O Attribute Editor or can instantiate a specialized I/O macro,
such as OUTBUF_S_8 (slew = low, out_drive = 8 mA).
The maximum available drive strength is 8 mA per I/O. Though no I/O should be forced to source or sink
more than 8 mA indefinitely, I/Os may handle a higher amount of current (refer to the device IBIS model
for maximum source/sink current) during signal transition (AC current). Every device package has its own
power dissipation limit; hence, power calculation must be performed accurately to determine how much
current can be tolerated per I/O within that limit.
I/O Interfacing
Low power flash devices are 5 V–input– and 5 V–output–tolerant without adding any extra circuitry.
Along with other low-voltage I/O macros, this 5 V tolerance makes these devices suitable for many types
of board component interfacing.
Table 7-17 shows some high-level interfacing examples using low power flash devices.
Conclusion
IGLOO nano and ProASIC3 nano device support for multiple I/O standards minimizes board-level
components and makes possible a wide variety of applications. The Microsemi Designer software,
integrated with Libero SoC, presents a clear visual display of I/O assignments, allowing users to verify
I/O and board-level design requirements before programming the device. The nano device I/O features
and functionalities ensure board designers can produce low-cost and low power FPGA applications
fulfilling the complexities of contemporary design needs.
182 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Related Documents
Application Notes
Board-Level Considerations
http://www.microsemi.com/soc/documents/ALL_AC276_AN.pdf
User’s Guides
Libero SoC User’s Guide
http://www.microsemi.com/soc/documents/libero_ug.pdf
IGLOO, ProASIC3, SmartFusion, and Fusion Macro Library Guide
http://www.microsemi.com/soc/documents/pa3_libguide_ug.pdf
SmartGen Core Reference Guide
http://www.microsemi.com/soc/documents/genguide_ug.pdf
List of Changes
The following table lists critical changes that were made in each revision of the document.
Revision 5 183
8 – I/O Software Control in Low Power Flash
Devices
Fusion, IGLOO, and ProASIC3 I/Os provide more design flexibility, allowing the user to control specific
features by enabling certain I/O standards. Some features are selectable only for certain I/O standards,
whereas others are available for all I/O standards. For example, slew control is not supported by
differential I/O standards. Conversely, I/O register combining is supported by all I/O standards. For
detailed information about which I/O standards and features are available on each device and each I/O
type, refer to the I/O Structures section of the handbook for the device you are using.
Figure 8-1 shows the various points in the software design flow where a user can provide input or control
of the I/O selection and parameters. A detailed description is provided throughout this document.
Design Entry
5. Synthesis
6.1 I/O
6. Compile Assignments by
PDC Import
8. Layout
and Other
Steps
Revision 5 185
I/O Software Control in Low Power Flash Devices
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO devices as listed
in Table 8-1. Where the information applies to only one product line or limited devices, these exclusions
will be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 8-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
186 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 187
I/O Software Control in Low Power Flash Devices
Design Entry
There are three ways to implement I/Os in a design:
1. Use the SmartGen macro builder to configure I/Os by generating specific I/O library macros and
then instantiating them in top-level code. This is especially useful when creating I/O bus
structures.
2. Use an I/O buffer cell in a schematic design.
3. Manually instantiate specific I/O macros in the top-level code.
If technology-specific macros, such as INBUF_LVCMOS33 and OUTBUF_PCI, are used in the HDL
code or schematic, the user will not be able to change the I/O standard later on in Designer. If generic I/O
macros are used, such as INBUF, OUTBUF, TRIBUF, CLKBUF, and BIBUF, the user can change the I/O
standard using the Designer I/O Attribute Editor tool.
188 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
3. Double-click I/O to open the Create Core window, which is shown in Figure 8-3).
As seen in Figure 8-3, there are five tabs to configure the I/O macro: Input Buffers, Output Buffers,
Bidirectional Buffers, Tristate Buffers, and DDR.
Input Buffers
There are two variations: Regular and Special.
If the Regular variation is selected, only the Width (1 to 128) needs to be entered. The default value for
Width is 1.
The Special variation has Width, Technology, Voltage Level, and Resistor Pull-Up/-Down options (see
Figure 8-3). All the I/O standards and supply voltages (VCCI) supported for the device family are available
for selection.
Revision 5 189
I/O Software Control in Low Power Flash Devices
Output Buffers
There are two variations: Regular and Special.
If the Regular variation is selected, only the Width (1 to 128) needs to be entered. The default value for
Width is 1.
The Special variation has Width, Technology, Output Drive, and Slew Rate options.
Bidirectional Buffers
There are two variations: Regular and Special.
The Regular variation has Enable Polarity (Active High, Active Low) in addition to the Width option.
The Special variation has Width, Technology, Output Drive, Slew Rate, and Resistor Pull-Up/-Down
options.
Tristate Buffers
Same as Bidirectional Buffers.
DDR
There are eight variations: DDR with Regular Input Buffers, Special Input Buffers, Regular Output
Buffers, Special Output Buffers, Regular Tristate Buffers, Special Tristate Buffers, Regular Bidirectional
Buffers, and Special Bidirectional Buffers.
These variations resemble the options of the previous I/O macro. For example, the Special Input Buffers
variation has Width, Technology, Voltage Level, and Resistor Pull-Up/-Down options. DDR is not
available on IGLOO PLUS devices.
4. Once the desired configuration is selected, click the Generate button. The Generate Core
window opens (Figure 8-4).
5. Enter a name for the macro. Click OK. The core will be generated and saved to the appropriate
location within the project files (Figure 8-5 on page 191).
190 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 191
I/O Software Control in Low Power Flash Devices
entity TOP is
port(IN2, IN1 : in std_logic; OUT1 : out std_logic);
end TOP;
component INBUF_LVCMOS5U
port(PAD : in std_logic := 'U'; Y : out std_logic);
end component;
component INBUF_LVCMOS5
port(PAD : in std_logic := 'U'; Y : out std_logic);
end component;
component OUTBUF_SSTL3_II
port(D : in std_logic := 'U'; PAD : out std_logic);
end component;
begin
I1 : INBUF_LVCMOS5U
port map(PAD => IN1, Y =>x);
I2 : INBUF_LVCMOS5
port map(PAD => IN2, Y => y);
I3 : OUTBUF_SSTL3_II
port map(D => z, PAD => OUT1);
end DEF_ARCH;
192 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
– The I/O standard of technology-specific I/O macros cannot be changed in the I/O Attribute
Editor (see Figure 8-6).
– The user MUST instantiate differential I/O macros (LVDS/LVPECL) in the design. This is the
only way to use these standards in the design (IGLOO nano and ProASIC3 nano devices do
not support differential inputs).
– To implement the DDR I/O function, the user must instantiate a DDR_REG or DDR_OUT
macro. This is the only way to use a DDR macro in the design.
Figure 8-6 • Assigning a Different I/O Standard to the Generic I/O Macro
Revision 5 193
I/O Software Control in Low Power Flash Devices
194 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 195
I/O Software Control in Low Power Flash Devices
I/O Function
Figure 8-8 shows an example of the I/O Function table included in the I/O bank report:
This table lists the number of input I/Os, output I/Os, bidirectional I/Os, and differential input and output
I/O pairs that use I/O and DDR registers.
Note: IGLOO nano and ProASIC3 nano devices do not support differential inputs.
Certain rules must be met to implement registered and DDR I/O functions (refer to the I/O Structures
section of the handbook for the device you are using and the "DDR" section on page 190).
I/O Technology
The I/O Technology table (shown in Figure 8-9) gives the values of VCCI and VREF (reference voltage)
for all the I/O standards used in the design. The user should assign these voltages appropriately.
196 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
The example in Figure 8-10 shows that none of the I/O macros is assigned to the bank because more
than one VCCI is detected.
The table in Figure 8-11 indicates that there are two voltage-referenced I/Os used in the design. Even
though both of the voltage-referenced I/O technologies have the same VCCI voltage, their VREF
voltages are different. As a result, two I/O banks are needed to assign the VCCI and VREF voltages.
In addition, there are six single-ended I/Os used that have the same VCCI voltage. Since two banks
are already assigned with the same VCCI voltage and there are enough unused bonded I/Os in
Revision 5 197
I/O Software Control in Low Power Flash Devices
those banks, the user does not need to assign the same VCCI voltage to another bank. The user needs
to assign the other three VCCI voltages to three more banks.
Another method is to use the I/O Bank Settings dialog box (MVN > Edit > I/O Bank Settings) to set up
the VCCI voltage for the bank (Figure 8-12).
198 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Another method for assigning VREF is by using MVN > Edit > I/O Bank Settings (Figure 8-13 on
page 200).
Revision 5 199
I/O Software Control in Low Power Flash Devices
To be able to choose VREF pins, adequate VREF pins must be created to allow legal placement of the
compatible voltage-referenced I/Os.
To assign VREF pins manually, the PDC command is as follows:
set_vref –bank [bank name] [package pin numbers]
For ChipPlanner/PinEditor to show the range of a VREF pin, perform the following steps:
1. Assign VCCI to a bank using MVN > Edit > I/O Bank Settings.
2. Open ChipPlanner. Zoom in on an I/O package pin in that bank.
3. Highlight the pin and then right-click. Choose Use Pin for VREF.
200 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
4. Right-click and then choose Highlight VREF range. All the pins covered by that VREF pin will be
highlighted (Figure 8-14).
Using PinEditor or ChipPlanner, VREF pins can also be assigned (Figure 8-15).
Revision 5 201
I/O Software Control in Low Power Flash Devices
Messages will appear in the Output window informing you when the automatic I/O bank assignment
begins and ends. If the assignment is successful, the message "I/O Bank Assigner completed
successfully" appears in the Output window, as shown in Figure 8-17.
202 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
If the assignment is not successful, an error message appears in the Output window.
To undo the I/O bank assignments, choose Undo from the Edit menu. Undo removes the I/O
technologies assigned by the IOBA. It does not remove the I/O technologies previously assigned.
To redo the changes undone by the Undo command, choose Redo from the Edit menu.
To clear I/O bank assignments made before using the Undo command, manually unassign or reassign
I/O technologies to banks. To do so, choose I/O Bank Settings from the Edit menu to display the I/O
Bank Settings dialog box.
Conclusion
Fusion, IGLOO, and ProASIC3 support for multiple I/O standards minimizes board-level components and
makes possible a wide variety of applications. The Microsemi Designer software, integrated with Libero
SoC, presents a clear visual display of I/O assignments, allowing users to verify I/O and board-level
design requirements before programming the device. The device I/O features and functionalities ensure
board designers can produce low-cost and low power FPGA applications fulfilling the complexities of
contemporary design needs.
Related Documents
User’s Guides
Libero SoC User’s Guide
http://www.microsemi.com/soc/documents/libero_ug.pdf
IGLOO, ProASIC3, SmartFusion, and Fusion Macro Library Guide
http://www.microsemi.com/soc/documents/pa3_libguide_ug.pdf
SmartGen Core Reference Guide
http://www.microsemi.com/soc/documents/genguide_ug.pdf
Revision 5 203
I/O Software Control in Low Power Flash Devices
List of Changes
The following table lists critical changes that were made in each revision of the document.
204 R e vi s i o n 5
9 – DDR for Microsemi’s Low Power Flash
Devices
Introduction
The I/Os in Fusion, IGLOO, and ProASIC3 devices support Double Data Rate (DDR) mode. In this mode,
new data is present on every transition (or clock edge) of the clock signal. This mode doubles the data
transfer rate compared with Single Data Rate (SDR) mode, where new data is present on one transition
(or clock edge) of the clock signal. Low power flash devices have DDR circuitry built into the I/O tiles.
I/Os are configured to be DDR receivers or transmitters by instantiating the appropriate special macros
(examples shown in Figure 9-4 on page 210 and Figure 9-5 on page 211) and buffers (DDR_OUT or
DDR_REG) in the RTL design. This document discusses the options the user can choose to configure
the I/Os in this mode and how to instantiate them in the design.
CLR
Revision 5 205
DDR for Microsemi’s Low Power Flash Devices
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO devices as listed
in Table 9-1. Where the information applies to only one product line or limited devices, these exclusions
will be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 9-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
206 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 207
DDR for Microsemi’s Low Power Flash Devices
208 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
INBUF_SSTL2_I DDR_REG
PAD Y
PAD D QR QR
CLK QF QF
CLR
CLR
Figure 9-2 • DDR Input Register Support in Low Power Flash Devices
OUTBUF_SSTL3_I
DDR_OUT
D PAD
DataR DR Q
DataF DF
CLK
CLR
CLR
Revision 5 209
DDR for Microsemi’s Low Power Flash Devices
Figure 9-4 • Example of Using SmartGen to Generate a DDR SSTL2 Class I Input Register
210 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
INBUF_SSTL2_I DDR_REG
PAD Y
PAD D QR QR
CLK QF QF
CLR
CLR
Verilog
module DDR_InBuf_SSTL2_I(PAD,CLR,CLK,QR,QF);
wire Y;
INBUF_SSTL2_I INBUF_SSTL2_I_0_inst(.PAD(PAD),.Y(Y));
DDR_REG DDR_REG_0_inst(.D(Y),.CLK(CLK),.CLR(CLR),.QR(QR),.QF(QF));
endmodule
VHDL
library ieee;
use ieee.std_logic_1164.all;
--The correct library will be inserted automatically by SmartGen
library proasic3; use proasic3.all;
--library fusion; use fusion.all;
--library igloo; use igloo.all;
entity DDR_InBuf_SSTL2_I is
port(PAD, CLR, CLK : in std_logic; QR, QF : out std_logic) ;
end DDR_InBuf_SSTL2_I;
component INBUF_SSTL2_I
port(PAD : in std_logic := 'U'; Y : out std_logic) ;
end component;
component DDR_REG
port(D, CLK, CLR : in std_logic := 'U'; QR, QF : out std_logic) ;
end component;
signal Y : std_logic ;
begin
INBUF_SSTL2_I_0_inst : INBUF_SSTL2_I
port map(PAD => PAD, Y => Y);
DDR_REG_0_inst : DDR_REG
port map(D => Y, CLK => CLK, CLR => CLR, QR => QR, QF => QF);
end DEF_ARCH;
Revision 5 211
DDR for Microsemi’s Low Power Flash Devices
OUTBUF_SSTL3_I
DDR_OUT
D PAD
DataR DR Q
DataF DF
CLK
CLR
CLR
Verilog
module DDR_OutBuf_SSTL3_I(DataR,DataF,CLR,CLK,PAD);
wire Q, VCC;
VCC VCC_1_net(.Y(VCC));
DDR_OUT DDR_OUT_0_inst(.DR(DataR),.DF(DataF),.CLK(CLK),.CLR(CLR),.Q(Q));
OUTBUF_SSTL3_I OUTBUF_SSTL3_I_0_inst(.D(Q),.PAD(PAD));
endmodule
VHDL
library ieee;
use ieee.std_logic_1164.all;
library proasic3; use proasic3.all;
entity DDR_OutBuf_SSTL3_I is
port(DataR, DataF, CLR, CLK : in std_logic; PAD : out std_logic) ;
end DDR_OutBuf_SSTL3_I;
component DDR_OUT
port(DR, DF, CLK, CLR : in std_logic := 'U'; Q : out std_logic) ;
end component;
component OUTBUF_SSTL3_I
port(D : in std_logic := 'U'; PAD : out std_logic) ;
end component;
component VCC
port( Y : out std_logic);
end component;
begin
end DEF_ARCH;
212 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
INV
A Y
TrienAux
Trien
DDR_OUT
D PAD
DataR DR Q
DataF DF
TRIBUFF_F_8U
CLK
CLR
CLR
Figure 9-7 • DDR Tristate Output Register, LOW Enable, 8 mA, Pull-Up (LVTTL)
Verilog
module DDR_TriStateBuf_LVTTL_8mA_HighSlew_LowEnb_PullUp(DataR, DataF, CLR, CLK, Trien,
PAD);
wire TrienAux, Q;
INV Inv_Tri(.A(Trien),.Y(TrienAux));
DDR_OUT DDR_OUT_0_inst(.DR(DataR),.DF(DataF),.CLK(CLK),.CLR(CLR),.Q(Q));
TRIBUFF_F_8U TRIBUFF_F_8U_0_inst(.D(Q),.E(TrienAux),.PAD(PAD));
endmodule
VHDL
library ieee;
use ieee.std_logic_1164.all;
library proasic3; use proasic3.all;
entity DDR_TriStateBuf_LVTTL_8mA_HighSlew_LowEnb_PullUp is
port(DataR, DataF, CLR, CLK, Trien : in std_logic; PAD : out std_logic) ;
end DDR_TriStateBuf_LVTTL_8mA_HighSlew_LowEnb_PullUp;
component INV
port(A : in std_logic := 'U'; Y : out std_logic) ;
end component;
component DDR_OUT
port(DR, DF, CLK, CLR : in std_logic := 'U'; Q : out std_logic) ;
end component;
component TRIBUFF_F_8U
port(D, E : in std_logic := 'U'; PAD : out std_logic) ;
end component;
begin
Inv_Tri : INV
port map(A => Trien, Y => TrienAux);
Revision 5 213
DDR for Microsemi’s Low Power Flash Devices
DDR_OUT_0_inst : DDR_OUT
port map(DR => DataR, DF => DataF, CLK => CLK, CLR => CLR, Q => Q);
TRIBUFF_F_8U_0_inst : TRIBUFF_F_8U
port map(D => Q, E => TrienAux, PAD => PAD);
end DEF_ARCH;
INV
A Y
Trien
DDR_OUT E
D PAD
DataR DR Q
DataF DF
CLK
BIBUF_HSTL_I
CLR
CLR
DDR_REG
QR Y
QR D
QF
QF
CLR
Figure 9-8 • DDR Bidirectional Buffer, LOW Output Enable (HSTL Class II)
Verilog
module DDR_BiDir_HSTL_I_LowEnb(DataR,DataF,CLR,CLK,Trien,QR,QF,PAD);
wire TrienAux, D, Q;
endmodule
214 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
VHDL
library ieee;
use ieee.std_logic_1164.all;
library proasic3; use proasic3.all;
entity DDR_BiDir_HSTL_I_LowEnb is
port(DataR, DataF, CLR, CLK, Trien : in std_logic; QR, QF : out std_logic;
PAD : inout std_logic) ;
end DDR_BiDir_HSTL_I_LowEnb;
component INV
port(A : in std_logic := 'U'; Y : out std_logic) ;
end component;
component DDR_OUT
port(DR, DF, CLK, CLR : in std_logic := 'U'; Q : out std_logic) ;
end component;
component DDR_REG
port(D, CLK, CLR : in std_logic := 'U'; QR, QF : out std_logic) ;
end component;
component BIBUF_HSTL_I
port(PAD : inout std_logic := 'U'; D, E : in std_logic := 'U'; Y : out std_logic) ;
end component;
begin
Inv_Tri : INV
port map(A => Trien, Y => TrienAux);
DDR_OUT_0_inst : DDR_OUT
port map(DR => DataR, DF => DataF, CLK => CLK, CLR => CLR, Q => Q);
DDR_REG_0_inst : DDR_REG
port map(D => D, CLK => CLK, CLR => CLR, QR => QR, QF => QF);
BIBUF_HSTL_I_0_inst : BIBUF_HSTL_I
port map(PAD => PAD, D => Q, E => TrienAux, Y => D);
end DEF_ARCH;
Revision 5 215
DDR for Microsemi’s Low Power Flash Devices
Design Example
Figure 9-9 shows a simple example of a design using both DDR input and DDR output registers. The
user can copy the HDL code in Libero SoC software and go through the design flow. Figure 9-10 and
Figure 9-11 on page 217 show the netlist and ChipPlanner views of the ddr_test design. Diagrams may
vary slightly for different families.
CLR
Figure 9-10 • DDR Test Design as Seen by NetlistViewer for IGLOO/e Devices
216 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Figure 9-11 • DDR Input/Output Cells as Seen by ChipPlanner for IGLOO/e Devices
Verilog
module Inbuf_ddr(PAD,CLR,CLK,QR,QF);
wire Y;
endmodule
module Outbuf_ddr(DataR,DataF,CLR,CLK,PAD);
wire Q, VCC;
VCC VCC_1_net(.Y(VCC));
DDR_OUT DDR_OUT_0_inst(.DR(DataR), .DF(DataF), .CLK(CLK), .CLR(CLR), .Q(Q));
OUTBUF OUTBUF_0_inst(.D(Q), .PAD(PAD));
endmodule
Revision 5 217
DDR for Microsemi’s Low Power Flash Devices
endmodule
Simulation Consideration
Microsemi DDR simulation models use inertial delay modeling by default (versus transport delay
modeling). As such, pulses that are shorter than the actual gate delays should be avoided, as they will
not be seen by the simulator and may be an issue in post-routed simulations. The user must be aware of
the default delay modeling and must set the correct delay model in the simulator as needed.
Conclusion
Fusion, IGLOO, and ProASIC3 devices support a wide range of DDR applications with different I/O
standards and include built-in DDR macros. The powerful capabilities provided by SmartGen and its GUI
can simplify the process of including DDR macros in designs and minimize design errors. Additional
considerations should be taken into account by the designer in design floorplanning and placement of I/O
flip-flops to minimize datapath skew and to help improve system timing margins. Other system-related
issues to consider include PLL and clock partitioning.
218 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
List of Changes
The following table lists critical changes that were made in each revision of the chapter.
Revision 5 219
10 – Programming Flash Devices
Introduction
This document provides an overview of the various programming options available for the Microsemi
flash families. The electronic version of this document includes active links to all programming resources,
which are available at http://www.microsemi.com/soc/products/hardware/default.aspx. For Microsemi
antifuse devices, refer to the Programming Antifuse Devices document.
FlashPro3 or JTAG
FlashPro ProASIC3/E
Software FlashPro4
Programming File:
PDB, STP, or FDB
Revision 5 221
Programming Flash Devices
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO devices as listed
in Table 10-1. Where the information applies to only one product line or limited devices, these exclusions
will be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 10-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
222 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Programming Basics
When choosing a programming solution, there are a number of options available. This section provides a
brief overview of those options. The next sections provide more detail on those options as they apply to
Microsemi FPGAs.
Revision 5 223
Programming Flash Devices
In-System Programming
Device Type Supported: Flash
ISP refers to programming the FPGA after it has been mounted on the system printed circuit board. The
FPGA may be preprogrammed and later reprogrammed using ISP.
The advantage of using ISP is the ability to update the FPGA design many times without any changes to
the board. This eliminates the requirement of using a socket for the FPGA, saving cost and improving
reliability. It also reduces programming hardware expenses, as the ISP methodology is die-/package-
independent.
There are two methods of in-system programming: external and internal.
• Programmer ISP—Refer to the "In-System Programming (ISP) of Microsemi’s Low Power Flash
Devices Using FlashPro4/3/3X" section on page 261 for more information.
Using an external programmer and a cable, the device can be programmed through a header on
the system board. In Microsemi SoC Products Group documentation, this is referred to as
external ISP. Microsemi provides FlashPro4, FlashPro3, FlashPro Lite, or Silicon Sculptor 3 to
perform external ISP. Note that Silicon Sculptor II and Silicon Sculptor 3 can only provide ISP for
ProASIC and ProASICPLUS® families, not for SmartFusion, Fusion, IGLOO, or ProASIC3. Silicon
Sculptor II and Silicon Sculptor 3 can be used for programming ProASIC and ProASICPLUS
devices by using an adapter module (part number SMPA-ISP-ACTEL-3).
– Advantages: Allows local control of programming and data files for maximum security. The
programming algorithms and hardware are available from Microsemi. The only hardware
required on the board is a programming header.
– Limitations: A negligible board space requirement for the programming header and JTAG
signal routing
• Microprocessor ISP—Refer to the "Microprocessor Programming of Microsemi’s Low Power
Flash Devices" chapter of an appropriate FPGA fabric user’s guide for more information.
Using a microprocessor and an external or internal memory, you can store the program in
memory and use the microprocessor to perform the programming. In Microsemi documentation,
this is referred to as internal ISP. Both the code for the programming algorithm and the FPGA
programming file must be stored in memory on the board. Programming voltages must also be
generated on the board.
– Advantages: The programming code is stored in the system memory. An external programmer
is not required during programming.
– Limitations: This is the approach that requires the most design work, since some way of
getting and/or storing the data is needed; a system interface to the device must be designed;
and the low-level API to the programming firmware must be written and linked into the code
provided by Microsemi. While there are benefits to this methodology, serious thought and
planning should go into the decision.
224 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Device Programmers
Single Device Programmer
Single device programmers are used to program a device before it is mounted on the system board.
The advantage of using device programmers is that no programming hardware is required on the system
board. Therefore, no additional components or board space are required.
Adapter modules are purchased with single device programmers to support the FPGA packages used.
The FPGA is placed in the adapter module and the programming software is run from a PC. Microsemi
supplies the programming software for all of the Microsemi programmers. The software allows for the
selection of the correct die/package and programming files. It will then program and verify the device.
• Single-site programmers
A single-site programmer programs one device at a time. Microsemi offers Silicon Sculptor 3, built
by BP Microsystems, as a single-site programmer. Silicon Sculptor 3 and associated software are
available only from Microsemi.
– Advantages: Lower cost than multi-site programmers. No additional overhead for
programming on the system board. Allows local control of programming and data files for
maximum security. Allows on-demand programming on-site.
– Limitations: Only programs one device at a time.
• Multi-site programmers
Often referred to as batch or gang programmers, multi-site programmers can program multiple devices at
the same time using the same programming file. This is often used for large volume programming and by
programming houses. The sites often have independent processors and memory enabling the sites to
operate concurrently, meaning each site may start programming the same file independently. This
enables the operator to change one device while the other sites continue programming, which increases
throughput. Multiple adapter modules for the same package are required when using a multi-site
programmer. Silicon Sculptor I, II, and 3 programmers can be cascaded to program multiple devices in a
chain. Multi-site programmers, such as the BP2610 and BP2710, can also be purchased from BP
Microsystems. When using BP Microsystems multi-site programmers, users must use programming
adapter modules available only from Microsemi. Visit the Microsemi SoC Products Group website to view
the part numbers of the desired adapter module:
http://www.microsemi.com/soc/products/hardware/program_debug/ss/modules.aspx.
Also when using BP Microsystems programmers, customers must use Microsemi
programming software to ensure the best programming result will occur.
– Advantages: Provides the capability of programming multiple devices at the same time. No
additional overhead for programming on the system board. Allows local control of
programming and data files for maximum security.
– Limitations: More expensive than a single-site programmer
• Automated production (robotic) programmers
Automated production programmers are based on multi-site programmers. They consist of a large input
tray holding multiple parts and a robotic arm to select and place parts into appropriate programming
sockets automatically. When the programming of the parts is complete, the parts are removed and
placed in a finished tray. The automated programmers are often used in volume programming houses to
program parts for which the programming time is small. BP Microsystems part number BP4710, BP4610,
BP3710 MK2, and BP3610 are available for this purpose. Auto programmers cannot be used to program
RTAX-S devices.
Where an auto-programmer is used, the appropriate open-top adapter module from BP Microsystems
must be used.
Revision 5 225
Programming Flash Devices
226 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Programming Solutions
Details for the available programmers can be found in the programmer user's guides listed in the
"Related Documents" section on page 231.
All the programmers except FlashPro4, FlashPro3, FlashPro Lite, and FlashPro require adapter
modules, which are designed to support device packages. All modules are listed on the Microsemi SoC
Products Group website at
http://www.microsemi.com/soc/products/hardware/program_debug/ss/modules.aspx. They are not listed
in this document, since this list is updated frequently with new package options and any upgrades
required to improve programming yield or support new families.
Revision 5 227
Programming Flash Devices
228 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
• Programming Centers
Microsemi programming hardware policy also applies to programming centers. Microsemi
expects all programming centers to use certified programmers to program Microsemi devices. If a
programming center uses noncertified programmers to program Microsemi devices, the
"Noncertified Programmers" policy applies.
Preprogramming Setup
Before programming, several steps are required to ensure an optimal programming yield.
Revision 5 229
Programming Flash Devices
Electronic Mail
You can communicate your technical questions to our email address and receive answers back by email,
fax, or phone. Also, if you have design problems, you can email your design files to receive assistance.
Microsemi monitors the email account throughout the day. When sending your request to us, please be
sure to include your full name, company name, and contact information for efficient processing of your
request. The technical support email address is [email protected].
Telephone
Our Technical Support Hotline answers all calls. The center retrieves information, such as your name,
company name, telephone number, and question. Once this is done, a case number is assigned. Then
the center forwards the information to a queue where the first available applications engineer receives
the data and returns your call. The phone hours are from 7:00 A.M. to 6:00 P.M., Pacific time, Monday
through Friday.
The Customer Applications Center number is (800) 262-1060.
European customers can call +44 (0) 1256 305 600.
230 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Related Documents
Below is a list of related documents, their location on the Microsemi SoC Products Group website, and a
brief summary of each document.
Application Notes
Programming Antifuse Devices
http://www.microsemi.com/soc/documents/AntifuseProgram_AN.pdf
Implementation of Security in Actel's ProASIC and ProASICPLUS Flash-Based FPGAs
http://www.microsemi.com/soc/documents/Flash_Security_AN.pdf
User’s Guides
FlashPro Programmers
FlashPro4,1 FlashPro3, FlashPro Lite, and FlashPro2
http://www.microsemi.com/soc/products/hardware/program_debug/flashpro/default.aspx
FlashPro User's Guide
http://www.microsemi.com/soc/documents/FlashPro_UG.pdf
The FlashPro User’s Guide includes hardware and software setup, self-test instructions, use instructions,
and a troubleshooting / error message guide.
Other Documents
http://www.microsemi.com/soc/products/solutions/security/default.aspx#flashlock
The security resource center describes security in Microsemi Flash FPGAs.
Quality and Reliability Guide
http://www.microsemi.com/soc/documents/RelGuide.pdf
Programming and Functional Failure Guidelines
http://www.microsemi.com/soc/documents/FA_Policies_Guidelines_5-06-00002.pdf
Revision 5 231
Programming Flash Devices
List of Changes
The following table lists critical changes that were made in each revision of the chapter.
232 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 233
11 – Security in Low Power Flash Devices
Revision 5 235
Security in Low Power Flash Devices
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO devices as listed
in Table 11-1. Where the information applies to only one product line or limited devices, these exclusions
will be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 11-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
236 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Security Architecture
Fusion, IGLOO, and ProASIC3 devices have been designed with the most comprehensive programming
logic design security in the industry. In the architecture of these devices, security has been designed into
the very fabric. The flash cells are located beneath seven metal layers, and the use of many device
design and layout techniques makes invasive attacks difficult. Since device layers cannot be removed
without disturbing the charge on the programmed (or erased) flash gates, devices cannot be easily
deconstructed to decode the design. Low power flash devices are unique in being reprogrammable and
having inherent resistance to both invasive and noninvasive attacks on valuable IP. Secure, remote ISP
is now possible with AES encryption capability for the programming file during electronic transfer.
Figure 11-2 shows a view of the AES decryption core inside an IGLOO device; Figure 11-3 on page 238
shows the AES decryption core inside a Fusion device. The AES core is used to decrypt the encrypted
programming file when programming.
Bank 0
CCC
RAM Block
4,608-Bit Dual-Port
SRAM or FIFO Block
Bank 3
Bank 1
I/Os
VersaTile
Bank 3
Bank 1
RAM Block
ISP AES User Nonvolatile Flash*Freeze Charge
4,608-Bit Dual-Port
Decryption* FlashRom Technology Pumps SRAM or FIFO Block
Bank 2
Note: *ISP AES Decryption is not supported by 30 k gate devices and smaller. For details of other architecture features
by device, refer to the appropriate family datasheet.
Figure 11-2 • Block Representation of the AES Decryption Core in IGLOO and ProASIC3 Devices
Revision 5 237
Security in Low Power Flash Devices
Bank 0 Bank 1
CCC
SRAM Block
4,608-Bit Dual-Port SRAM
or FIFO Block
OSC
I/Os
CCC/PLL
VersaTile
Bank 4
Bank 2
SRAM Block
4,608-Bit Dual-Port SRAM
ISP AES User Nonvolatile
Charge Pumps or FIFO Block
Decryption FlashROM
Analog Analog Analog Analog Analog Analog Analog Analog Analog Analog
Quad Quad Quad Quad Quad Quad Quad Quad Quad Quad
CCC
Bank 3
Figure 11-3 • Block Representation of the AES Decryption Core in a Fusion AFS600 FPGA
Security Features
IGLOO and ProASIC3 devices have two entities inside: FlashROM and the FPGA core fabric. Fusion
devices contain three entities: FlashROM, FBs, and the FPGA core fabric. The parts can be programmed
or updated independently with a STAPL programming file. The programming files can be AES-encrypted
or plaintext. This allows maximum flexibility in providing security to the entire device. Refer to the
"Programming Flash Devices" section on page 221 for information on the FlashROM structure.
Unlike SRAM-based FPGA devices, which require a separate boot PROM to store programming data,
low power flash devices are nonvolatile, and the secured configuration data is stored in on-chip flash
cells that are part of the FPGA fabric. Once programmed, this data is an inherent part of the FPGA array
and does not need to be loaded at system power-up. SRAM-based FPGAs load the configuration
bitstream upon power-up; therefore, the configuration is exposed and can be read easily.
The built-in FPGA core, FBs, and FlashROM support programming files encrypted with the 128-bit AES
(FIPS-192) block ciphers. The AES key is stored in dedicated, on-chip flash memory and can be
programmed before the device is shipped to other parties (allowing secure remote field updates).
238 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 239
Security in Low Power Flash Devices
The AES key is securely stored on-chip in dedicated low power flash device flash memory and cannot be
read out. In the first step, the AES key is generated and programmed into the device (for example, at a
secure or trusted programming site). The Microsemi Designer software tool provides AES key generation
capability. After the key has been programmed into the device, the device will only correctly decrypt
programming files that have been encrypted with the same key. If the individual programming file content
is incorrect, a Message Authentication Control (MAC) mechanism inside the device will fail in
authenticating the programming file. In other words, when an encrypted programming file is being loaded
into a device that has a different programmed AES key, the MAC will prevent this incorrect data from
being loaded, preventing possible device damage. See Figure 11-3 on page 238 and Figure 11-4 on
page 240 for graphical representations of this process.
It is important to note that the user decides what level of protection will be implemented for the device.
When AES protection is desired, the FlashLock Pass Key must be set. The AES key is a content
protection mechanism, whereas the FlashLock Pass Key is a device protection mechanism. When the
AES key is programmed into the device, the device still needs the Pass Key to protect the FPGA and
FlashROM contents and the security settings, including the AES key. Using the FlashLock Pass Key
prevents modification of the design contents by means of simply programming the device with a different
AES key.
MAC
Designer Validation
Software
Decrypted
Programming Bitstream
File Generation
with AES
Encryption AES AES FPGA
FlashROM
Key Decryption Core Core
Transmit Medium /
Public Network
Encrypted Bitstream
Figure 11-4 • Example Application Scenario Using AES in IGLOO and ProASIC3 Devices
1. National Institute of Standards and Technology, “ADVANCED ENCRYPTION STANDARD (AES) Questions and Answers,”
28 January 2002 (10 January 2005). See http://csrc.nist.gov/archive/aes/index1.html for more information.
240 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Fusion
MAC
Designer Validation
Software
Decrypted
Programming Bitstream
File Generation
with AES
Encryption AES AES FPGA
FlashROM FBs
Key Decryption Core Core
Transmit Medium /
Public Network
Encrypted Bitstream
FlashLock
Additional Options for IGLOO and ProASIC3 Devices
The user also has the option of prohibiting Write operations to the FPGA array but allowing Verify
operations on the FPGA array and/or Read operations on the FlashROM without the use of the
FlashLock Pass Key. This option provides the user the freedom of verifying the FPGA array and/or
reading the FlashROM contents after the device is programmed, without having to provide the FlashLock
Pass Key. The user can incorporate AES encryption on the programming files to better enhance the level
of security used.
Permanent FlashLock
The purpose of the permanent lock feature is to provide the benefits of the highest level of security to
IGLOO and ProASIC3 devices. If selected, the permanent FlashLock feature will create a permanent
barrier, preventing any access to the contents of the device. This is achieved by permanently disabling
Write and Verify access to the array, and Write and Read access to the FlashROM. After permanently
locking the device, it has been effectively rendered one-time-programmable. This feature is useful if the
intended applications do not require design or system updates to the device.
Revision 5 241
Security in Low Power Flash Devices
Security in Action
This section illustrates some applications of the security advantages of Microsemi’s devices (Figure 11-6).
.
Plaintext AES
Source File Encryption
Cipher Text
Source File
Public
Domain
Application 1
Application 2
Application 3
AES Decryption Core
Flash Device
242 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Flash Device
Security Settings
FPGA/FlashROM/FBs
Programs Design
Contents
Contents to Devices
Flash Device OEM
Customers
Nontrusted Manufacturing Environment
Notes:
1. Programmed portion indicated with dark gray.
2. Programming of FBs applies to Fusion only.
Figure 11-7 • Application 2: Device Programming in a Nontrusted Environment
Revision 5 243
Security in Low Power Flash Devices
Trusted Environment
OEM
Generates Updated Design Contents
Encrypted with AES
AES Encrypted
Programming File
Transmits to
Remote System
Update/Upgrade
Original Design
Contents AES
Flash Device Encrypted and
FlashLock Pass Key
Protected
244 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 245
Security in Low Power Flash Devices
User
Designer Software Programming Software
Software
Program User Assigns Desired Security Settings Device Programs
Security To FPGA/FlashROM/FB/All: Previously No Selected
1 – AES Key and FlashLock Pass Key Programmed?
Settings Security Settings
– FlashLock Pass Key Only into Device
Yes Yes
Software Performs
Software Generates Programming File Comparison of Does
with Desired Security Settings: FlashLock Pass Key FlashLock
– Encrypted with AES and Protected between Pass Key
with FlashLock Pass Key Programming File Match?
– Protected with FlashLock Pass Key Only and Device
No
Returns Error
Software Generates
Program Programming File Design Content
Programming
2 Design Previously No with Desired Programmed
Secured Design Contents into Device
Contents
Device(s)? (FPGA Array,
FlashROM, FB,
or All)
Yes
Yes
Returns Error
Yes
Software Generates
Programming File Design Content
with Encrypted Decrypted and
Design Contents Programmed
into Device
246 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 247
Security in Low Power Flash Devices
Figure 11-10 • All Silicon Features Selected for IGLOO and ProASIC3 Devices
248 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
2. Choose the appropriate security level setting and enter a FlashLock Pass Key. The default is the
Medium security level (Figure 11-12). Click Next.
If you want to select different options for the FPGA and/or FlashROM, this can be set by clicking
Custom Level. Refer to the "Advanced Options" section on page 256 for different custom
security level options and descriptions of each.
Figure 11-12 • Medium Security Level Selected for Low Power Flash Devices
Revision 5 249
Security in Low Power Flash Devices
3. Choose the desired settings for the FlashROM configurations to be programmed (Figure 11-13).
Click Finish to generate the STAPL programming file for the design.
Figure 11-13 • FlashROM Configuration Settings for Low Power Flash Devices
250 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 251
Security in Low Power Flash Devices
2. Choose the desired security level setting and enter the key(s).
– The High security level employs FlashLock Pass Key with AES Key protection.
– The Medium security level employs FlashLock Pass Key protection only.
Figure 11-16 • High Security Level to Implement FlashLock Pass Key and AES Key Protection
252 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Table 11-6 and Table 11-7 show all available options. If you want to implement custom levels,
refer to the "Advanced Options" section on page 256 for information on each option and how to
set it.
3. When done, click Finish to generate the Security Header programming file.
Table 11-6 • All IGLOO and ProASIC3 Header File Security Options
Both FlashROM
Security Option FlashROM Only FPGA Core Only and FPGA
No AES / no FlashLock ✓ ✓ ✓
FlashLock only ✓ ✓ ✓
AES and FlashLock ✓ ✓ ✓
Note: ✓ = options that may be used
Revision 5 253
Security in Low Power Flash Devices
Note: The settings in this figure are used to show the generation of an AES-encrypted programming file for the FPGA
array, FlashROM, and FB contents. One or all locations may be selected for encryption.
Figure 11-17 • Settings to Program a Device Secured with FlashLock and using AES Encryption
Choose the High security level to reprogram devices using both the FlashLock Pass Key and AES key
protection (Figure 11-18 on page 255). Enter the AES key and click Next.
A device that has already been secured with FlashLock and has an AES key loaded must recognize the
AES key to program the device and generate a valid bitstream in authentication. The FlashLock Key is
only required to unlock the device and change the security settings.
This is what makes it possible to program in an untrusted environment. The AES key is protected inside
the device by the FlashLock Key, so you can only program if you have the correct AES key. In fact, the
AES key is not in the programming file either. It is the key used to encrypt the data in the file. The same
key previously programmed with the FlashLock Key matches to decrypt the file.
An AES-encrypted file programmed to a device without FlashLock would not be secure, since without
FlashLock to protect the AES key, someone could simply reprogram the AES key first, then program with
any AES key desired or no AES key at all. This option is therefore not available in the software.
254 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Figure 11-18 • Security Level Set High to Reprogram Device with AES Key
Programming with this file is intended for an unsecured environment. The AES key encrypts the
programming file with the same AES key already used in the device and utilizes it to program the device.
Reprogramming Devices
Previously programmed devices can be reprogrammed using the steps in the "Generation of the
Programming File in a Trusted Environment—Application 1" section on page 247 and "Generation of
Security Header Programming File Only—Application 2" section on page 250. In the case where a
FlashLock Pass Key has been programmed previously, the user must generate the new programming file
with a FlashLock Pass Key that matches the one previously programmed into the device. The software
will check the FlashLock Pass Key in the programming file against the FlashLock Pass Key in the device.
The keys must match before the device can be unlocked to perform further programming with the new
programming file.
Figure 11-10 on page 248 and Figure 11-11 on page 248 show the option Programming previously
secured device(s), which the user should select before proceeding. Upon going to the next step, the
user will be notified that the same FlashLock Pass Key needs to be entered, as shown in Figure 11-19 on
page 256.
Revision 5 255
Security in Low Power Flash Devices
It is important to note that when the security settings need to be updated, the user also needs to select
the Security settings check box in Step 1, as shown in Figure 11-10 on page 248 and Figure 11-11 on
page 248, to modify the security settings. The user must consider the following:
• If only a new AES key is necessary, the user must re-enter the same Pass Key previously
programmed into the device in Designer and then generate a programming file with the same
Pass Key and a different AES key. This ensures the programming file can be used to access and
program the device and the new AES key.
• If a new Pass Key is necessary, the user can generate a new programming file with a new Pass
Key (with the same or a new AES key if desired). However, for programming, the user must first
load the original programming file with the Pass Key that was previously used to unlock the
device. Then the new programming file can be used to program the new security settings.
Advanced Options
As mentioned, there may be applications where more complicated security settings are required. The
“Custom Security Levels” section in the FlashPro User's Guide describes different advanced options
available to aid the user in obtaining the best available security settings.
256 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
FlashLock Pass Key with no AES key NOTE "SECURITY" "KEYED ";
FlashLock Pass Key with AES key NOTE "SECURITY" "KEYED ENCRYPT ";
Permanent Security Settings option enabled NOTE "SECURITY" "PERMLOCK ENCRYPT ";
AES-encrypted FPGA array (for programming updates) NOTE "SECURITY" "ENCRYPT CORE ";
AES-encrypted FlashROM (for programming updates) NOTE "SECURITY" "ENCRYPT FROM ";
AES-encrypted FPGA array and FlashROM (for NOTE "SECURITY" "ENCRYPT FROM CORE ";
programming updates)
Revision 5 257
Security in Low Power Flash Devices
Conclusion
The new and enhanced security features offered in Fusion, IGLOO, and ProASIC3 devices provide state-
of-the-art security to designs programmed into these flash-based devices. Microsemi low power flash
devices employ the encryption standard used by NIST and the U.S. government—AES using the 128-bit
Rijndael algorithm.
The combination of an on-chip AES decryption engine and FlashLock technology provides the highest
level of security against invasive attacks and design theft, implementing the most robust and secure ISP
solution. These security features protect IP within the FPGA and protect the system from cloning,
wholesale “black box” copying of a design, invasive attacks, and explicit IP or data theft.
Glossary
Term Explanation
Security Header Programming file used to program the FlashLock Pass Key and/or AES key into the device to
programming file secure the FPGA, FlashROM, and/or FBs.
AES (encryption) key 128-bit key defined by the user when the AES encryption option is set in the Microsemi
Designer software when generating the programming file.
FlashLock Pass Key 128-bit key defined by the user when the FlashLock option is set in the Microsemi Designer
software when generating the programming file.
The FlashLock Key protects the security settings programmed to the device. Once a device
is programmed with FlashLock, whatever settings were chosen at that time are secure.
FlashLock The combined security features that protect the device content from attacks. These features
are the following:
• Flash technology that does not require an external bitstream to program the device
• FlashLock Pass Key that secures device content by locking the security settings and
preventing access to the device as defined by the user
• AES key that allows secure, encrypted device reprogrammability
References
National Institute of Standards and Technology. “ADVANCED ENCRYPTION STANDARD (AES)
Questions and Answers.” 28 January 2002 (10 January 2005).
See http://csrc.nist.gov/archive/aes/index1.html for more information.
258 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Related Documents
User’s Guides
FlashPro User's Guide
http://www.microsemi.com/soc/documents/flashpro_ug.pdf
List of Changes
The following table lists critical changes that were made in each revision of the chapter.
Revision 5 259
12 – In-System Programming (ISP) of Microsemi’s
Low Power Flash Devices Using FlashPro4/3/3X
Introduction
Microsemi’s low power flash devices are all in-system programmable. This document describes the
general requirements for programming a device and specific requirements for the FlashPro4/3/3X
programmers1.
IGLOO, ProASIC3, SmartFusion, and Fusion devices offer a low power, single-chip, live-at-power-up
solution with the ASIC advantages of security and low unit cost through nonvolatile flash technology.
Each device contains 1 kbit of on-chip, user-accessible, nonvolatile FlashROM. The FlashROM can be
used in diverse system applications such as Internet Protocol (IP) addressing, user system preference
storage, device serialization, or subscription-based business models. IGLOO, ProASIC3, SmartFusion,
and Fusion devices offer the best in-system programming (ISP) solution, FlashLock® security features,
and AES-decryption-based ISP.
ISP Architecture
Low power flash devices support ISP via JTAG and require a single VPUMP voltage of 3.3 V during
programming. In addition, programming via a microcontroller in a target system is also supported.
Refer to the "Microprocessor Programming of Microsemi’s Low Power Flash Devices" chapter of an
appropriate FPGA fabric user’s guide.
Family-specific support:
• ProASIC3, ProASIC3E, SmartFusion, and Fusion devices support ISP.
• ProASIC3L devices operate using a 1.2 V core voltage; however, programming can be done only
at 1.5 V. Voltage switching is required in-system to switch from a 1.2 V core to 1.5 V core for
programming.
• IGLOO and IGLOOe V5 devices can be programmed in-system when the device is using a 1.5 V
supply voltage to the FPGA core.
• IGLOO nano V2 devices can be programmed at 1.2 V core voltage (when using FlashPro4 only)
or 1.5 V. IGLOO nano V5 devices are programmed with a VCC core voltage of 1.5 V. Voltage
switching is required in-system to switch from a 1.2 V supply (VCC,VCCI, and VJTAG) to 1.5 V
for programming. The exception is that V2 devices can be programmed at 1.2 V VCC with
FlashPro4.
IGLOO devices cannot be programmed in-system when the device is in Flash*Freeze mode. The device
should exit Flash*Freeze mode and be in normal operation for programming to start. Programming
operations in IGLOO devices can be achieved when the device is in normal operating mode and a 1.5 V
core voltage is used.
JTAG 1532
IGLOO, ProASIC3, SmartFusion, and Fusion devices support the JTAG-based IEEE 1532 standard for
ISP. To start JTAG operations, the IGLOO device must exit Flash*Freeze mode and be in normal
operation before starting to send JTAG commands to the device. As part of this support, when a device is
in an unprogrammed state, all user I/O pins are disabled. This is achieved by keeping the global IO_EN
1. FlashPro4 replaced FlashPro3/3X in 2010 and is backward compatible with FlashPro3/3X as long as there is no connection
to pin 4 on the JTAG header on the board. On FlashPro3/3X, there is no connection to pin 4 on the JTAG header; however,
pin 4 is used for programming mode (Prog_Mode) on FlashPro4. When converting from FlashPro3/3X to FlashPro4, users
should make sure that JTAG connectors on system boards do not have any connection to pin 4. FlashPro3X supports
discrete TCK toggling that is needed to support non-JTAG compliant devices in the chain. This feature is included in
FlashPro4.
Revision 5 261
In-System Programming (ISP) of Microsemi’s Low Power Flash Devices Using FlashPro4/3/3X
signal deactivated, which also has the effect of disabling the input buffers. The SAMPLE/PRELOAD
instruction captures the status of pads in parallel and shifts them out as new data is shifted in for loading
into the Boundary Scan Register (BSR). When the device is in an unprogrammed state, the OE and
output BSR will be undefined; however, the input BSR will be defined as long as it is connected and
being used. For JTAG timing information on setup, hold, and fall times, refer to the FlashPro User’s
Guide.
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO devices as listed
in Table 12-1. Where the information applies to only one product line or limited devices, these exclusions
will be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 12-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
262 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 263
In-System Programming (ISP) of Microsemi’s Low Power Flash Devices Using FlashPro4/3/3X
Security
Unlike SRAM-based FPGAs that require loading at power-up from an external source such as a
microcontroller or boot PROM, Microsemi nonvolatile devices are live at power-up, and there is no
bitstream required to load the device when power is applied. The unique flash-based architecture
prevents reverse engineering of the programmed code on the device, because the programmed data is
stored in nonvolatile memory cells. Each nonvolatile memory cell is made up of small capacitors and any
physical deconstruction of the device will disrupt stored electrical charges.
Each low power flash device has a built-in 128-bit Advanced Encryption Standard (AES) decryption core,
except for the 30 k gate devices and smaller. Any FPGA core or FlashROM content loaded into the
device can optionally be sent as encrypted bitstream and decrypted as it is loaded. This is particularly
suitable for applications where device updates must be transmitted over an unsecured network such as
the Internet. The embedded AES decryption core can prevent sensitive data from being intercepted
(Figure 12-1 on page 265). A single 128-bit AES Key (32 hex characters) is used to encrypt FPGA core
programming data and/or FlashROM programming data in the Microsemi tools. The low power flash
devices also decrypt with a single 128-bit AES Key. In addition, low power flash devices support a
Message Authentication Code (MAC) for authentication of the encrypted bitstream on-chip. This allows
the encrypted bitstream to be authenticated and prevents erroneous data from being programmed into
the device. The FPGA core, FlashROM, and Flash Memory Blocks (FBs), in Fusion only, can be updated
independently using a programming file that is AES-encrypted (cipher text) or uses plain text.
264 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Flash Device
MAC
Designer User Encryption AES Key Validation
Software
Decrypted
Programming Bitstream
File Generation FPGA Core,
with AES FlashROM,
Encryption AES FBs
Decryption
Transmit Medium /
Public Network
Encrypted Bistream
Revision 5 265
In-System Programming (ISP) of Microsemi’s Low Power Flash Devices Using FlashPro4/3/3X
Source AES
Plain Text Encryption
Source
Encrypted Bitstream
TCP/IP
Option 1
Option 2
Option 3
AES
FlashROM
Decryption
FPGA
Core
266 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
5
4
3
2
1
0
When using FlashROM combined with AES, many subscription-based applications or device
serialization applications are possible. The FROM configurator found in the Libero SoC Catalog supports
easy management of the FlashROM contents, even over large numbers of devices. The FROM
configurator can support FlashROM contents that contain the following:
• Static values
• Random numbers
• Values read from a file
• Independent updates of each page
In addition, auto-incrementing of fields is possible. In applications where the FlashROM content is
different for each device, you have the option to generate a single STAPL file for all the devices or
individual serialization files for each device. For more information on how to generate the FlashROM
content for device serialization, refer to the "FlashROM in Microsemi’s Low Power Flash Devices" section
on page 117.
Libero SoC includes a unique tool to support the generation and management of FlashROM and FPGA
programming files. This tool is called FlashPoint.
Depending on the applications, designers can use the FlashPoint software to generate a STAPL file with
different contents. In each case, optional AES encryption and/or different security settings can be set.
In Designer, when you click the Programming File icon, FlashPoint launches, and you can generate
STAPL file(s) with four different cases (Figure 12-4 on page 268). When the serialization feature is used
during the configuration of FlashROM, you can generate a single STAPL file that will program all the
devices or an individual STAPL file for each device.
The following cases present the FPGA core and FlashROM programming file combinations that can be
used for different applications. In each case, you can set the optional security settings (FlashLock Pass
Key and/or AES Key) depending on the application.
1. A single STAPL file or multiple STAPL files with multiple FlashROM contents and the FPGA core
content. A single STAPL file will be generated if the device serialization feature is not used. You
can program the whole FlashROM or selectively program individual pages.
2. A single STAPL file for the FPGA core content
Revision 5 267
In-System Programming (ISP) of Microsemi’s Low Power Flash Devices Using FlashPro4/3/3X
3. A single STAPL file or multiple STAPL files with multiple FlashROM contents. A single STAPL file
will be generated if the device serialization feature is not used. You can program the whole
FlashROM or selectively program individual pages.
4. A single STAPL file to configure the security settings for the device, such as the AES Key and/or
Pass Key.
Libero SoC
Designer Software Suite Catalog
Netlist
Programming FlashROM
File Configuration
(FlashPoint) File (*.ufc)
1 2 3 4
Single/Multiple Single/Multiple
FlashROM FPGA Core FlashROM
Content(s) Content
Content(s)
FPGA Core
Content
Programming Solution
For device programming, any IEEE 1532–compliant programmer can be used; however, the
FlashPro4/3/3X programmer must be used to control the low power flash device's rich security features
and FlashROM programming options. The FlashPro4/3/3X programmer is a low-cost portable
programmer for the Microsemi flash families. It can also be used with a powered USB hub for parallel
programming. General specifications for the FlashPro4/3/3X programmer are as follows:
• Programming clock – TCK is used with a maximum frequency of 20 MHz, and the default
frequency is 4 MHz.
• Programming file – STAPL
• Daisy chain – Supported. You can use the ChainBuilder software to build the programming file for
the chain.
• Parallel programming – Supported. Multiple FlashPro4/3/3X programmers can be connected
together using a powered USB hub or through the multiple USB ports on the PC.
• Power supply – The target board must provide VCC, VCCI, VPUMP, and VJTAG during
programming. However, if there is only one device on the target board, the FlashPro4/3/3X
programmer can generate the required VPUMP voltage from the USB port.
268 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
TCK 1 2 GND
TDO 3 4 NC (FlashPro3/3X); Prog_Mode* (FlashPro4)
TMS 5 6 VJTAG
VPUMP 7 8 TRST
TDI 9 10 GND
Note: *Prog_Mode on FlashPro4 is an output signal that goes High during device programming and
returns to Low when programming is complete. This signal can be used to drive a system to provide
a 1.5 V programming signal to IGLOO nano, ProASIC3L, and RT ProASIC3 devices that can run
with 1.2 V core voltage but require 1.5 V for programming. IGLOO nano V2 devices can be
programmed at 1.2 V core voltage (when using FlashPro4 only), but IGLOO nano V5 devices are
programmed with a VCC core voltage of 1.5 V.
Figure 12-5 • Programming Header (top view)
Revision 5 269
In-System Programming (ISP) of Microsemi’s Low Power Flash Devices Using FlashPro4/3/3X
270 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Board-Level Considerations
A bypass capacitor is required from VPUMP to GND for all low power flash devices during programming.
This bypass capacitor protects the devices from voltage spikes that may occur on the VPUMP supplies
during the erase and programming cycles. Refer to the "Pin Descriptions and Packaging" chapter of the
appropriate device datasheet for specific recommendations. For proper programming, 0.01 µF and 0.33
µF capacitors (both rated at 16 V) are to be connected in parallel across VPUMP and GND, and
positioned as close to the FPGA pins as possible. The bypass capacitor must be placed within 2.5 cm of
the device pins.
VCC
VCCI Polarizing Notch
VJTAG
R R
Note: *NC (FlashPro3/3X); Prog_Mode (FlashPro4). Prog_Mode on FlashPro4 is an output signal that goes High during
device programming and returns to Low when programming is complete. This signal can be used to drive a
system to provide a 1.5 V programming signal to IGLOO nano, ProASIC3L, and RT ProASIC3 devices that can
run with 1.2 V core voltage but require 1.5 V for programming. IGLOO nano V2 devices can be programmed at
1.2 V core voltage (when using FlashPro4 only), but IGLOO nano V5 devices are programmed with a VCC core
voltage of 1.5 V.
Figure 12-6 • Board Layout and Programming Header Top View
Revision 5 271
In-System Programming (ISP) of Microsemi’s Low Power Flash Devices Using FlashPro4/3/3X
errors, but this list is intended to show where problems can occur. FlashPro4/3/3X allows TCK to be
lowered from 6 MHz down to 1 MHz to allow you to address some signal integrity problems that may
occur with impedance mismatching at higher frequencies. Customers are expected to troubleshoot
board-level signal integrity issues by measuring voltages and taking scope plots.
Scan Chain Failure
Normally, the FlashPro4/3/3X Scan Chain command expects to see 0x1 on the TDO pin. If the command
reports reading 0x0 or 0x3, it is seeing the TDO pin stuck at 0 or 1. The only time the TDO pin comes out
of tristate is when the JTAG TAP state machine is in the Shift-IR or Shift-DR state. If noise or reflections
on the TCK or TMS lines have disrupted the correct state transitions, the device's TAP state controller
might not be in one of these two states when the programmer tries to read the device. When this
happens, the output is floating when it is read and does not match the expected data value. This can also
be caused by a broken TDO net. Only a small amount of data is read from the device during the Scan
Chain command, so marginal problems may not always show up during this command. Occasionally a
faulty programmer can cause intermittent scan chain failures.
Exit 11
This error occurs during the verify stage of programming a device. After programming the design into the
device, the device is verified to ensure it is programmed correctly. The verification is done by shifting the
programming data into the device. An internal comparison is performed within the device to verify that all
switches are programmed correctly. Noise induced by poor signal integrity can disrupt the writes and
reads or the verification process and produce a verification error. While technically a verification error, the
root cause is often related to signal integrity.
Refer to the FlashPro User's Guide for other error messages and solutions. For the most up-to-date
known issues and solutions, refer to http://www.microsemi.com/soc/support.
Conclusion
IGLOO, ProASIC3, SmartFusion, and Fusion devices offer a low-cost, single-chip solution that is live at
power-up through nonvolatile flash technology. The FlashLock Pass Key and 128-bit AES Key security
features enable secure ISP in an untrusted environment. On-chip FlashROM enables a host of new
applications, including device serialization, subscription-based applications, and IP addressing.
Additionally, as the FlashROM is nonvolatile, all of these services can be provided without battery
backup.
Related Documents
User’s Guides
FlashPro User's Guide
http://www.microsemi.com/soc/documents/flashpro_ug.pdf
272 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
List of Changes
The following table lists critical changes that were made in each revision of the chapter.
Revision 5 273
In-System Programming (ISP) of Microsemi’s Low Power Flash Devices Using FlashPro4/3/3X
274 R e vi s i o n 5
13 – Core Voltage Switching Circuit for IGLOO and
ProASIC3L In-System Programming
Introduction
The IGLOO® and ProASIC®3L families offer devices that can be powered by either 1.5 V or, in the case
of V2 devices, a core supply voltage anywhere in the range of 1.2 V to 1.5 V, in 50 mV increments.
Since IGLOO and ProASIC3L devices are flash-based, they can be programmed and reprogrammed
multiple times in-system using Microsemi FlashPro3. FlashPro3 uses the JTAG standard interface (IEEE
1149.1) and STAPL file (defined in JESD 71 to support programming of programmable devices using
IEEE 1149.1) for in-system configuration/programming (IEEE 1532) of a device. Programming can also
be executed by other methods, such as an embedded microcontroller that follows the same standards
above.
All IGLOO and ProASIC3L devices must be programmed with the VCC core voltage at 1.5 V. Therefore,
applications using IGLOO or ProASIC3L devices powered by a 1.2 V supply must switch the core supply
to 1.5 V for in-system programming.
The purpose of this document is to describe an easy-to-use and cost-effective solution for switching the
core supply voltage from 1.2 V to 1.5 V during in-system programming for IGLOO and ProASIC3L
devices.
Revision 5 275
Core Voltage Switching Circuit for IGLOO and ProASIC3L In-System Programming
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO devices as listed
in Table 13-1. Where the information applies to only one product line or limited devices, these exclusions
will be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 13-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
276 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Circuit Description
All IGLOO devices as well as the ProASIC3L product family are available in two versions: V5 devices,
which are powered by a 1.5 V supply and V2 devices, which are powered by a supply anywhere in the
range of 1.2 V to 1.5 V in 50 mV increments. Applications that use IGLOO or ProASIC3L devices
powered by a 1.2 V core supply must have a mechanism that switches the core voltage from 1.2 V (or
other voltage below 1.5 V) to 1.5 V during in-system programming (ISP). There are several possible
techniques to meet this requirement. Microsemi recommends utilizing a linear voltage regulator, a
resistor voltage divider, and an N-Channel Digital FET to set the appropriate VCC voltage, as shown in
Figure 13-1.
Where 1.2 V is mentioned in the following text, the meaning applies to any voltage below the 1.5 V
range. Resistor values in the figures have been calculated for 1.2 V, so refer to power regulator
datasheets if a different core voltage is required.
The main component of Microsemi's recommended circuit is the LTC3025 linear voltage regulator from
LinearTech. The output voltage of the LTC3025 on the OUT pin is set by the ratio of two external
resistors, R37 and R38, in a voltage divider. The linear voltage regulator adjusts the voltage on the OUT
pin to maintain the ADJ pin voltage at 0.4 V (referenced to ground). By using an R38 value of 40.2 kΩ
and an R37 value of 80.6 kΩ, the output voltage on the OUT pin is 1.2 V. To achieve 1.5 V on the OUT
pin, R44 can be used in parallel with R38. The OUT pin can now be used as a switchable source for the
VCC supply. Refer to the LTC3025 Linear Voltage Regulator datasheet for more information.
In Figure 13-1, the N-Channel Digital FET is used to enable and disable R44. This FET is controlled by
the JTAG TRST signal driven by the FlashPro3 programmer. During programming of the device, the
TRST signal is driven HIGH by the FlashPro3, and turns the N-Channel Digital FET ON. When the FET is
ON, R44 becomes enabled as a parallel resistance to R38, which forces the regulator to set OUT to
1.5 V.
When the FlashPro3 is connected and not in programming mode or when it is not connected, the pull-
down resistor, R10, will pull the TRST signal LOW. When this signal is LOW, the N-Channel Digital FET
is "open" and R44 is not part of the resistance seen by the LTC3025. The new resistance momentarily
changes the voltage value on the ADJ pin, which in turn causes the output of the LTC3025 to
compensate by setting OUT to 1.2 V. Now the device will run in regular active mode at the regular 1.2 V
core voltage.
Revision 5 277
Core Voltage Switching Circuit for IGLOO and ProASIC3L In-System Programming
Circuit Verification
The power switching circuit recommended above is implemented on Microsemi's Icicle board
(Figure 13-2). On the Icicle board, VJTAGENB is used to control the N-Channel Digital FET; however,
this circuit was modified to use TRST instead of VJTAGENB in this application. There are three important
aspects of this circuit that were verified:
1. The rise on VCC from 1.2 V to 1.5 V when TRST is HIGH
2. VCC rises to 1.5 V before programming begins.
3. VCC switches from 1.5 V to 1.2 V when TRST is LOW.
Verification Steps
1. The rise on VCC from 1.2 V to 1.5 V when TRST is HIGH.
VCC Signal
TRST Signal
In the oscilloscope plots (Figure 13-2), the TRST from FlashPro3 and the VCC core voltage of the
IGLOO device are labeled. This plot shows the rise characteristic of the TRST signal from FlashPro3.
Once the TRST signal is asserted HIGH, the LTC3025 shown in Figure 13-1 on page 277 senses the
increase in voltage and changes the output from 1.2 V to 1.5 V. It takes the circuit approximately 100 µs
to respond to TRST and change the voltage to 1.5 V on the VCC core.
278 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
The oscilloscope plot in Figure 13-3 shows a wider time interval for the programming algorithm and
includes the TDI and TMS signals from the FlashPro3. These signals carry the programming information
that is programmed into the device and should only start toggling after the VCC core voltage reaches 1.5
V. Again, TRST from FlashPro3 and the VCC core voltage of the IGLOO device are labeled. As shown in
Figure 13-3, TDI and TMS are floating initially, and the core voltage is 1.2 V. When a programming
command on the FlashPro3 is executed, TRST is driven HIGH and TDI is momentarily driven to ground.
In response to the HIGH TRST signal, the circuit responds and pulls the core voltage to 1.5 V. After
100 ms, TRST is briefly driven LOW by the FlashPro software. This is expected behavior that ensures
the device JTAG state machine is in Reset prior to programming. TRST remains HIGH for the duration of
the programming. It can be seen in Figure 13-3 that the VCC core voltage signal remains at 1.5 V for
approximately 50 ms before information starts passing through on TDI and TMS. This confirms that the
voltage switching circuit drives the VCC core supply voltage to 1.5 V prior to programming.
Revision 5 279
Core Voltage Switching Circuit for IGLOO and ProASIC3L In-System Programming
TRST Signal
In Figure 13-4, the TRST signal and the VCC core voltage signal are labeled. As TRST is pulled to
ground, the core voltage is observed to switch from 1.5 V to 1.2 V. The observed fall time is
approximately 2 ms.
DirectC
The above analysis is based on FlashPro3, but there are other solutions to ISP, such as DirectC. DirectC
is a microprocessor program that can be run in-system to program Microsemi flash devices. For
FlashPro3, TRST is the most convenient control signal to use for the recommended circuit. However, for
DirectC, users may use any signal to control the FET. For example, the DirectC code can be edited so
that a separate non-JTAG signal can be asserted from the microcontroller that signals the board that it is
about to start programming the device. After asserting the N-Channel Digital FET control signal, the
programming algorithm must allow sufficient time for the supply to rise to 1.5 V before initiating DirectC
programming. As seen in Figure 13-3 on page 279, 50 ms is adequate time. Depending on the size of
the PCB and the capacitance on the VCC supply, results may vary from system to system. Microsemi
recommends using a conservative value for the wait time to make sure that the VCC core voltage is at
the right level.
Conclusion
For applications using IGLOO and ProASIC3L low power FPGAs and taking advantage of the low core
voltage power supplies with less than 1.5 V operation, there must be a way for the core voltage to switch
from 1.2 V (or other voltage) to 1.5 V, which is required during in-system programming. The circuit
explained in this document illustrates one simple, cost-effective way of handling this requirement. A
JTAG signal from the FlashPro3 programmer allows the circuit to sense when programming is in
progress, enabling it to switch to the correct core voltage.
280 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
List of Changes
The following table lists critical changes that were made in each revision of the chapter.
Revision 5 281
14 – Microprocessor Programming of Microsemi’s
Low Power Flash Devices
Introduction
The Fusion, IGLOO, and ProASIC3 families of flash FPGAs support in-system programming (ISP) with
the use of a microprocessor. Flash-based FPGAs store their configuration information in the actual cells
within the FPGA fabric. SRAM-based devices need an external configuration memory, and hybrid
nonvolatile devices store the configuration in a flash memory inside the same package as the SRAM
FPGA. Since the programming of a true flash FPGA is simpler, requiring only one stage, it makes sense
that programming with a microprocessor in-system should be simpler than with other SRAM FPGAs.
This reduces bill-of-materials costs and printed circuit board (PCB) area, and increases system reliability.
Nonvolatile flash technology also gives the low power flash devices the advantage of a secure, low
power, live-at-power-up, and single-chip solution. Low power flash devices are reprogrammable and offer
time-to-market benefits at an ASIC-level unit cost. These features enable engineers to create high-
density systems using existing ASIC or FPGA design flows and tools.
This document is an introduction to microprocessor programming only. To explain the difference between
the options available, user's guides for DirectC and STAPL provide more detail on implementing each
style.
Microprocessor
On-Board
Internal/External
Memory
Memory Running Internal RAM Device
DirectC
.dat file
I/O Functions
JTAG Bus
Flash
Device
Revision 5 283
Microprocessor Programming of Microsemi’s Low Power Flash Devices
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO devices as listed
in Table 14-1. Where the information applies to only one device or limited devices, these exclusions will
be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 14-1. Where the information applies to only one device or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
284 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Programming Algorithm
JTAG Interface
The low power flash families are fully compliant with the IEEE 1149.1 (JTAG) standard. They support all
the mandatory boundary scan instructions (EXTEST, SAMPLE/PRELOAD, and BYPASS) as well as six
optional public instructions (USERCODE, IDCODE, HIGHZ, and CLAMP).
IEEE 1532
The low power flash families are also fully compliant with the IEEE 1532 programming standard. The
IEEE 1532 standard adds programming instructions and associated data registers to devices that comply
with the IEEE 1149.1 standard (JTAG). These instructions and registers extend the capabilities of the
IEEE 1149.1 standard such that the Test Access Port (TAP) can be used for configuration activities. The
IEEE 1532 standard greatly simplifies the programming algorithm, reducing the amount of time needed
to implement microprocessor ISP.
Implementation Overview
To implement device programming with a microprocessor, the user should first download the C-based
STAPL player or DirectC code from the Microsemi SoC Products Group website. Refer to the website for
future updates regarding the STAPL player and DirectC code.
http://www.microsemi.com/soc/download/program_debug/stapl/default.aspx
http://www.microsemi.com/soc/download/program_debug/directc/default.aspx
Using the easy-to-follow user's guide, create the low-level application programming interface (API) to
provide the necessary basic functions. These API functions act as the interface between the
programming software and the actual hardware (Figure 14-2).
Programming
STAPL File Algorithm and Data
Revision 5 285
Microprocessor Programming of Microsemi’s Low Power Flash Devices
Programming
Software Programming
Source Code File
Microprocessor Compiler
BIN File
Download to System
Program Device
FlashROM
Microsemi low power flash devices have 1 kbit of user-accessible, nonvolatile, FlashROM on-chip. This
nonvolatile FlashROM can be programmed along with the core or on its own using the standard IEEE
1532 JTAG programming interface.
The FlashROM is architected as eight pages of 128 bits. Each page can be individually programmed
(erased and written). Additionally, on-chip AES security decryption can be used selectively to load data
securely into the FlashROM (e.g., over public or private networks, such as the Internet). Refer to the
"FlashROM in Microsemi’s Low Power Flash Devices" section on page 117.
286 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Generate the
DirectC Source Code Input STAPL File
New STAPL File
Microprocessor
Download to System
Compiler
Download to System
Program Device
Revision 5 287
Microprocessor Programming of Microsemi’s Low Power Flash Devices
Hardware Requirement
To facilitate the programming of the low power flash families, the system must have a microprocessor
(with access to the device JTAG pins) to process the programming algorithm, memory to store the
programming algorithm, programming data, and the necessary programming voltage. Refer to the
relevant datasheet for programming voltages.
Security
Encrypted Programming
As an additional security measure, the devices are equipped with AES decryption. AES works in two
steps. The first step is to program a key into the devices in a secure or trusted programming center (such
as Microsemi SoC Products Group In-House Programming (IHP) center). The second step is to encrypt
any programming files with the same encryption key. The encrypted programming file will only work with
the devices that have the same key. The AES used in the low power flash families is the 128-bit AES
decryption engine (Rijndael algorithm).
288 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
useless to the thief. To learn more about the low power flash devices’ security features, refer to the
"Security in Low Power Flash Devices" section on page 235.
ProASIC3
MAC
Validation
Programming
AES AES Control
Encryption Decryption
TCP/IP
Public Network
Conclusion
The Fusion, IGLOO, and ProASIC3 FPGAs are ideal for applications that require field upgrades. The
single-chip devices save board space by eliminating the need for EEPROM. The built-in AES with MAC
enables transmission of programming data over any network without fear of design theft. Fusion, IGLOO,
and ProASIC3 FPGAs are IEEE 1532–compliant and support STAPL, making the target programming
software easy to implement.
Revision 5 289
Microprocessor Programming of Microsemi’s Low Power Flash Devices
List of Changes
The following table lists critical changes that were made in each revision of the chapter.
290 R e vi s i o n 5
15 – Boundary Scan in Low Power Flash Devices
Boundary Scan
Low power flash devices are compatible with IEEE Standard 1149.1, which defines a hardware
architecture and the set of mechanisms for boundary scan testing. JTAG operations are used during
boundary scan testing.
The basic boundary scan logic circuit is composed of the TAP controller, test data registers, and
instruction register (Figure 15-2 on page 294).
Low power flash devices support three types of test data registers: bypass, device identification, and
boundary scan. The bypass register is selected when no other register needs to be accessed in a device.
This speeds up test data transfer to other devices in a test data path. The 32-bit device identification
register is a shift register with four fields (LSB, ID number, part number, and version). The boundary scan
register observes and controls the state of each I/O pin. Each I/O cell has three boundary scan register
cells, each with serial-in, serial-out, parallel-in, and parallel-out pins.
TEST_LOGIC_RESET
0
0
1 1 1
RUN_TEST_IDLE SELECT_DR SELECT_IR
0 0
1 1
CAPTURE_DR CAPTURE_IR
0 0
0 0
SHIFT_DR SHIFT_IR
1 1
1 1
EXIT1_DR EXIT1_IR
0 0
0 0
PAUSE_DR PAUSE_IR
1 1
EXIT2_DR EXIT2_IR
0 0
1 1
UPDATE_DR UPDATE_IR
1 0 1 0
Revision 5 291
Boundary Scan in Low Power Flash Devices
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO devices as listed
in Table 15-1. Where the information applies to only one product line or limited devices, these exclusions
will be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 15-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
292 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 293
Boundary Scan in Low Power Flash Devices
Test Data
Registers
TDI
Bypass Register
I/O
TCK
I/O
TAP Instruction Device
TMS
I/O
TRST
I/O
TDO
Board-Level Recommendations
Table 15-3 gives pull-down recommendations for the TRST and TCK pins.
294 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
1.5 V
VJTAG
JTAG TRST
Header TCK GND
2 kΩ
Microsemi TDO 1.5 kΩ
TDI FPGA 1
2 kΩ
Microsemi TDO 1.5 kΩ
TDI FPGA 2
2 kΩ
Microsemi TDO 1.5 kΩ
TDI FPGA3
2 kΩ
Microsemi TDO 1.5 kΩ
TDI FPGA 4
Note: TCK is correctly wired with an equivalent tie-off resistance of 500 Ω, which satisfies the table for
VJTAG of 1.5 V. The resistor values for TRST are not appropriate in this case, as the tie-off
resistance of 375 Ω is below the recommended minimum for VJTAG = 1.5 V, but would be
appropriate for a VJTAG setting of 2.5 V or 3.3 V.
Figure 15-3 • Parallel Resistance on JTAG Chain of Devices
Revision 5 295
Boundary Scan in Low Power Flash Devices
List of Changes
The following table lists critical changes that were made in each revision of the chapter.
296 R e vi s i o n 5
16 – UJTAG Applications in Microsemi’s Low
Power Flash Devices
Introduction
In Fusion, IGLOO, and ProASIC3 devices, there is bidirectional access from the JTAG port to the core
VersaTiles during normal operation of the device (Figure 16-1). User JTAG (UJTAG) is the ability for the
design to use the JTAG ports for access to the device for updates, etc. While regular JTAG is used, the
UJTAG tiles, located at the southeast area of the die, are directly connected to the JTAG Test Access
Port (TAP) Controller in normal operating mode. As a result, all the functional blocks of the device, such
as Clock Conditioning Circuits (CCCs) with PLLs, SRAM blocks, embedded FlashROM, flash memory
blocks, and I/O tiles, can be reached via the JTAG ports. The UJTAG functionality is available by
instantiating the UJTAG macro directly in the source code of a design. Access to the FPGA core
VersaTiles from the JTAG ports enables users to implement different applications using the TAP
Controller (JTAG port). This document introduces the UJTAG tile functionality and discusses a few
application examples. However, the possible applications are not limited to what is presented in this
document. UJTAG can serve different purposes in many designs as an elementary or auxiliary part of the
design. For detailed usage information, refer to the "Boundary Scan in Low Power Flash Devices"
section on page 291.
UJTAG
Address Generation and
Data Serlialization
UIREG[7:0] Enable
FROM
RESET
TDO
URSTB Addr[6:0]
Control Addr [6:0]
TDI UDRUPD
UDRCK CLK
TMS Data[7:0] Data[7:0]
UDRCAP SDI
TCK UDRSH SDO
UTDI
TRST
UTDO
Revision 5 297
UJTAG Applications in Microsemi’s Low Power Flash Devices
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO devices as listed
in Table 16-1. Where the information applies to only one product line or limited devices, these exclusions
will be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 16-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
298 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
UJTAG Macro
The UJTAG tiles can be instantiated in a design using the UJTAG macro from the Fusion, IGLOO, or
ProASIC3 macro library. Note that "UJTAG" is a reserved name and cannot be used for any other user-
defined blocks. A block symbol of the UJTAG tile macro is presented in Figure 16-2. In this figure, the
ports on the left side of the block are connected to the JTAG TAP Controller, and the right-side ports are
accessible by the FPGA core VersaTiles. The TDI, TMS, TDO, TCK, and TRST ports of UJTAG are only
provided for design simulation purposes and should be treated as external signals in the design netlist.
However, these ports must NOT be connected to any I/O buffer in the netlist. Figure 16-3 on page 300
illustrates the correct connection of the UJTAG macro to the user design netlist. Microsemi Designer
software will automatically connect these ports to the TAP during place-and-route. Table 16-2 gives the
port descriptions for the rest of the UJTAG ports:
UIREG0
UIREG1
UIREG2
UIREG3
TDO UIREG4
UIREG5
TDI UIREG6
UIREG7
TMS URSTB
UDRUPD
TCK
UDRCK
TRST UDRCAP
UDRSH
UTDI
UTDO
Revision 5 299
UJTAG Applications in Microsemi’s Low Power Flash Devices
a) CORRECT Instantiation
UIREG[7:0]
TDO
URSTB
TDI INPUTS
UDRUPD
TMS UDRCK FPGA
VersaTiles
UDRCAP
TCK
UDRSH
TRST UTDI
UTDO OUTPUTS
b) INCORRECT Instantiation
UIREG[7:0]
TDO
URSTB
TDI INPUTS
UDRUPD
TMS UDRCK FPGA
VersaTiles
UDRCAP
TCK
UDRSH
TRST UTDI
UTDO OUTPUTS
Note: Do not connect JTAG pins (TDO, TDI, TMS, TCK, or TRST) to I/Os in the design.
Figure 16-3 • Connectivity Method of UJTAG Macro
UJTAG Operation
There are a few basic functions of the UJTAG macro that users must understand before designing with it.
The most important fundamental concept of the UJTAG design is its connection with the TAP Controller
state machine.
300 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
1 Test_Logic_Reset
0
Run_Test/ 1 Select_ 1 Select_ 1
0 Idle IR_Scan
DR_Scan
0 0
1 1
Capture_DR Capture_IR
0 0
Shift_DR 0 Shift_IR 0
1 1
1 1
Exit1_DR Exit1_IR
0 0
Pause_DR 0 Pause_IR 0
1 1
0 0
Exit2_DR Exit2_IR
1 1
Update_DR Update_IR
1 0 1 0
Revision 5 301
UJTAG Applications in Microsemi’s Low Power Flash Devices
The embedded 81-bit shift register (for the dynamic configuration of the CCC) is accessible to the
VersaTiles, which, in turn, have access to the UJTAG tiles. Therefore, the CCC configuration shift
register can receive and load the new configuration data stream from JTAG.
Dynamic reconfiguration eliminates the need to reprogram the device when reconfiguration of the CCC
functional blocks is needed. The CCC configuration can be modified while the device continues to
operate. Employing the UJTAG core requires the user to design a module to provide the configuration
data and control the CCC configuration shift register. In essence, this is a user-designed TAP Controller
requiring chip resources.
Similar reconfiguration capability exists in the ProASICPLUS® family. The only difference is the number of
shift register bits controlling the CCC (27 in ProASICPLUS and 81 in IGLOO, ProASIC3, and Fusion).
302 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Fine Tuning
In some applications, design constants or parameters need to be modified after programming the original
design. The tuning process can be done using the UJTAG tile without reprogramming the device with
new values. If the parameters or constants of a design are stored in distributed registers or embedded
SRAM blocks, the new values can be shifted onto the JTAG TAP Controller pins, replacing the old
values. The UJTAG tile is used as the “bridge” for data transfer between the JTAG pins and the FPGA
VersaTiles or SRAM logic. Figure 16-5 shows a flow chart example for fine-tuning application steps using
the UJTAG tile.
In Figure 16-5, the TMS signal sets the TAP Controller state machine to the appropriate states. The flow
mainly consists of two steps: a) shifting the defined instruction and b) shifting the new data. If the target
parameter is constantly used in the design, the new data can be shifted into a temporary shift register
from UTDI. The UDRSH output of UJTAG can be used as a shift-enable signal, and UDRCK is the shift
clock to the shift register. Once the shift process is completed and the TAP Controller state is moved to
the Update_DR state, the UDRUPD output of the UJTAG can latch the new parameter value from the
temporary register into a permanent location. This avoids any interruption or malfunctioning during the
serial shift of the new value.
TAP Controller in
Test_Logic_Reset
State
Set TAP state to
SHIFT_DR
No
Revision 5 303
UJTAG Applications in Microsemi’s Low Power Flash Devices
UIREG[7:0] Instruction
Decode
To Scope Channel
TDO URSTB
TDI UDRUPD
UDRCK D Q
TMS
UDRCAP
TCK UDRSH CLK
UTDI
TRST
UTDO
304 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
SRAM Initialization
Users can also initialize embedded SRAMs of the low power flash devices. The initialization of the
embedded SRAM blocks of the design can be done using UJTAG tiles, where the initialization data is
imported using the TAP Controller. Similar functionality is available in ProASICPLUS devices using JTAG.
The guidelines for implementation and design examples are given in the RAM Initialization and ROM
Emulation in ProASICPLUS Devices application note.
SRAMs are volatile by nature; data is lost in the absence of power. Therefore, the initialization process
should be done at each power-up if necessary.
UJTAG
Address Generation and
Data Serlialization
UIREG[7:0] Enable
FROM
RESET
TDO
URSTB Addr[6:0]
Control Addr [6:0]
TDI UDRUPD
UDRCK CLK
TMS Data[7:0] Data[7:0]
UDRCAP SDI
TCK UDRSH SDO
UTDI
TRST
UTDO
Revision 5 305
UJTAG Applications in Microsemi’s Low Power Flash Devices
Conclusion
Microsemi low power flash FPGAs offer many unique advantages, such as security, nonvolatility,
reprogrammablity, and low power—all in a single chip. In addition, Fusion, IGLOO, and ProASIC3
devices provide access to the JTAG port from core VersaTiles while the device is in normal operating
mode. A wide range of available user-defined JTAG opcodes allows users to implement various types of
applications, exploiting this feature of these devices. The connection between the JTAG port and core
tiles is implemented through an embedded and hardwired UJTAG tile. A UJTAG tile can be instantiated in
designs using the UJTAG library cell. This document presents multiple examples of UJTAG applications,
such as dynamic reconfiguration, silicon test and debug, fine-tuning of the design, and RAM initialization.
Each of these applications offers many useful advantages.
Related Documents
Application Notes
RAM Initialization and ROM Emulation in ProASICPLUS Devices
http://www.microsemi.com/soc/documents/APA_RAM_Initd_AN.pdf
List of Changes
The following table lists critical changes that were made in each revision of the chapter.
306 R e vi s i o n 5
17 – Power-Up/-Down Behavior of Low Power
Flash Devices
Introduction
Microsemi’s low power flash devices are flash-based FPGAs manufactured on a 0.13 µm process node.
These devices offer a single-chip, reprogrammable solution and support Level 0 live at power-up (LAPU)
due to their nonvolatile architecture.
Microsemi's low power flash FPGA families are optimized for logic area, I/O features, and performance.
IGLOO® devices are optimized for power, making them the industry's lowest power programmable
solution. IGLOO PLUS FPGAs offer enhanced I/O features beyond those of the IGLOO ultra-low power
solution for I/O-intensive low power applications. IGLOO nano devices are the industry's lowest-power
cost-effective solution. ProASIC3®L FPGAs balance low power with high performance. The ProASIC3
family is Microsemi's high-performance flash FPGA solution. ProASIC3 nano devices offer the lowest-
cost solution with enhanced I/O capabilities.
Microsemi’s low power flash devices exhibit very low transient current on each power supply during
power-up. The peak value of the transient current depends on the device size, temperature, voltage
levels, and power-up sequence.
The following devices can have inputs driven in while the device is not powered:
• IGLOO (AGL015 and AGL030)
• IGLOO nano (all devices)
• IGLOO PLUS (AGLP030, AGLP060, AGLP125)
• IGLOOe (AGLE600, AGLE3000)
• ProASIC3L (A3PE3000L)
• ProASIC3 (A3P015, A3P030)
• ProASIC3 nano (all devices)
• ProASIC3E (A3PE600, A3PE1500, A3PE3000)
• Military ProASIC3EL (A3PE600L, A3PE3000L, but not A3P1000)
• RT ProASIC3 (RT3PE600L, RT3PE3000L)
The driven I/Os do not pull up power planes, and the current draw is limited to very small leakage current,
making them suitable for applications that require cold-sparing. These devices are hot-swappable,
meaning they can be inserted in a live power system.1
1. For more details on the levels of hot-swap compatibility in Microsemi’s low power flash devices, refer to the "Hot-Swap
Support" section in the I/O Structures chapter of the FPGA fabric user’s guide for the device you are using.
Revision 5 307
Power-Up/-Down Behavior of Low Power Flash Devices
IGLOO Terminology
In documentation, the terms IGLOO series and IGLOO devices refer to all of the IGLOO devices as listed
in Table 17-1. Where the information applies to only one product line or limited devices, these exclusions
will be explicitly stated.
ProASIC3 Terminology
In documentation, the terms ProASIC3 series and ProASIC3 devices refer to all of the ProASIC3 devices
as listed in Table 17-1. Where the information applies to only one product line or limited devices, these
exclusions will be explicitly stated.
To further understand the differences between the IGLOO and ProASIC3 devices, refer to the Industry’s
Lowest Power FPGAs Portfolio.
308 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
2. For more information on Microsemi FPGA voltage supplies, refer to the appropriate datasheet located at
http://www.microsemi.com/soc/techdocs/ds.
Revision 5 309
Power-Up/-Down Behavior of Low Power Flash Devices
System Active
Supply Frequency
Current
Voltage Dependent
Configuration
SRAM FPGAs
Static
310 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Revision 5 311
Power-Up/-Down Behavior of Low Power Flash Devices
Microsemi’s low power flash devices meet Level 0 LAPU; that is, they can be functional prior to VCC
reaching the regulated voltage required. This important advantage distinguishes low power flash devices
from their SRAM-based counterparts. SRAM-based FPGAs, due to their volatile technology, require
hundreds of milliseconds after power-up to configure the design bitstream before they become
functional. Refer to Figure 17-4 on page 313 and Figure 17-5 on page 314 for more information.
312 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
VCC = VCCI + VT
Where VT can be from 0.58 V to 0.9 V (typically 0.75 V)
VCC
VCC = 1.575 V
VCC = 1.425 V
Region 2: I/O buffers are ON. Region 3: I/O buffers are ON.
I/Os are functional (except differential inputs) I/Os are functional; I/O DC
but slower because VCCI / VCC are below specifications are met,
specification. For the same reason, input but I/Os are slower because
buffers do not meet VIH / VIL levels, and the VCC is below specification
output buffers do not meet VOH / VOL levels.
Activation trip point:
Va = 0.85 V ± 0.25 V
Deactivation trip point:
Region 1: I/O buffers are OFF
Vd = 0.75 V ± 0.25 V
Figure 17-4 • I/O State as a Function of VCCI and VCC Voltage Levels for IGLOO V5, IGLOO nano V5,
IGLOO PLUS V5, ProASIC3L, and ProASIC3 Devices Running at VCC = 1.5 V ± 0.075 V
Revision 5 313
Power-Up/-Down Behavior of Low Power Flash Devices
VCC = VCCI + VT
where VT can be from 0.58 V to 0.9 V (typically 0.75 V)
VCC
VCC = 1.575 V
VCC = 1.14 V
Region 2: I/O buffers are ON.
Region 3: I/O buffers are ON.
I/Os are functional (except differential inputs)
I/Os are functional; I/O DC
but slower because VCCI/VCC are below specifications are met,
specification. For the same reason, input but I/Os are slower because
buffers do not meet VIH/VIL levels, and the VCC is below specification.
output buffers do not meet VOH/VOL levels.
Activation trip point:
Va = 0.85 V ± 0.2 V
Deactivation trip point:
Region 1: I/O buffers are OFF
Vd = 0.75 V ± 0.2 V
Figure 17-5 • I/O State as a Function of VCCI and VCC Voltage Levels for IGLOO V2, IGLOO nano V2,
IGLOO PLUS V2, and ProASIC3L Devices Running at VCC = 1.2 V ± 0.06 V
314 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Brownout Voltage
Brownout is a condition in which the voltage supplies are lower than normal, causing the device to
malfunction as a result of insufficient power. In general, Microsemi does not guarantee the functionality of
the design inside the flash FPGA if voltage supplies are below their minimum recommended operating
condition. Microsemi has performed measurements to characterize the brownout levels of FPGA power
supplies. Refer to Table 17-3 for device-specific brownout deactivation levels. For the purpose of
characterization, a direct path from the device input to output is monitored while voltage supplies are
lowered gradually. The brownout point is defined as the voltage level at which the output stops following
the input. Characterization tests performed on several IGLOO, ProASIC3L, and ProASIC3 devices in
typical operating conditions showed the brownout voltage levels to be within the specification.
During device power-down, the device I/Os become tristated once the first supply in the power-down
sequence drops below its brownout deactivation voltage.
Table 17-3 • Brownout Deactivation Levels for VCC and VCCI
VCC Brownout VCCI Brownout
Devices Deactivation Level (V) Deactivation Level (V)
ProASIC3, ProASIC3 nano, IGLOO, IGLOO nano, 0.75 V ± 0.25 V 0.8 V ± 0.3 V
IGLOO PLUS and ProASIC3L devices running at
VCC = 1.5 V
IGLOO, IGLOO nano, IGLOO PLUS, and 0.75 V ± 0.2 V 0.8 V ± 0.15 V
ProASIC3L devices running at VCC = 1.2 V
Revision 5 315
Power-Up/-Down Behavior of Low Power Flash Devices
Cold-Sparing
In cold-sparing applications, voltage can be applied to device I/Os before and during power-up. Cold-
sparing applications rely on three important characteristics of the device:
1. I/Os must be tristated before and during power-up.
2. Voltage applied to the I/Os must not power up any part of the device.
3. VCCI should not exceed 3.6 V, per datasheet specifications.
As described in the "Power-Up to Functional Time" section on page 312, Microsemi’s low power flash
I/Os are tristated before and during power-up until the last voltage supply (VCC or VCCI) is powered up
past its functional level. Furthermore, applying voltage to the FPGA I/Os does not pull up VCC or VCCI
and, therefore, does not partially power up the device. Table 17-4 includes the cold-sparing test results
on A3PE600-PQ208 devices. In this test, leakage current on the device I/O and residual voltage on the
power supply rails were measured while voltage was applied to the I/O before power-up.
Table 17-4 • Cold-Sparing Test Results for A3PE600 Devices
Residual Voltage (V)
Device I/O VCC VCCI Leakage Current
Input 0 0.003 <1 µA
Output 0 0.003 <1 µA
VCCI must not exceed 3.6 V, as stated in the datasheet specification. Therefore, ProASIC3E devices
meet all three requirements stated earlier in this section and are suitable for cold-sparing applications.
The following devices and families support cold-sparing:
• IGLOO: AGL015 and AGL030
• All IGLOO nano
• All IGLOO PLUS
• All IGLOOe
• ProASIC3L: A3PE3000L
• ProASIC3: A3P015 and A3P030
• All ProASIC3 nano
• All ProASIC3E
• Military ProASIC3EL: A3PE600L and A3PE3000L
• RT ProASIC3: RT3PE600L and RT3PE3000L
316 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
Hot-Swapping
Hot-swapping is the operation of hot insertion or hot removal of a card in a powered-up system. The I/Os
need to be configured in hot-insertion mode if hot-swapping compliance is required. For more details on
the levels of hot-swap compatibility in low power flash devices, refer to the "Hot-Swap Support" section in
the I/O Structures chapter of the user’s guide for the device you are using.
The following devices and families support hot-swapping:
• IGLOO: AGL015 and AGL030
• All IGLOO nano
• All IGLOO PLUS
• All IGLOOe
• ProASIC3L: A3PE3000L
• ProASIC3: A3P015 and A3P030
• All ProASIC3 nano
• All ProASIC3E
• Military ProASIC3EL: A3PE600L and A3PE3000L
• RT ProASIC3: RT3PE600L and RT3PE3000L
The following devices and families do not support hot-swapping:
• IGLOO: AGL060, AGL125, AGL250, AGL400, AGL600, AGL1000
• ProASIC3: A3P060, A3P125, A3P250, A3P400, A3P600, A3P1000
• ProASIC3L: A3P250L, A3P600L, A3P1000L
• Military ProASIC3: A3P1000
Conclusion
Microsemi's low power flash FPGAs provide an excellent programmable logic solution for a broad range
of applications. In addition to high performance, low cost, security, nonvolatility, and single chip, they are
live at power-up (meet Level 0 of the LAPU classification) and offer clear and easy-to-use power-up/-
down characteristics. Unlike SRAM FPGAs, low power flash devices do not require any specific power-
up/-down sequencing and have extremely low power-up inrush current in any power-up sequence.
Microsemi low power flash FPGAs also support both cold-sparing and hot-swapping for applications
requiring these capabilities.
Revision 5 317
Power-Up/-Down Behavior of Low Power Flash Devices
Related Documents
Datasheets
ProASIC3 Flash Family FPGAs
http://www.microsemi.com/soc/documents/PA3_DS.pdf
ProASIC3E Flash Family FPGAs
http://www.microsemi.com/soc/documents/PA3E_DS.pdf
List of Changes
The following table lists critical changes that were made in each revision of the chapter.
318 R e vi s i o n 5
A – Summary of Changes
Revision 5 319
Summary of Changes
320 R e vi s i o n 5
B – Product Support
Microsemi SoC Products Group backs its products with various support services, including Customer
Service, Customer Technical Support Center, a website, electronic mail, and worldwide sales offices.
This appendix contains information about contacting Microsemi SoC Products Group and using these
support services.
Customer Service
Contact Customer Service for non-technical product support, such as product pricing, product upgrades,
update information, order status, and authorization.
From North America, call 800.262.1060
From the rest of the world, call 650.318.4460
Fax, from anywhere in the world, 650.318.8044
Technical Support
Visit the Customer Support website (www.microsemi.com/soc/support/search/default.aspx) for more
information and support. Many answers available on the searchable web resource include diagrams,
illustrations, and links to other resources on the website.
Website
You can browse a variety of technical and non-technical information on the SoC home page, at
www.microsemi.com/soc.
Email
You can communicate your technical questions to our email address and receive answers back by email,
fax, or phone. Also, if you have design problems, you can email your design files to receive assistance.
We constantly monitor the email account throughout the day. When sending your request to us, please
be sure to include your full name, company name, and your contact information for efficient processing of
your request.
The technical support email address is [email protected].
Revision 5 321
Product Support
My Cases
Microsemi SoC Products Group customers may submit and track technical cases online by going to My
Cases.
322 R e vi s i o n 5
Index
Revision 5 323
Index
L
G
layout
global architecture 31
device-specific 78
global buffers
LTC3025 linear voltage regulator 277
no programmable delays 64
with PLL function 67
with programmable delays 64 M
global macros MAC validation/authentication 288
Synplicity 50 macros
globals CLKBUF 77
designer flow 53 CLKBUF_LVDS/LVPECL 77
networks 58 CLKDLY 65, 73
spines and rows 41 FIFO4KX18 141
PLL 73
PLL macro signal descriptions 68
H RAM4K9 137
HLD code RAM512X18 139
instantiating 192
supported basic RAM macros 136
hot-swap 167 UJTAG 299
hot-swapping 317 MCU FPGA programming model 286
memory availability 146
I memory blocks 135
I/O banks microprocessor programming 283
standards 40 Microsemi SoC Products Group
standards compatibility 162 email 321
I/O standards 77 web-based technical support 321
global macros 46 website 321
single-ended 166
I/Os O
assigning technologies 198
OTP 223
assignments defined in PDC file 193
output slew rate 175
automatically assigning 202
behavior at power-up/-down 311
board-level considerations 181 P
buffer schematic cell 191 PDC
cell architecture 207 global promotion and demotion 51
configuration with SmartGen 188 place-and-route 193
features 163, 164, 167 PLL
global, naming 35 behavior at brownout condition 315
manually assigning technologies 198 configuration bits 90
nano standard 162 core specifications 84
register combining 174 dynamic PLL configuration 87
simplified buffer circuitry 165 functional description 85
software support 177 power supply decoupling scheme 112
software-controlled attributes 187 PLL block signals 68
user I/O assignment flow chart 185 PLL macro block diagram 69
user naming convention 178 product support
wide range support 166 customer service 321
324 R e vi s i o n 5
ProASIC3 nano FPGA Fabric User’s Guide
R U
RAM UJTAG
memory block consumption 147 CCC dynamic reconfiguration 302
remote upgrade via TCP/IP 288 fine tuning 303
routing structure 18 macro 299
operation 300
port usage 301
S use to read FlashROM contents 297
Schmitt trigger 174 ultra-fast local lines 18
security 264
architecture 237
encrypted programming 288
V
examples 242 variable aspect ratio and cascading 145
features 238 VersaNet global networks 33
FlashLock 241 VersaTile 15
FlashROM 121 very-long-line resources 19
FlashROM use models 245 ViewDraw 191
in programmable logic 235 VREF pins
overview 235 manually assigning 199
signal integrity problem 271
silicon testing 304 W
single tile designs 159 weak pull-down 175
SmartGen 154 weak pull-up 175
spine architecture 41 web-based technical support 321
Revision 5 325
Microsemi Corporation (NASDAQ: MSCC) offers a comprehensive portfolio of semiconductor
solutions for: aerospace, defense and security; enterprise and communications; and industrial
and alternative energy markets. Products include high-performance, high-reliability analog
and RF devices, mixed signal and RF integrated circuits, customizable SoCs, FPGAs, and
complete subsystems. Microsemi is headquartered in Aliso Viejo, Calif. Learn more at
www.microsemi.com.
Microsemi Corporate Headquarters
One Enterprise, Aliso Viejo CA 92656 USA © 2012 Microsemi Corporation. All rights reserved. Microsemi and the Microsemi logo are trademarks of
Within the USA: +1 (949) 380-6100 Microsemi Corporation. All other trademarks and service marks are the property of their respective owners.
Sales: +1 (949) 380-6136
Fax: +1 (949) 215-4996
50200255-5/9.12