AN81623 PSoC 3, PSoC 4, and PSoC 5LP Digital Design Best Practices.pdf

AN81623
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Authors: Todd Dust, Mark Ainsworth
Associated Project: No
Associated Part Family: All PSoC 3 and PSoC 5LP parts, and PSoC 4 4200 family
Software Version: PSoC Creator™ 2.2 SP1 and higher
For a complete list of the application notes, click here.
To get the latest version of this application note, or the associated project file, please visit
http://www.cypress.com/go/AN81623.
AN81623 gives a brief introduction to the digital hardware design theory and then describes the powerful and highly
flexible digital subsystems in PSoC 3, PSoC 4 (4200 family), and PSoC 5LP. It describes best practices for digital design
using PSoC Creator, and shows how to use static timing analysis (STA) report files.
Contents
Introduction
Introduction .......................................................................1
What is Digital Design? .....................................................2
Digital Design Basic Concepts .....................................2
Methods of Digital Design.............................................3
Timing Issues in Digital Design ....................................5
Digital Design in PSoC ......................................................7
PSoC Digital Subsystem ..............................................7
PSoC 3 and PSoC 5LP Clocks.....................................8
Synchronization in PSoC ............................................ 11
PSoC Creator Static Timing Analysis (STA) ............... 12
PSoC Digital Design Considerations ............................... 13
Topic #1: Component Datasheet Specifications ......... 13
Topic #2: Using Clocks ............................................... 13
Topic #3: Control Registers ........................................ 17
Topic #4: Don‟t Make Latches .................................... 17
Topic #5: Using Digital Function Components............ 18
Topic #6: Interface with Pins ...................................... 19
Topic #7: Interface with Fixed Blocks ......................... 20
Using the PSoC Creator STA Report .............................. 21
Setting STA Temperature Conditions ......................... 21
Finding the STA Report .............................................. 21
Elements of an STA Report ........................................ 21
Using the STA Report to Remove Warnings .............. 28
Clock Nominal and Required Frequencies ................. 33
Hold, Recovery and Removal Violations .................... 35
Summary ......................................................................... 35
Related Application Notes ............................................... 36
Worldwide Sales and Design Support ............................. 38
PSoC 3, PSoC 4, and PSoC 5LP have a powerful and
flexible programmable digital peripheral system. In
addition to a set of fixed function blocks (4 timers, I2C,
USB, CAN), they offer as many as 24 programmable
Universal Digital Blocks (UDBs) and an extensive signal
routing system called the Digital System Interconnect
(DSI). Figure 1 shows how these systems are located and
used in some of the PSoC devices.
www.cypress.com
Figure 1. PSoC 3 and PSoC 5LP Programmable Digital
Architecture
Timer
Counters
CAN
Interrupt
Controller
I2C
DMA
Controller
IO Port
Pins
Global
Clocks
Digital System Routing I/F
UDB ARRAY
Digital System Routing I/F
Global
Clocks
IO Port
Pins
Document No. 001-81623 Rev. *D
EMIF
Del-Sig
SC/CT
Blocks
DACs
Comparators
1
Submit Document Feedback
Each UDB contains two small programmable logic devices
(PLDs), a datapath module containing a programmable 8bit ALU, and other registers and functions, as Figure 2
shows.
Figure 2. PSoC 3 and PSoC 5LP UDB Block Diagram
PLD
Chaining
Clock
and Reset
Control
Status and
Control
PLD
12C4
(8 PTs)
PLD
12C4
(8 PTs)
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
A list of more advanced PSoC digital design resources is
given in Related Application Notes.
Note The examples shown in this application note are
designed to produce, under most conditions, the static
timing analysis (STA) warnings indicated. However, in
some cases, depending on routing and placement, and
clock frequencies, a warning may not always be
generated. This is especially true for PSoC Creator 2.1,
which adds a timing-driven placement (TDP) feature.
What is Digital Design?
Datapath
Datapath
Chaining
Routing Channel
By programming the UDB PLDs and datapaths, and
routing signals within and between UDBs, you can make
complex custom peripherals that significantly de-burden
the CPU. Additional routing in the DSI allows these
peripherals to interface with other PSoC elements such as
I/O pins, DMA and the analog system, as shown in
Figure 1.
The PSoC Creator IDE offers a large library of
preprogrammed peripherals and enables you to create
your own custom designs.
The configurability of PSoC allows unprecedented
opportunities to optimize your design at the system level.
However, it also exposes a whole new set of design
considerations that a traditional MCU user may not be
aware of. This application note provides information on a
variety of digital design topics for PSoC 3 and PSoC 5LP.
This application note assumes that you are familiar with
developing applications using PSoC Creator for PSoC 3,
PSoC 4, or PSoC 5LP. If you are new to these products,
introductions can be found in AN54181, Getting Started
with PSoC 3, AN79953, Getting Started with PSoC 4, and
AN77759, Getting Started with PSoC 5LP. If you are new
to PSoC Creator, see the PSoC Creator home page.
If you are new to digital design principles in general, basic
concepts are explained in the section What is Digital
Design?
If you are familiar with digital design principles and want to
see how they are addressed in PSoC devices using PSoC
Creator, see the sections Digital Design in PSoC and
PSoC Digital Design Considerations.
If you have worked only in the MCU domain, you may not
have needed to deal directly with low-level digital design
problems. This is because today‟s MCUs are highly
integrated – most, if not all, of the memory and peripherals
are located inside the chip with the CPU. The only thing
that you have to do is write the code for the CPU to
access the memory or peripheral register addresses in the
correct manner.
Different from traditional MCUs, PSoC 3 and PSoC 5LP
enable you to design your own custom peripherals out of
general-purpose digital (and analog) building blocks.
However, before you do this, it is helpful to know some
digital design basic concepts.
All of the discussions in the rest of this application note are
ultimately based on the simple concepts described in this
section.
Digital Design Basic Concepts
The digital design process is actually similar to writing
firmware for CPUs, with the advantage that digital designs
can operate much faster than CPUs. For example,
consider a case where you want to turn on an indicator
LED when one condition is true (logic high or “1”) and
another is false (logic low or “0”). You can write C code to
do the function:
if (GetInput1() && !GetInput2())
{
SetOutput(1); // turn on the LED
}
else
{
SetOutput(0); // turn off the LED
}
which may take many CPU cycles to execute.
However, instead of writing CPU code, you can simply
build the function using low-level logic gates, as Figure 3
shows:
For specific information on how to read a PSoC Creator
STA report file, see Using the PSoC Creator STA Report.
www.cypress.com
Document No. 001-81623 Rev. *D
2
Submit Document Feedback
Figure 3. Example Digital Logic Function
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Methods of Digital Design
Users of traditional MCUs may program the MCUs at
multiple levels:
Unlike other MCUs, you can draw the design shown in
Figure 3 in a PSoC Creator project schematic, and then
program and directly implement it in a PSoC device. The
only delays are from the pins, gates and routing, which are
in the order of nanoseconds. Of course, no CPU cycles
are required.
Registers and DFFs
There is a problem with the design in Figure 3: if the inputs
change quickly or simultaneously, you may get unwanted
glitching on the output. To reduce the possibility of that
happening, we use a clocked register (also known as a
“D flip-flop”, or “DFF”), as Figure 4 shows:
Figure 4. Example Clocked Digital Logic Function

Assembler: highly optimized code at the cost of low
coding efficiency and non-portability. Usually done
only for specific modules.

C: good coding efficiency and portability. The most
frequently used language for coding MCUs.

Object-oriented language (Java, C++, etc): allows
definition of custom objects for easy reuse and high
coding efficiency. Usually available only on higher-end
MCUs, such as 32-bit, with at least 256 K of memory.
Similarly, digital design can be done at multiple levels:

Gate-level: wiring individual gates (AND, OR, XOR,
NOT) and DFFs to perform logic functions. PSoC
Creator offers gate symbols for all of the logic
functions, and also, at a slightly higher level, offers a
Lookup Table (LUT) Component.
Using a LUT makes it easier to design complex logic
functions without wiring individual gates. You can also
easily design state machines without programming an
MCU. Figure 5 shows a 2-bit counter with reset, as an
example:
Figure 5. LUT-Based State Machine Design
DFF input “d”
DFF output “q”
DFF clock
The output “q” of the register changes only when the
“clock” input transitions from 0 to 1, that is, at the “rising
edge”. The output becomes the same as the value at the
input “d”, and stays at that value until the next rising edge
of the clock.
A clock is usually a continually running square wave of a
fixed frequency and 50% duty cycle. PSoC Creator lets
you implement in PSoC multiple clocks of any desired
frequency up to the device limit – see PSoC 3 and
PSoC 5LP Clocks on page 8.
Using a clocked register, you can better control the timing
of event detection and response. This is also known as
“synchronizing” an asynchronous input to a known clock
signal.
If the input changes at the exact same time as the clock
edge then the output may be indeterminate for a period of
time. This condition is called metastability – more
information on this topic can be found in the section
Metastability, and Register Timing on page 6.
www.cypress.com
Document No. 001-81623 Rev. *D
3
Submit Document Feedback
For more information on designing state machines in
PSoC 3 and PSoC 5LP, see AN62510 – Implementing
State Machines with PSoC 3 and PSoC 5LP



Code-level: PSoC Creator supports a hardware
design language called Verilog, which has a structure
and syntax that is similar to C.
Datapath programming: gate, LUT, and Verilog-level
designs are usually implemented in the PLDs in the
PSoC UDBs (see Figure 2). To program the other
portion of the UDBs, such as the datapath, a Datapath
Configuration Tool is offered by PSoC Creator. Most
UDB-based designs use both datapaths and PLDs.
Components: similar to object-oriented programming,
PSoC Creator lets you define custom Components
that are easy to implement and reuse. Components
can use a variety of PSoC resources including UDB
datapaths and PLDs.
Note Detailed instructions for Verilog and datapath
programming, and Component development, are beyond
the scope of this application note. For more information on
these topics see Related Application Notes.
www.cypress.com
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Digital Design Debugging
Firmware development must include debugging tools and
techniques. Some good debugging techniques for
firmware are as follows:

Step through each line of code, and observe its
operation, at least once under each possible
condition.

Debug as you develop, that is, write and test a small
block of code before going on to the next block.
Similarly, in digital design you may want to look at gate,
module, or Component-level performance. The easiest
way to do this with PSoC is to route signals of interest to
test pins and then observe the pin activity using an
oscilloscope or a logic analyzer. Similar to firmware, when
debugging digital designs you should do the following:

Observe each signal at least once, under each
possible condition.

Debug as you develop. In this case, get a small
portion of the design, at the logic or Component level,
tested and working before going on to the next portion
of the design.
Document No. 001-81623 Rev. *D
4
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Timing Issues in Digital Design
The most common problem in digital designs is timing. There are always delays through DFFs, gates, and other logic
elements, as well as delays through pins and routing. A timing problem becomes apparent when the delays are long enough to
cause a signal to arrive too late (or sometimes too early) for correct processing, as Figure 6 shows.
In Figure 6, the delay through the DFF 1 plus the delay through the logic and routing between the DFFs make the signal arrive
too late at the DFF 2 input. To correct it, you must either slow down the clock or reduce the delays between the DFFs.
Figure 6. Delays in Multi-Register Designs
PinInput
Delay
through DFF
DFF 1 Output
DFF 2 Input
Delay through routing and gates
Output arrives too late
for next clock edge
Clock
www.cypress.com
Document No. 001-81623 Rev. *D
5
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
M e t a s t a b i l i t y, a n d R e g i s t e r T i m i n g
As stated previously, if a register input changes exactly at
the same time as the clock edge, then the output may be
indeterminate, a condition called metastability.
More precisely, there is a period of time before and after
the clock edge during which the input must be stable. That
time period is defined by the register‟s specified setup and
hold times, as Figure 7 shows.
Figure 7. Register Setup and Hold Times
Recovery and removal times are similar to setup and hold
times, but instead of register inputs, they describe the
timing of asynchronous controls relative to the clock. An
example of an asynchronous control is the DFF reset
input - see Figure 30 and related text on page 18.
Recovery time is the minimum time that an asynchronous
control must be inactive before a clock edge. Removal
time is the minimum time that the control must remain
active after the clock edge. See Figure 8.
Figure 8. Register Recovery and Removal Times
Input
Reset
(active high)
Setup time
Hold time
Recovery time
Clock
Clock
In general, an input should maintain its state throughout
the setup and hold times, or the output may be
indeterminate - a metastable condition.
Reset
(active high)
Removal time
Clock
S t a t i c T i m i n g A n a l ys i s ( S T A )
An important part of debugging digital designs is static timing analysis (STA). STA evaluates a digital design and calculates
delays between signal outputs and inputs. From those delays it computes the maximum allowable frequency of each clock
used in the design. For more information see PSoC Creator Static Timing Analysis.
www.cypress.com
Document No. 001-81623 Rev. *D
6
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Digital Design in PSoC
Although not described in detail in this application note, it is useful to note how the many flexible features of the PSoC digital
subsystem are expressed by PSoC Creator, and how easy it is to quickly create even complex designs.
For example, Figure 9 shows a design for PSoC 3 and PSoC 5LP, where an analog voltage level enables or disables a
“breathing” LED. The two PWMs have slightly different periods, which make the LED gradually become dimmer and brighter.
With a little knowledge of PSoC Creator, you can build and run a design such as this on a PSoC device in under half an hour.
Figure 9. PSoC Creator Digital Design Example, for PSoC 3 and PSoC 5LP (PSoC 4 is Similar)
In another example, a digital system can be designed to control multiplexed ADC inputs, and interface with DMA to save the
data in SRAM, to create an advanced analog data collection system with zero usage of the CPU.
For more information see the PSoC Creator web page, or any example design in PSoC Creator.
PSoC Digital Subsystem
As mentioned previously, the heart of the PSoC digital subsystem is an array of UDBs (see Figure 1). When you place a digital
Component on a PSoC Creator schematic, a set of datapaths, PLDs, and other UDB registers (see Figure 2) are configured to
implement the desired functions.
Within and surrounding the UDBs is the DSI – an extensive fabric of programmable switches which connect signals within a
UDB, between pairs of UDBs, throughout the array of UDBs, and between the UDB array and many other blocks in PSoC.
This is what gives PSoC its tremendous flexibility in constructing intelligent custom peripherals.
When you draw a wire between digital Components on a PSoC Creator schematic, a set of DSI switches between the source
and destination points are turned on to implement that connection. Each switch has a delay of 1 to 2 nanoseconds. This is
small but if a signal is routed through multiple switches, then the total delay can become significant.
To manage this, PSoC Creator has the following features:


Timing driven routing (TDR), where signals with critical timing are routed to minimize DSI switch and routing delays
Timing driven placement (TDP), where UDB resources are selected to further optimize Component timing
For more information on the PSoC digital subsystem, see one of the device datasheets or Technical Reference Manual (TRM).
www.cypress.com
Document No. 001-81623 Rev. *D
7
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
PSoC 3 and PSoC 5LP Clocks
Because a lot of the discussion in this application note centers around synchronizing signals to clocks, let us take a brief look
at the PSoC clock system and how it is expressed in PSoC Creator.
PSoC 3 and PSoC 5LP have a highly flexible clock generation and distribution system. Figure 10 shows PSoC 3 as an
example; PSoC 5LP is similar. PSoC 4 has a much simpler clock system; for details see the PSoC 4 device datasheet.
Figure 10. PSoC 3 Clocking Subsystem
3-62 MHz
IMO
4-25 MHz
ECO
External IO
or DSI
0-66 MHz
32 kHz ECO
1,33,100 kHz
ILO
CPU
Clock
CPU Clock Divider
4 bit
48 MHz
Doubler for
USB
24-67 MHz
PLL
Master
Mux
Bus
Clock
Bus Clock Divider
16 bit
Digital Clock
Divider 16 bit
Digital Clock
Divider 16 bit
Analog Clock
Divider 16 bit
s
k
e
w
Digital Clock
Divider 16 bit
Digital Clock
Divider 16 bit
Analog Clock
Divider 16 bit
s
k
e
w
Digital Clock
Divider 16 bit
Digital Clock
Divider 16 bit
Analog Clock
Divider 16 bit
s
k
e
w
Digital Clock
Divider 16 bit
Digital Clock
Divider 16 bit
Analog Clock
Divider 16 bit
s
k
e
w
7
7
Many different clock sources are available, with different frequency ranges, accuracies, and power requirements. These are
routed to the rest of the system, that is, to generate the bus, digital, and analog clocks. For the digital system, eight clock
dividers provide clocks of any desired frequency.
The clocking system is set up using PSoC Creator. The user-defined clocks are placed on the schematic page (see Figure 9
on page 7) and the system clock settings are shown on the Design-Wide Resources (DWR) page. Figure 11 on page 9 shows
the clock configuration for the example in Figure 9.
One important point to note is the existence of a master clock and a bus clock, and their use. Because bus clock is usually the
same frequency as master clock, the two terms are often used interchangeably. However, they have different functions. The
master clock is a source for all other PSoC clocks, including bus clock, using the dividers shown in Figure 10. Its frequency is
equal to or greater than all other clocks in the PSoC. The bus clock is the clock source for the CPU, DMA, DFB, and other
major blocks.
www.cypress.com
Document No. 001-81623 Rev. *D
8
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Figure 11. Example PSoC Creator Clock Configuration for PSoC 3 and PSoC 5LP
www.cypress.com
Document No. 001-81623 Rev. *D
9
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Any clock source can be routed into the UDB clock inputs. The clocks are distributed on a dedicated network (separate from
the DSI) to the clock inputs in the UDBs and other blocks, as Figure 12 shows.
Figure 12. PSoC 3 and PSoC 5LP Clock Distribution and DSI
Clock source can be created from logic
or a pin, and routed through the DSI
DSI
DSI
Clock
Generation
Pins
IMO
MHz
ECO
ILO
kHz
ECO
Muxes
and
Dividers
DMA,
IRQ
UDBs
Clock
Distribution
Network
All UDB
Clocks
Analog
Interface
DSI routing between UDBs,
pins, and other blocks
In PSoC 3 and PSoC 5LP, the clocks can also be routed to logic in the UDBs, as Figure 13 shows. However, in general, it is a
good idea to tie clock sources, such as clock Components, directly to clock inputs, which takes advantage of the clock
distribution network. It is also a good idea to avoid routing clocks into gate or data inputs, and routing gate or data outputs to
clock inputs. For details, see Topic #2: Using Clocks on page 13, and Don‟t Gate Clocks, Use Enable Component on page 15.
Figure 13. Clock Routing Paths
For more information on PSoC clocks see AN60631, PSoC 3 and PSoC 5LP Clocking Resources, or the Clocking chapter in
the PSoC Creator System Reference Guide.
www.cypress.com
Document No. 001-81623 Rev. *D
10
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Synchronization in PSoC
As noted previously, an asynchronous digital system can
lead to unwanted glitches in signals. PSoC is designed to
operate as a synchronous system, to enable
communication between the digital subsystem and the
CPU and DMA. Generally, asynchronous signals are not
supported except for PLD-based logic that does not
interact with the CPU or DMA.
P i n s ( a l l P S o C D e vi c e s )
Signals coming into an input pin are considered to be
asynchronous, and as a default are double-synchronized
before being routed to the DSI. Double-synchronization,
as shown in Figure 15, further reduces the chance of
having metastability and unexpected system behavior.
Figure 15. Double Synchronization
Following are several instances of synchronization in
PSoC that you should note.
PSoC 3 and PSoC 5LP Clocks
As noted previously, eight clock dividers are available in
PSoC 3 and PSoC 5LP to provide to the digital subsystem
clocks of any desired frequency. As a default, these clocks
are synchronized to the master clock. This is controlled
through the PSoC Creator Clock Component configuration
dialog, as Figure 14 shows.
Figure 14. Clock Synchronization Settings for PSoC 3 and
PSoC 5LP
Note that the delay through a double synchronizer is 1 to 2
cycles of the synchronizing clock. In PSoC 3 and
PSoC 5LP, the synchronizing clock is bus clock, which is
usually the same frequency as the master clock. In
PSoC 4, the synchronizing clock is HFCLK.
If the synchronizing clock is less than or equal to 33 MHz,
dedicated circuitry within the pin block is used for double
synchronization. If the bus clock is greater than 33 MHz,
the pin input is routed through the DSI to UDB circuitry
and the double synchronization is done in the UDBs. This
can cause routing and STA results to vary when master
clock, bus clock, or HFCLK are changed to be above or
below 33 MHz. See, for example, the discussion around
Figure 50 on page 30.
As noted previously, a clock source can be external to
PSoC, coming in through an I/O pin. If that input is a
source for bus clock, then input synchronization must be
turned off. This is done in PSoC Creator through the Pins
Component configuration dialog, as Figure 16 shows – set
the Sync Mode to Transparent.
Figure 16. Input Pin Synchronization
www.cypress.com
Document No. 001-81623 Rev. *D
11
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
In general, pin inputs should be synchronized; they must be synchronized to be read correctly by the CPU or DMA. However,
there are some cases when timing with systems external to PSoC is critical. In these cases, synchronizing delays may be
unacceptable and input pin synchronization should be turned off. For more information see Topic #6: Interface with Pins on
page 19.
Pin outputs also have a synchronization option; they can be (single) synchronized to bus clock. This option exists mainly to
reduce skew, or relative delay, between multiple outputs. It is disabled as a default.
UDB Control and Status Registers
Two other major UDB Components are a control register and a status register – a UDB has one of each. A control register lets
the CPU / DMA drive signals into the digital subsystem, and a status register lets the CPU / DMA read signals from the digital
subsystem. PSoC Creator Components exist for both registers. For more information on these registers see the TRM.
In addition to their normal modes of operation, these registers have special modes that can be used to reduce timing
restrictions. For example, a status register can be reconfigured to be a 4-bit double synchronizer – to take advantage of this
feature, use the PSoC Creator Sync Component, as shown in Figure 22 on page 14.
In another example, the control register can operate in three different modes – direct, sync, and pulse. The sync and pulse
modes allow input from the CPU / DMA, which is synchronized to the bus clock, to be resynchronized to another clock. For
details, see Topic #3: Control Registers on page 17.
Note The PSoC Creator Control and Status Register Components can be configured as one to eight control outputs or status
inputs, as Figure 17 shows. Although it is possible to create multiple single Control or Status Components, each Component
uses an entire UDB register. A better method is to use Control or Status Components with multiple outputs or inputs. This is
especially true for status inputs which have a common clock.
Figure 17. Single and Multiple-Wire Control and Status Registers
PSoC Creator Static Timing Analysis (STA)
Whenever a PSoC Creator project is built, an STA is done automatically. A report is generated showing the critical paths in the
design that limit the frequency of each clock. If an actual clock frequency exceeds the calculated maximum frequency, a
warning is generated indicating that a timing violation exists in the design.
It is important to know about synchronization and other digital features in PSoC, to avoid STA warnings, as detailed in the next
section.
www.cypress.com
Document No. 001-81623 Rev. *D
12
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
PSoC Digital Design Considerations
This section contains a series of topics that describe considerations and best practices for doing digital designs in PSoC 3,
PSoC 4, and PSoC 5LP with PSoC Creator.
Topic #1: Component Datasheet Specifications
When you use one of the digital Components offered in the PSoC Creator Component Catalog that are built from UDBs (for
example, counter or SPI), it is important to check the Component‟s timing specifications. These are available in the
Component datasheets, as Figure 18 shows.
Figure 18. UDB Counter Timing Specifications
Depending on the Component type, the clock frequency for a UDB-based Component is limited due to the routing delays
mentioned previously. It is important that the frequencies of your clocks do not exceed the datasheet maxima.
For more information, check any of the digital Component datasheets.
Topic #2: Using Clocks
Use the Slowest Possible Clock
As mentioned in the previous topic, the frequency of
clocks for PSoC Creator Components should be limited
according to the Component datasheet specifications.
Figure 19. Timer Macro Includes Bus Clock
In general, the speed of all clocks should be kept as low
as possible while still meeting your application
requirements. This gives PSoC Creator‟s TDR system
more freedom to optimize routing of the critical portions of
your design. It may also reduce system noise and power.
Clock Settings in Macros
In some cases, inclusion of a high-frequency clock is not
immediately apparent, as Figure 19 shows. Some macros
in the PSoC Creator Component Catalog include Clock
Components, which are set to bus clock as a default. The
clock frequency should be changed if bus clock speed is
not needed.
www.cypress.com
Document No. 001-81623 Rev. *D
13
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Multiple Clocks
As mentioned previously, most digital signals in PSoC are
synchronized. Even most clocks are synchronized, to
other higher frequency clocks. Clocks are usually, but not
always, synchronized to the master clock; see Figure 10.
S yn c h r o n i z i n g C l o c k s w i t h S yn c C o m p o n e n t
In a simpler example, shown in Figure 21, a low-frequency
clock is used to directly control the counter capture
frequency. This can cause a synchronization warning from
the STA.
Although multiple clocks may be synchronized to the same
source, Figure 20 shows that they are not necessarily
synchronized to each other. In this example, which shows
a frequency counter with a periodic capture from the
PWM, the two clocks are synchronized to the master clock
(HFCLK in PSoC 4), but not necessarily to each other.
Thus, if the master clock frequency is high enough, delays
through the PWM Component may cause a setup time
violation at the counter Component.
Figure 21. Another Multi-Clock Example
Note The examples shown in this and other sections are
designed to produce, under most conditions, the STA
warnings indicated. However in some cases, depending
on routing and placement, and clock frequencies, a
warning may not always be generated.
Warning-1350: Path(s) exist between clocks
ClkCap(routed) and ClkCntr, but the clocks
are not synchronous to each other
Figure 20. Multi-Clock Example
To clear this warning, synchronize the low-frequency clock
to the counter clock, using a PSoC Creator Sync
Component, as Figure 22 shows.
Figure 22. Synchronizing Clocks
Master
Clock
ClkPWM
(100 kHz)
pwmout /
cntr capture
min skew between clocks
delay through PWM block
may cause setup time violation for counter clock
ClkCntr
Warning-1366: Setup time violation found in
a path from clock (ClkPWM) to clock
(ClkCntr).
In this case, decreasing the ClkCntr frequency does not
correct the problem, because the minimum time between
clocks is one master clock period. To correct the problem,
either the master clock frequency must be reduced, or the
PWM output must be synchronized to ClkCntr, as
discussed in the next section. You can also refer to Using
the STA Report to Remove Warnings on page 28.
www.cypress.com
Note that because the Sync Component does doublesynchronization (see Figure 15 on page 11 and UDB
Control and Status Registers on page 12), the duty cycle
of the sync output is never exactly 50%. This is acceptable
when the synchronizing clock is much faster than the
synchronized clock. However, when the two clocks are
nearly the same frequency, the sync output may not
generate a clock at all – it may just stay at a DC level. The
synchronizing clock must be more than two times faster
than the synchronized clock; four times faster is preferred.
For more information on the Sync Component, see the
Sync Component datasheet.
Note In Figure 21 and Figure 22, with PSoC 4 ClkCap
cannot be directly tied to the Counter „capture‟ terminal or
the Sync „s_in‟ terminal. A good workaround is to double
the frequency of ClkCap (200 kHz) and run it through a
toggle flip-flop (TFF) Component first.
Document No. 001-81623 Rev. *D
14
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Don’t Gate Clocks, Use Enable Component
In many designs, a function is controlled by simply turning its clock on or off, by gating the clock. However, the example in
Figure 23 shows how gating a clock with an unsynchronized control can cause runt clock pulses and yield unpredictable
results.
Figure 23. Gating Clocks Example
MyClock
ClockControl
LUT clock
normal clock pulse
runt clock pulses
www.cypress.com
Document No. 001-81623 Rev. *D
15
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
If your function is UDB-based (as is the example in Figure 23), a better method is to use the UDBClkEn Component, as
Figure 24 shows. This Component offers a controlled, level-sensitive enable for a clock, and can optionally synchronize the
input clock to bus clock. For more information on the UDBClkEn Component, see the UDBClkEn Component datasheet. With
PSoC 4, a clock can be directly routed to a UDBClkEn „clock_in‟ terminal.
Figure 24. Using the UDBClkEn Component
Note The Digital Function Components (see Topic #5: Using Digital Function Components on page 18) all have a UDBClkEn
Component embedded in them. Therefore, a UDBClkEn Component usually only needs to be used with a DFF or LUT
Component. A UDBClkEn Component cannot drive another UDBClkEn Component; attempting to do so gives one or more
instances of the following error:
Error: mpr.M0096: The UDB Clock/Enable components may only drive clocks in UDB content and
\UDBClkEn_1:udbclkenable\ is connected to clock_in on ... which is not a clock input to the
UDB. (App=cydsfit)
Inverted clocks are acceptable.
This topic does not usually apply to using inverted clocks,
as Figure 25 shows. This is because each UDB has a
clock control module, which allows use of a noninverted or
an inverted clock – the inverter symbol simply causes the
UDB to use its inverted clock input.
Using inverted clocks may allow you to use a slower clock
because both edges of the clock are used. However,
conversely, timing problems may be more prevalent
because clocking happens at twice the frequency.
Figure 25. Example Design with Inverted Clock
www.cypress.com
Document No. 001-81623 Rev. *D
16
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Topic #3: Control Registers
Topic #4: Don’t Make Latches
As noted in UDB Control and Status Registers on page
12, the standard way for firmware to interact with the
digital system is through control registers. Each UDB has
one 8-bit control register; with 24 UDBs as many as 192
bits of control are available. Control register outputs can
be routed through the DSI to any desired point in the
digital system.
Figure 28 shows classic set-reset (S-R) latch designs. (In
the top circuit, S and R are active high and in the bottom
circuit, S and R are active low.) A latch is similar to a
register or DFF but is less stable – a glitch pulse on an
input may cause the output to change unexpectedly. Also,
it has an unstable state if both inputs are active at the
same time. It is good practice to use registers instead of
latches.
However, there are some clocking considerations with
control registers that may lead to STA warnings. For
example, in Figure 26 a control register is driving the reset
input of a UDB-based timer. What is not apparent is that
by default the control register is clocked by bus clock. With
a high frequency bus clock you can get setup time
violations between bus clock and the timer clock:
Figure 28. Classic S-R Latch Designs
Figure 26. STA Error With Control Register
Warning-1366: Setup time violation found in
a path from clock (CyBUS_CLK) to clock
(timer_clock).
This is easy to fix by putting the control register in Sync
mode, as Figure 27 shows:
Figure 27. Control Register Sync Mode
If you try to build one of the above designs, PSoC Creator
gives the following warning:
Warning-1361: The design contains a
combinational loop. Check the design for
unintentional latches. Breaking the loop
at ...
which means that STA does not include the loop in its
analysis.
The designs in Figure 28 have other problems, in that they
are not synchronized (see discussion around Figure 3 and
Figure 4), and they use two UDB PLD macrocells for each
latch. A better alternative is to use the PSoC Creator
SRFF Component, as Figure 29 shows. This design uses
only one macrocell per latch.
Figure 29. Synchronized S-R Latch Component
www.cypress.com
Document No. 001-81623 Rev. *D
17
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Note that the latch in Figure 29 can be designed using the
LUT Component; see Figure 5. It can also be designed
with a DFF Component, and the PSoC Creator DFF
Component can be configured for reset or preset, as
Figure 30 shows.
Figure 30. DFFs With Resets
Topic #5: Using Digital Function
Components
Most of the STA warnings generated by PSoC Creator are
related to use of Components in the Digital Functions
folder in the Component Catalog; see Figure 31. These
Components are unique in that they all have clock inputs.
Figure 31. Digital Function Components
In the configuration dialog box, you can select
asynchronous or synchronous preset or reset. The
asynchronous inputs take effect as soon as they are
asserted, which can cause metastability problems – see
recovery and removal times discussion in Metastability,
and Register Timing on page 6. The synchronous inputs
take effect at the next clock edge and thus have a
predictable behavior. For more information, see the DFF
Component datasheet.
UDB datapaths, PLDs, and other blocks are clocked by
multiple sources. The digital function Components take
advantage of this feature, and are synchronized to their
clock inputs as opposed to bus clock. This can cause STA
warnings when unsynchronized signals are connected to
the other inputs, as mentioned in Synchronizing Clocks –
see Figure 21 and Figure 22 on page 14.
This topic does not apply to the fixed-function timer blocks,
even though they have clocks and are supported by the
Counter, Timer, and PWM Components. For more
information, see the TRM or the datasheets for these
Components.
www.cypress.com
Document No. 001-81623 Rev. *D
18
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Topic #6: Interface with Pins
The PSoC 3 and PSoC 5LP I/O pins can be connected to many sources / sinks within PSoC, including CPU, DMA, analogs,
and LCD. They can also be connected to the DSI and thus their signals can be routed throughout the digital fabric. This makes
pins subject to the same synchronization issues as all other Components. Pin inputs and outputs can be synchronized or not,
independent of each other.
As noted in Pins on page 11, pin input signals can be double-synchronized to the bus clock. The default is synchronization
enabled however there are special cases where input synchronization should be turned off.
The best example of this is with the PSoC Creator SPI Slave (SPIS) Component, as Figure 32 shows. Delays in the PCB
routing and PSoC pins, DSI routing, and UDBs cause an overall delay from the master‟s SCLK and MOSI outputs to its MISO
input. This, in turn, may cause the master‟s MISO input to be read incorrectly.
A similar issue exists with the PSoC Creator SPI master (SPIM) Component.
Figure 32. SPI Timing with SPIS Component
SPI mode 1 or 2, CPOL ≠ CPHA
Delay from external master through
PSoC 3/5 input pin and routing
SCLK Out from
External Master
SCLK In @
SPI Component
MOSI @
SPI Component
MISO @
External Master
Delay through PSoC SPI
Component and output pin may
cause setup time to not be met
Little can be done about the delays within the PSoC Creator SPIS Component. However, synchronizing the MISO, SCLK, and
MOSI pins can add significant delay. This is especially true for the input pins – as noted in Pins on page 11 the input pins are
double-synchronized, which can cause a lot of delay. In general, SPI pins should have synchronization turned off.
All of the PSoC Creator SPI Components are available as macros, which include Pin Components where synchronization is
already turned off. If you do not use the macros, that is, if you use the SPIM or SPIS Components directly, you should make
sure that the pins connected to these Components have synchronization turned off.
www.cypress.com
Document No. 001-81623 Rev. *D
19
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Topic #7: Interface with Fixed Blocks
As Figure 1 shows, PSoC 3 and PSoC 5LP have several
interfaces between the UDB system and the fixed digital
and analog subsystems. Figure 33 shows some examples
of interfaces between fixed blocks and UDB-based
Components (in this case Counters). Note that the Timer
Component is based on a fixed-function Timer / Counter /
PWM (TCPWM) block.
Figure 33. Fixed Block / UDB Interfaces
At this time PSoC Creator‟s STA feature does not include
signals routed between the analog and digital subsystems.
Moreover, due to a possible timing problem, the
comparator and ADC outputs may not be captured
properly at the counter inputs.
Also, you may get STA warnings for an asynchronous
path from a fixed-block clock to a UDB clock, for example:
Asynchronous path(s) exist from
"Clock_1(fixed-function)" to "Clock_1".
This is due to the timing differences between the clocking
network and the DSI; for more information see Figure 12
and related text on page 10. In general you should add
Sync Components to fixed block outputs that are routed to
UDB-based Components, as Figure 34 shows.
Figure 34. Fixed Block Interfaces with Sync Components
www.cypress.com
Document No. 001-81623 Rev. *D
20
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Using the PSoC Creator STA Report
As mentioned previously, the PSoC Creator STA feature
evaluates a digital design and generates a report on the
maximum allowable frequency of each clock and whether
any potential timing problems exist. If you get an STA
warning during a project build, you may need to review the
STA report to fully understand and resolve the warning.
Finding the STA Report
The STA report is an auto-generated HTML file, and can
be found in the PSoC Creator project Results tab, as
Figure 36 shows.
Figure 36. PSoC Creator Project STA Report File
This section discusses strategies and best practices for
using the STA report.
Note Although it is possible for PSoC 4 based designs to
produce STA warnings, PSoC 3 and PSoC 5LP are more
likely to do so due to their more complex digital and
clocking systems. Therefore this section is oriented toward
PSoC 3 and PSoC 5LP based designs.
Setting STA Temperature Conditions
PSoC devices operate across a wide range of supply
voltages and temperatures, and TDR constraints are
selected with the full range of temperature specifications in
mind. However, if your design runs in a more controlled
temperature environment, the TDR constraints are more
easily satisfied and more flexible routing may be achieved.
The temperature range for your design is a PSoC Creator
project system setting, as Figure 35 shows.
Figure 35. Device Temperature Range Setting
Elements of an STA Report
In addition to timing violation and clock summaries, the
STA report has several sections that show detailed
analyses of setup, hold, recovery, and removal times
between clocks and other signals. For more detailed
information on sections of the STA report, see the PSoC
Creator Help article “Static Timing Analysis”.
Following are some examples that show in detail the
relationship between the design and the STA report data.
Example #1
Let us start with a very simple example, shown in
Figure 37 on page 22. In this example, all Component and
clock settings are the defaults for PSoC 3 and PSoC 5LP:
If you select the narrower temperature range for your
project, the TDR tool can more easily find timing-compliant
routing solutions. This may in turn affect whether or not
you get STA warnings when the project is built.
www.cypress.com


Master clock and bus clock are 24 MHz


Pin_2 has output synchronization turned off
Pin_1 has input synchronization turned on (see Pins
on page 11)
Clock_1 is synchronized to master clock
Document No. 001-81623 Rev. *D
21
Submit Document Feedback
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Figure 37. STA Report Example #1
When the STA report is opened, it shows a summary of timing violations and a list of clocks with clock speed violations. In this
example there are no violations. The report shows that bus clock and Clock_1 could go as fast as 69.677 MHz (which actually
may be higher than the device frequency limit) without clock speed violations.
Before we look at the STA report timing details, it is important to see the relationship between the design on the schematic and
what actually happens in the PSoC device. In Figure 38 on page 23, the Input Pin Synchronization block shows that, since
input pin synchronization is on, the input pin signal goes through two registers which are clocked by bus clock. Then, the
signal is routed from the pin through the DSI to a UDB macrocell, which implements the DFF in the schematic. Finally, the
macrocell output is routed through the DSI to the output pin, which is not synchronized.
www.cypress.com
Document No. 001-81623 Rev. *D
22
Submit Document Feedback
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Figure 38. Example #1 Hardware Implementation
41.667 ns
Bus Clock (24 MHz)
Clock_1 (1 MHz)
Pin_1 Input
A
B
C
D
Pin_2 Output
For details on the delays in the STA report, click on the "Expand All" (see Figure 37). Figure 39 on page 24 shows the
expanded report, and the significance of the numbers in the detail subsections:


Setup Subsection, the “Path Delay Requirement”: 41.6667 ns, corresponding to the 24 MHz bus clock


In the same table, “Slack” listing: 27.315 ns, or 41.667 minus 14.352 – the calculated setup time for the macrocell
In the table in the same subsection, “Delay” listing: 14.352 ns, the calculated delay from the Pin_1 output to the macrocell
input, due to routing and gate delays
Clock to Output Section “Delay” listing: 22.883 ns, the calculated delay from the macrocell output to Pin_2, due to
routing delays.
Further expansion is possible by clicking the "Show All Paths", but is usually not necessary. In Figure 39 the Hold Subsection
is collapsed – for details on hold violations see Hold, Recovery and Removal Violations on page 35.
www.cypress.com
Document No. 001-81623 Rev. *D
23
Submit Document Feedback
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Figure 39. Expanded STA Report #1, and Corresponding Timing
41.667 ns
Bus Clock (24 MHz)
Clock_1 (1 MHz)
Pin_1 Input
A
B
C
D
Pin_2 Output
www.cypress.com
Document No. 001-81623 Rev. *D
24
14.352 ns
delay
27.315 ns setup
22.883 ns delay
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
If you click on any line in the report‟s tables, that line is expanded to show further detail. In Figure 40, the Clock to Output
Section is expanded to show each part of the delay from Clock_1 through the DFF to Pin_2.
The expanded report shows that most of the delay, 16.2 ns, is through the pin itself. There is a small amount, 5.4 ns, from the
macrocell output through the DSI routing to the pin, and a very small amount through the DFF itself.
Figure 40. Example #1 Expanded Clock to Output Section
Example #2
Let us now change Example 1, by replacing the DFF with
a UDB-based 8-bit counter, as Figure 41 shows:
Figure 42. STA Report for Example #2
Figure 41. STA Report Example #2
A portion of the resultant STA report file is shown in
Figure 42. Although there are still no timing violations, the
Clock Summary Section shows that there is now much
less margin for bus clock; the maximum frequency has
been reduced to ~35 MHz.
To understand why, look at the detailed report in the
Register to Register Section, Setup Subsection, in
Figure 43 on page 26:
www.cypress.com
Document No. 001-81623 Rev. *D
25
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Figure 43. Example #2 Expanded Setup Subsection
The Counter Component is constructed from a
combination of UDB datapaths and PLDs. In Figure 43 the
Source Clock: Clock_1 table shows that the UDB
elements internal to the Counter are clocked by the
Counter‟s clock input, in this case Clock_1. The table also
shows that since Clock_1 is only 1 MHz there is almost
1 µs of slack – a very comfortable margin indeed.
Figure 44. Timing Violation with 32-bit Counter
More interesting numbers exist in the Source Clock:
CyBUS_CLK table. Note that the Path Delay Requirement
for this table is the period of the 24-MHz bus clock. The
reason for this is explained in Multiple Clocks on page 14.
The table shows that the input pin, synchronized by bus
clock, is routed to two UDB elements within the Counter.
One of them has a delay of over 27 ns which reduces
available slack to less than 14 ns. This is the reason why
bus clock is limited to 35 MHz.
Finally, we can change the Counter Component from 8-bit
to 32-bit and, for demonstration purposes, raise the bus
clock frequency to 28 MHz. After rebuilding we now get a
setup time violation, as Figure 44 shows.
www.cypress.com
The reason for the violation is more apparent in the Clock
Summary Section, which shows that the bus clock
frequency of 28 MHz is too high for the Component.
The details of the violation are shown in Figure 45 on page
27. A 32-bit counter requires four UDB datapaths, chained
together. Consequently the input pin, which is
synchronized to bus clock, is routed to many different
destinations within the UDB elements. For one of those
destinations the routing and other delays is 38.419 ns,
which is greater than the 35.7143 ns period of bus clock,
and causes the setup time violation. Changing the
Clock_1 frequency does not help - to correct this problem
you must either reduce the bus clock frequency or
synchronize pin 1 to Clock_1.
Document No. 001-81623 Rev. *D
26
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Figure 45. Details of Timing Violation with 32-bit Counter
www.cypress.com
Document No. 001-81623 Rev. *D
27
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Using the STA Report to Remove Warnings
As a final exercise, let us now use the techniques from the
previous sections to understand and resolve a series of
STA warnings in a moderately complex example. First, let
us look at the design shown in Figure 20, which is
repeated in Figure 46 with one change – ClkCntr is now
master clock divided by 2:
Figure 46. Multi-Clock Example from Figure 20
Remember that in this design both clocks are
synchronized to the master clock; the counter clock
ClkCntr is specifically set to be master clock divided by 2.
When the master clock frequency is high enough, in this
case 60 MHz, two STA setup time violations are detected:
Warning-1366: Setup time violation found in
a path from clock (ClkCntr) to
clock(ClkCntr)
Warning-1366: Setup time violation found in
a path from clock (CyBUS_CLK) to clock
(ClkCntr)
Figure 47 shows these same warnings in the Timing
Violation Section of the STA report
Figure 47. STA Report for Figure 46.
www.cypress.com
Document No. 001-81623 Rev. *D
28
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
To remove the warnings, first examine the setup violation for the counter clock, that is, where the source and destination
clocks are both ClkCntr. To do this, click on the ClkCntr to ClkCntr row in the Timing Violation Section. This opens up the
details further down in the report, as Figure 48 shows:
Figure 48. STA Setup Violations for ClkCntr to ClkCntr
Because the Counter is 32-bit, four UDB datapaths are required to implement it. Figure 48 shows that delays through some of
the UDBs are too long for the 30 MHz counter clock (ClkCntr), and we must reduce ClkCntr to below 27.882 MHz. Because
ClkCntr is the master clock divided by 2, we can reduce the master clock to 55 MHz, which makes ClkCntr be 27.5 MHz.
This resolves the first warning but we still have another setup violation:
Warning-1366: Setup time violation found in a path from clock (CyBUS_CLK) to clock (ClkCntr)
To remove this one we can examine the CyBUS_CLK to ClkCntr section of the STA report - click on the relevant row in the
Timing Violation Section. The details are shown in Figure 49:
Figure 49. STA Setup Violations for Master Clock at 55 MHz
First, note that the Path Delay Requirement is the period of the 55 MHz master clock, and not ClkCntr. The reason for this is
explained in Multiple Clocks on page 14. The delays in the routes to the counter UDBs are too long for Pin_1. Two solutions
are available:
www.cypress.com
Document No. 001-81623 Rev. *D
29
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
1.
Reduce the master clock frequency. If your overall system timing does not require a high-speed master clock, this method
is preferred because it may also reduce noise and current consumption. Figure 49 shows that the master clock must be
brought below the smallest FMax value, i.e., 31.758 MHz. However bringing bus clock below 33 MHz causes a different
synchronization method to be applied to Pin_1 – see Pins on page 11 – which in turn causes different routing and as a
consequence another timing violation. Figure 50 shows that the master clock frequency must actually be reduced even
more, to below 26.036 MHz.
Figure 50. Setup Violations for Master Clock at 31 MHz
After this is done (by setting the PLL to 52 MHz, and dividing it by 2 to get a 26 MHz master clock), STA produces no
warnings, as Figure 51 shows:
Figure 51. Clock Summary for Master Clock at 23 MHz
www.cypress.com
Document No. 001-81623 Rev. *D
30
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
2.
You can always reduce the master clock frequency to a low enough value to remove all STA warnings. However, if you
need a high-speed master or bus clock, a better solution is to add a PSoC Creator Sync Component, in this case to
synchronize Pin_1 to ClkCntr. See Figure 52.
Figure 52. Multi-Clock Example from Figure 20, with Sync Component
Doing this gives an STA report that indicates that ClkCntr can now go as high as 28 MHz, as Figure 53 shows:
Figure 53. Clock Summary for Master Clock at 26 MHz and Sync Components Added
Since ClkCntr can go to 28 MHz, the master clock can go as high as 56 MHz, as Figure 54 shows.
Figure 54. Clock Summary for Master Clock at 56 MHz and Sync Component Added
In addition, if you need a maximum-speed master and bus clock, that is, as high as 66 MHz, you can always set ClkCntr
to be master clock divided by 3 instead of 2, for a frequency of 22 MHz, which is less than the maximum frequency
requirement.
www.cypress.com
Document No. 001-81623 Rev. *D
31
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
A s yn c h r o n o u s C l o c k C r o s s i n g s
Another type of violation that the STA report may produce is “Async”, as Figure 55 shows. These are usually due to routing
fixed-block outputs to the inputs of UDB-based Components. The easiest way to handle these is to add Sync Components to
your design, as Topic #7 describes.
Figure 55. Asynchronous Timing Violations
www.cypress.com
Document No. 001-81623 Rev. *D
32
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Clock Nominal and Required Frequencies
Examine the previous figures and note that in the STA Clock Summary Section all clock frequencies are the same across the
columns Nominal Frequency and Required Frequency. This is the typical case; however it is possible for the frequencies to be
different. This can happen when the master clock is not an integral multiple of another clock, as Figure 56 shows. Clock_Tmr
is sourced from the IMO, and the master clock is 60 MHz; the master clock is running at 2.5 times the timer clock.
Figure 56. Design Causing Different Nominal and Required Clock Frequencies
www.cypress.com
Document No. 001-81623 Rev. *D
33
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
You can get the same effect at lower frequencies, which may be easier to see with an oscilloscope on the test pins shown in
Figure 56 on page 33. Figure 57 shows a similar example with Clock_Tmr at 3 MHz and the master clock at 7.5 MHz (60 MHz
divided by 8).
Figure 57. Different Nominal and Required Frequencies, Example #2
In both cases, the timer clock is sourced from the IMO, but generally in order for it to be used with UDBs it must be
synchronized to the bus clock. Figure 58 shows the timing diagram at the test pins; note that Clock_Tmr is doublesynchronized to bus clock so is shifted rightward by two bus clock cycles.
Figure 58. Timing Diagram, Different Nominal and Required Frequencies
7.5 MHz
Bus Clock
3 MHz
IMO Clock
3.75 MHz
2.5 MHz
Clock_Tmr
Because Clock_Tmr, sourced from the IMO, is synchronized by a bus clock whose frequency is not an integral multiple of the
IMO, the Clock_Tmr output has two different frequencies – 2.5 MHz and 3.75 MHz – neither one of which equals that of the
IMO. This effect is known as synchronization jitter.
www.cypress.com
Document No. 001-81623 Rev. *D
34
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
This is indicated in the STA Clock Summary Section, as Figure 59 shows. It is important to distinguish between the terms
“Desired Frequency” and “Nominal Frequency” in the PSoC Creator Clocks tab (Figure 57 on page 34), and “Nominal
Frequency” and “Required Frequency” in the STA report (Figure 59). Nominal Frequency is the same between the two
displays. Required Frequency is the frequency at which paths using this clock must be able to meet timing. It is the highest
frequency in the clock – in this case, 3.75 MHz. It is possible for the Nominal Frequency to be less than the Maximum
Frequency and the Required Frequency to be greater than the Maximum Frequency, which would give a timing violation with
no obvious solution.
Figure 59. STA Showing Different Nominal and Required Clock Frequencies
It is generally not a good idea to drive a timer, counter, PWM or other timing-dependent circuit with a clock with
synchronization jitter. After building a design you should check the STA clock summary and make sure that this situation does
not exist. If it does, there are two ways to fix it:

Adjust the master clock and bus clock frequency to be an integral multiple of the other clock source‟s frequency. The best
practice is that it should be at least 4 times the other clock‟s frequency – see discussion on page 14. In the above case,
master clock could be changed to 12 MHz, which is 4x the frequency of Clock_Tmr.

Select a source for the clock that is either master clock or synchronized to master clock. In this case, source Clock_Tmr
from master clock instead of from IMO. Note that this may in turn cause your clock‟s frequency to change resulting in the
need to change other portions of your design.
Hold, Recovery and Removal Violations
Summary
The previous examples have focused on setup violations,
because these violations are by far the most common. The
other violation types, as described in Metastability, and
Register Timing on page 6, can be found under the
following conditions:
This application note has shown some general principles
in digital design and how they are implemented in PSoC 3,
PSoC 4, and PSoC 5LP. A set of best practice digital
design topics were then presented.


Hold violations are usually associated with clocks that
are routed from the DSI, and thus delayed, or skewed
relative to each other; see Figure 23. This can delay
the clock and cause a hold time violation; see
Figure 7.
Recovery and removal violations are associated with
asynchronous resets or presets; see Figure 30.
Changing these to synchronous will usually remove
the warning.
www.cypress.com
Finally, detailed explanations of STA warnings were
provided, as well as detailed examples of how to remove
them.
The information presented in this application note should
help you to implement robust and high-performance digital
designs in PSoC. Detailed instructions for Verilog and
datapath programming, and Component development, are
beyond the scope of this application note. For more
information on these topics, see the Component
Development Kit tools and documentation included with
PSoC Creator. See also PSoC Creator Design Tutorials.
Document No. 001-81623 Rev. *D
35
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Related Application Notes

About the Authors
AN82250 - Implementing Programmable Logic
Designs – An Introduction
Name:
Todd Dust
Title:
Applications Engineer Sr

AN82156 - PSoC 3 and PSoC 5LP Designing PSoC
Creator Components with UDB Datapaths
Background:
BSEE, Seattle Pacific University




AN54181 - Getting Started with PSoC 3
Name:
Mark Ainsworth
AN79953 – Getting Started with PSoC 4
Title:
Applications Engineer Principal
Background:
BS in Computer Engineering, Syracuse
University; MSEE, University of
Washington.


AN72382 - Using PSoC 3 and PSoC 5LP GPIO Pins
AN77759 - Getting Started with PSoC 5LP
AN60631 - PSoC 3 and PSoC 5LP Clocking
Resources
AN62510 – Implementing State Machines with
PSoC 3 and PSoC 5LP
www.cypress.com
Document No. 001-81623 Rev. *D
36
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Document History
®
Document Title: PSoC 3, PSoC 4, and PSoC 5LP Digital Design Best Practices - AN81623
Document Number: 001-81623
Revision
ECN
Orig. of
Change
Submission
Date
Description of Change
**
3701524
MKEA
08/06/2012
New application note
*A
3772570
MKEA/ANTO
11/08/2012
1. Added links to AN82156 and AN82250
2. Minor edits throughout the document
*B
3818225
MKEA
11/21/2012
Updated for PSoC 5LP and PSoC Creator 2.1 SP1. Minor edits throughout the
document.
*C
4078871
MKEA
07/25/2013
Updated throughout for PSoC 4 and PSoC Creator 2.2 SP1. Deleted Figure 27
and related text; renumbered subsequent figures. Updated figures 19, 31, and 37
for better clarity. Added SRFF Component to Figure 28. Added section Clock
Nominal and Required Frequencies. Updated to *K template.
*D
4268107
MKEA
02/05/2014
Added Figure 17 and related text. Changed title and content for Topic #7 section,
and added section Asynchronous Clock Crossings with new Figure 55. Updated
to *L template. Miscellaneous minor edits.
www.cypress.com
Document No. 001-81623 Rev. *D
37
PSoC® 3, PSoC 4, and PSoC 5LP Digital Design Best Practices
Worldwide Sales and Design Support
Cypress maintains a worldwide network of offices, solution centers, manufacturer‟s representatives, and distributors. To find
the office closest to you, visit us at Cypress Locations.
PSoC® Solutions
Products
Automotive
cypress.com/go/automotive
psoc.cypress.com/solutions
Clocks & Buffers
cypress.com/go/clocks
PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP
Interface
cypress.com/go/interface
Lighting & Power Control
cypress.com/go/powerpsoc
cypress.com/go/plc
Memory
cypress.com/go/memory
PSoC
cypress.com/go/psoc
Touch Sensing
cypress.com/go/touch
USB Controllers
cypress.com/go/usb
Wireless/RF
cypress.com/go/wireless
Cypress Developer Community
Community | Forums | Blogs | Video | Training
Technical Support
cypress.com/go/support
PSoC is a registered trademark and PSoC Creator is a trademark of Cypress Semiconductor Corp. All other trademarks or registered trademarks
referenced herein are the property of their respective owners.
Cypress Semiconductor
198 Champion Court
San Jose, CA 95134-1709
Phone
Fax
Website
: 408-943-2600
: 408-943-4730
: www.cypress.com
© Cypress Semiconductor Corporation, 2012 - 2014. The information contained herein is subject to change without notice. Cypress Semiconductor
Corporation assumes no responsibility for the use of any circuitry other than circuitry embodied in a Cypress product. Nor does it convey or imply any
license under patent or other rights. Cypress products are not warranted nor intended to be used for medical, life support, life saving, critical control or
safety applications, unless pursuant to an express written agreement with Cypress. Furthermore, Cypress does not authorize its products for use as
critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The
inclusion of Cypress products in life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies
Cypress against all charges.
This Source Code (software and/or firmware) is owned by Cypress Semiconductor Corporation (Cypress) and is protected by and subject to worldwide
patent protection (United States and foreign), United States copyright laws and international treaty provisions. Cypress hereby grants to licensee a
personal, non-exclusive, non-transferable license to copy, use, modify, create derivative works of, and compile the Cypress Source Code and derivative
works for the sole purpose of creating custom software and or firmware in support of licensee product to be used only in conjunction with a Cypress
integrated circuit as specified in the applicable agreement. Any reproduction, modification, translation, compilation, or representation of this Source
Code except as specified above is prohibited without the express written permission of Cypress.
Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT
NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress reserves the
right to make changes without further notice to the materials described herein. Cypress does not assume any liability arising out of the application or
use of any product or circuit described herein. Cypress does not authorize its products for use as critical components in life-support systems where a
malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress‟ product in a life-support systems
application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges.
Use may be limited by and subject to the applicable Cypress software license agreement.
www.cypress.com
Document No. 001-81623 Rev. *D
38