Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
CoreUPROMIF_APB v2.0 Handbook
2 CoreUPROMIF_APB v2.0 Handbook
Revision History Date Revision Change March 2016 1 First release
Confidentiality Status This is a non-confidential document.
CoreUPROMIF_APB v2.0 Handbook 3
Table of Contents
Preface ............................................................................................................................ 4 About this Document ..................................................................................................................................... 4 Intended Audience ......................................................................................................................................... 4
Introduction .................................................................................................................... 5 Overview ........................................................................................................................................................ 5 Key Features ................................................................................................................................................. 5 Core Version .................................................................................................................................................. 5 Supported Families ........................................................................................................................................ 5 Device Utilization and Performance .............................................................................................................. 6
Functional Description .................................................................................................. 7
Interface Descriptions ................................................................................................... 9 Signal Descriptions ........................................................................................................................................ 9 Configuration Parameters ............................................................................................................................ 10
Timing Diagrams .......................................................................................................... 11
Register Map and Descriptions .................................................................................. 12
Tool Flows .................................................................................................................... 13 Licenses ....................................................................................................................................................... 13 RTL .............................................................................................................................................................. 13 SmartDesign ................................................................................................................................................ 13 Simulation Flows.......................................................................................................................................... 14 Synthesis in Libero ...................................................................................................................................... 15 Place-and-Route in Libero ........................................................................................................................... 15
Test-bench Operation and Modification .................................................................... 16
System Integration ....................................................................................................... 18
Design Constraints ...................................................................................................... 19
List of Changes ............................................................................................................ 25
Product Support ........................................................................................................... 26
4 CoreUPROMIF_APB v2.0 Handbook
Preface
About this Document This handbook describes the CoreUPROMIF_APB IP Core and how to use it.
Intended Audience FPGA designers using Libero® System-on-Chip (SoC).
CoreUPROMIF_APB v2.0 Handbook 5
Introduction
Overview CoreUPROMIF_APB is an APB wrapper core that provides read-only access to the uPROM memory block within RTG4™ over the APB interface. This facilitates easy access to the uPROM for APB masters.
Key Features CoreUPROMIF_APB is a highly configurable core with the following features: • Provides an APB slave interface to the uPROM memory • Maps uPROM locations to word aligned address • Prescaler for generating uPROM clock from PCLK • Provides 36-bit read data output port • Supports APB data bus width of 32-bits • Presents upper 4-bits from previously read 36-bit location • Prevents reads of invalid uPROM locations
Core Version This handbook applies to CoreUPROMIF_APB version 2.0.
Supported Families • RTG4™
Introduction
6 CoreUPROMIF_APB v2.0 Handbook
Device Utilization and Performance Utilization and performance data is listed in Table 1 for the RTG4 (RT4G150) device family. The data listed in this table is indicative only. The overall device utilization and performance of the core is system dependent.
Device Utilization and Performance Table 1
The data in this table is achieved using Verilog RTL, typical synthesis, and layout settings with a ‘-1’ speed grade part.
Family CLK_DIV
Logic Elements
PCLK Frequency (MHz) Sequential Combinatorial Total %
RTG4 1 57 71 128 0.08 158.63
RTG4 2 62 63 125 0.08 165.95
RTG4 4 62 64 126 0.08 185.53
RTG4 6 61 62 123 0.08 113.47
RTG4 8 61 63 124 0.08 166.92
RTG4 10 62 63 125 0.08 165.95
RTG4 12 62 64 126 0.08 185.53
RTG4 14 62 63 125 0.08 161.79
CoreUPROMIF_APB v2.0 Handbook 7
Functional Description
CoreUPROMIF_APB makes RTG4’s uPROM memory block appear as a transparent memory on the APB interface. Address translation is performed within CoreUPROMIF_APB to allow APB masters to address the uPROM using word aligned addressing (native uPROM memory address increments by 1 for every 36-bit location). To access the uPROM memory within RTG4, CoreUPROMIF_APB requires users to instantiate the RTG4UPROM SgCore in SmartDesign alongside CoreUPROMIF_APB and map the cores together as described in the System Integration section. The RTG4UPROM SgCore imposes a maximum frequency constraint of 30 MHz on the uPROM clock. To support this, CoreUPROMIF_APB implements a clock prescaler, which generates the uPROM clock from PCLK. The CLK_DIV generic/parameter must be updated with the associated value for the design’s PCLK frequency. Note: CoreUPROMIF_APB requires custom timing constraints to perform timing-driven Place-and-Route.
These constraints must be applied to the design to achieve timing closure. Refer to the Design Constraints section for information on the required constraints.
The size and valid address range of RTG4’s uPROM memory is die dependent, as detailed in Table 2.
RTG4 Die Specific uPROM Capacities Table 2
Die Size (Bytes) No. of 36-bit Locations
Valid Address Range
(Word Aligned)
Invalid Address Range
(Word Aligned)
RT4G150 46,800 10,400 0x0000 – 0xA27C 0xA280 – 0xFFFC
The core guards against reading from the uPROM locations in the invalid address space by returning the upper 4-bits stored from the previous read operation on a valid uPROM location for any address within the invalid address space. This also provides a means of reading the upper 4-bits of the previously addressed 36-bit uPROM location even though the APB data width of CoreUPROMIF_APB is fixed at 32-bits. Figure 1 shows the CoreUPROMIF_APB’s address map when instantiated in an RTG4 RT4G150 die. A read is performed from the address 0xA278, which returns the lower 32-bits from the addressed uPROM location. Once this operation is complete, a read of any address in the invalid address range (0xA280 - 0xFFFC for the RT4G150 die) will return the lower 4-bits held in the CoreUPROMIF_APB’s internal buffer, read from the previously addressed location in the valid address range, 0xA278 in this example.
Functional Description
8 CoreUPROMIF_APB v2.0 Handbook
Bits 31-0Bits 35-32
36-bit uPROM location
0xA27C
Bits 31-0Bits 35-320xA278
Bits 31-0Bits 35-320x0004
Bits 31-0Bits 35-320x0000
...
PADDR[15:0]
uPROM address (word aligned)
0xFFFC
UprDataBits register[3:0](contains bits 35-32 of uPROM
location 0xA278 in this example)0xA280
...
Valid address range
Invalid address range (returns upper 4 bits)
PRDATA[31:0]
Zero’s
UprDataBits register[3:0](contains bits 35-32 of uPROM
location 0xA278 in this example)Zero’s
Address pointer
Figure 1 CoreUPROMIF_APB Address Map (instantiated in RT4G150 die)
CoreUPROMIF_APB v2.0 Handbook 9
Interface Descriptions
Signal Descriptions Signal descriptions for CoreUPROMIF_APB are defined in Table 3.
CoreUPROMIF_APB I/O Signals Table 3
Port Name Width Direction Description
APB Slave Interface Ports
PCLK 1 In APB system clock. Reference clock for all internal logic. PRESETN 1 In APB active low synchronous reset. Resets all registers within
CoreUPROMIF_APB. PADDR[15:2] 14 In APB address bus. Maps directly to UPROM_ADDR [13:0]
output, making the uPROM addressing appear word-aligned. PSEL 1 In APB slave select. Select signal to registers for APB reads. PENABLE 1 In APB strobe. Indicates the second cycle of an APB transfer. PWRITE 1 In APB write or read. If low, an APB read takes place. PRDATA[31:0] 32 Out APB read data. If PADDR is addressing a valid uPROM word
aligned location, PRDATA returns the lower 32-bits from the 36-bit uPROM location. Otherwise, if PADDR is outside of the valid address range for the uPROM, PRDATA returns the upper 4-bits from the previous read operation on a valid uPROM location.
PREADY 1 Out APB ready. Used to insert wait states to extend read transfers. PSLVERR 1 Out APB Slave Error. Indicates that an error occurred during an
APB transfer. uPROM Interface Ports
UPROM_CLK 1 Out uPROM read clock. Derived from PCLK such that the maximum frequency is less than the 30 MHz constraint imposed by the RTG4UPROM SgCore. Requires user specification of the ratio between PCLK and the UPROM_CLK to the CLK_DIV parameter.
UPROM_ADDR[13:0] 14 Out Address output to uPROM. Selects the target word aligned location within the uPROM to read data from.
UPROM_RDEN 1 Out Read-enable output to uPROM. Must remain high throughout a read transfer.
UPROM_DATAR[35:0] 36 In uPROM Data Input. Data received from the addressed 36-bit location within the uPROM.
UPROM_BUSY 1 In uPROM Busy Signal. Active high signal indicating that the uPROM is busy. Read operations are not permitted when this signal is asserted.
Fabric Ports RDATA[35:0] 36 Out uPROM read data output. Data stored in the previously
addressed word location within uPROM. The RDATA output retains its value until a subsequent read of a valid uPROM location is performed.
Interface Descriptions
10 CoreUPROMIF_APB v2.0 Handbook
Configuration Parameters There are a number of configurable options, which are applied to CoreUPROMIF_APB (as shown in Table 4). If a configuration other than the default is required, then the configuration dialog box in the SmartDesign should be used to select appropriate values for the configurable options.
CoreUPROMIF_APB Configuration Options Table 4Name Valid Range Default Description
CLK_DIV 1-14 1
Specify the ratio between the design’s PCLK frequency and the UPROM_CLK frequency such that UPROM_CLK is no more than the 30 MHz maximum frequency.
PCLK Frequency (in MHz)
CLK_DIV
0 < PCLK ≤ 30 1
30 < PCLK ≤ 60 2
60 < PCLK ≤ 120 4
120 < PCLK ≤ 180 6
180 < PCLK ≤ 240 8
240 < PCLK ≤ 300 10
300 < PCLK ≤ 360 12
360 < PCLK ≤ 420 14
CoreUPROMIF_APB v2.0 Handbook 11
Timing Diagrams
Figure 2 shows typical read timing relationships when accessing RTG4 uPROM memory over the APB interface through CoreUPROMIF_APB and the RTG4UPROM SgCore. It shows the case when the system PCLK frequency is 50 MHz (UPROM_CLK = PCLK/2).
APB InterfacePCLK
PADDR[15:2]
UPROM_ADDR[13:0]
XXXX
UPROM_RDENUPROM_DATAR[35:0]
PRDATA[31:0]PREADY
UprDataBits[3:0]
XXXXRDATA[35:0]
PSEL
PENABLEPWRITE
VALIDXXXX
XXXX
VALID
VALID
XXXX
XXXX VALID XXXX
UPROM_CLK
VALIDXXXX XXXX
UPROM_BUSY
PSLVERR
uPROM Interface
Miscellaneous Signals and Registers
VALID XXXX
Figure 2 uPROM Read Transfer
Figure 3 shows the relationships between signals on the APB interface when an APB read transfer is performed on the Upper Data Bits register. The upper 4-bits read from the previously addressed 36-bit uPROM location are returned to the APB master through PRDATA.
APB InterfacePCLK
PADDR[15:2]
PRDATA[31:0]PREADY
PSEL
PENABLEPWRITE
XXXX VALID
VALIDXXXX
PSLVERR
Figure 3 Upper Data Bits Register Read Transfer
12 CoreUPROMIF_APB v2.0 Handbook
Register Map and Descriptions
The CoreUPROMIF_APB and UprDataBits registers are listed in Table 5 and Table 6.
CoreUPROMIF_APB Register Table 5Offset Register Name Type Width Reset Value Description
0xA280 – 0xFFFC
UprDataBits Read-only 32 0x0 Upper Data Bits register.
UprDataBits Register Table 6Bit(s) Name Type Description
3:0 dataBits Read-Only Upper 4-bits from the previous read operation on a valid 36-bit uPROM location. The content of this register gets updated when a subsequent read is performed on a 36-bit location within the uPROM.
CoreUPROMIF_APB v2.0 Handbook 13
Tool Flows
Licenses No license is required for the use of this core.
RTL Complete RTL source code is provided for the core and testbenches.
SmartDesign CoreUPROMIF_APB is available for download in the Libero® IP Catalog through the web repository. After it is listed in the catalog, the core can be instantiated using the SmartDesign flow. For more information on using SmartDesign to configure, connect, and generate cores, refer to the Libero Online Help. SmartDesign instantiated view is shown in Figure 4. After configuring and generating the core instance, basic functionality can be simulated using the testbench supplied with the CoreUPROMIF_APB. The testbench parameters automatically adjust to the CoreUPROMIF_APB configuration. Note: The RTG4UPROM SgCore must be instantiated with CoreUPROMIF_APB in SmartDesign and
connected to it as described in the System Integration section to provide CoreUPROMIF_APB access to the uPROM memory block.
The combination of CoreUPROMIF_APB and RTG4UPROM can be instantiated as a component of a larger design.
Figure 4 SmartDesign CoreUPROMIF_APB Instance View
Tool Flows
14 CoreUPROMIF_APB v2.0 Handbook
Figure 5 SmartDesign CoreUPROMIF_APB Configuration Dialog Box
Simulation Flows To run simulations, select the user testbench flow from SmartDesign and click Save and Generate on the Generate pane. The user testbench is selected through the Core Testbench Configuration GUI. When SmartDesign is generated in the Libero SoC project, it installs the user testbench files. To run the user testbench, set the design root to the CoreUPROMIF_APB instantiation in the Libero SoC design hierarchy pane and click Simulation in the Libero SoC design flow window. This invokes ModelSim® and automatically launches the simulation. In order for the CoreUPROMIF_APB user testbench to execute an instantiation of the RTG4UPROM SgCore must coexist in SmartDesign. Otherwise, the message as shown in Figure 6 is displayed in the ModelSim Transcript window when the user testbench is launched.
Figure 6 CoreUPROMIF_APB User Testbench RTG4UPROM Transcript Message
To allow the user testbench to execute, instantiate the RTG4UPROM SgCore from the Catalog in SmartDesign and connect it up to CoreUPROMIF_APB as described in the System Integration section. If a UPROM.mem file is not present in the simulation folder of the Libero project, the simulation will pause and a message is displayed as shown in Figure 7 in the ModelSim Transcript window.
Figure 7 CoreUPROMIF_APB user testbench UPROM.Memory Transcript Message
For the user testbench simulation to progress, a client needs to be created in the RTG4UPROM configurator. For more information about configuring the RTG4UPROM SgCore and generating a UPROM.mem file into the simulation folder of the Libero project, refer to the Testbench Operation and Modification section.
Tool Flows
CoreUPROMIF_APB v2.0 Handbook 15
Synthesis in Libero To run synthesis on the CoreUPROMIF_APB, set the design root to the IP component instance and run the synthesis tool from the Libero design flow pane. Note: The design constraints that are detailed in the Design Constraints section must not be associated with
the Synthesis stage of the design flow, as errors may get generated due to the differences between the SDC syntax supported by Libero and Synplify.
Place-and-Route in Libero After the design is synthesized, run the compilation and then place-and-route the tools. Note: CoreUPROMIF_APB requires that the Repair Minimum Delay Violations option is selected along
with the Timing-driven layout. These options are selected by default, but right-clicking on the Place-and-Route entry in the Design Flow window and selecting Configure Options allows these settings to be verified/configured.
16 CoreUPROMIF_APB v2.0 Handbook
Test-bench Operation and Modification
The testbench packaged along with CoreUPROMIF_APB includes an instantiation of CoreUPROMIF_APB, connected up to the RTG4UPROM SgCore as shown in Figure 8. In order for the user testbench to execute an instantiation of the RTG4UPROM component must exist in SmartDesign alongside the CoreUPROMIF_APB instance, with a valid memory client defined for RTG4UPROM.
User Testbench
BFM_APB
APB Master BFM Script
(.bfm file)
APB I/F
bfmtovec.exe compiler
APB Master Vectors
(.vec file)
File I/O
CoreUPROMIF_APB
APB I/F
RTG4UPROM
UPROM macro
UPROM(.mem file)
UPROM I/F
Figure 8 User Testbench
The CoreUPROMIF_APB testbench environment consists of the following components: • BFM_APB: The APB_BFM component is a bus functional model (BFM), which emulates the operation of an
APB bus master. The operations carried out by the APB master are issued from the APB Master BFM script (user_tb.bfm file in the simulation folder of the Libero project). This BFM script is compiled into a vectorfile and passed to the BFM_APB component in the testbench. The default user_tb.bfm file, packaged along with CoreUPROMIF_APB performs a number of APB reads from the specific uPROM locations. Users can
Test-bench Operation and Modification
CoreUPROMIF_APB v2.0 Handbook 17
modify this script in order to simulate custom cases. For more information about modifying the contents of the user_tb.bfm script, refer to the DirectCore Advanced Microcontroller Bus Architecture – Bus Function Model User’s Guide.
• CoreUPROMIF_APB: Instantiation of the CoreUPROMIF_APB (DUT). Simulation is performed using the custom configuration of CoreUPROMIF_APB configured in SmartDesign.
• RTG4UPROM: An instantiation of the RTG4UPROM SgCore is required to provide access to RTG4’s uPROM memory. The content of the uPROM memory for simulation is determined by that of the UPROM.mem file (Microsemi binary format). The following procedure must be followed in order to generate a UPROM.mem file into the simulation folder of the Libero project:
1. Launch the uPROM client configurator for RTG4UPROM by right-clicking on the RTG4UPROM component in SmartDesign and selecting Configure.
2. Create a client as per the procedure defined in the RTG4 uPROM Configuration User Guide, and select the Use content for simulation checkbox in the Add/Edit Data Storage Client window.
3. Set the SmartDesign component as the root of the build by right-clicking on the SmartDesign component in the Design Hierarchy window and select Set as root.
4. Launch a Pre-Synthesis simulation from the Design Flow window. The dialog box as shown in Figure 9 is displayed. Select Yes to continue to launch the simulation.
Figure 9 Pre-synthesis Simulation Warning (No stimulus file in the project)
5. Alternatively, if a stimulus file for another testbench already exists in the project, the dialog box as shown in Figure 10 is displayed. Select No to continue to launch the simulation.
Figure 10 Pre-synthesis Simulation Warning (No associated stimulus)
6. A ModelSim window gets launched but the simulation will pause due to the absence of an active stimulus. Close the ModelSim window and return to Libero. The purpose of steps 4-6 was to force the UPROM.mem file to be generated into the simulation folder of the Libero project.
7. Set the CoreUPROMIF component as the root of the build by right-clicking on the CoreUPROMIF_APB component in the Design Hierarchy window and select Set as root.
8. Launch a Pre-Synthesis simulation from the Design Flow window. A ModelSim window gets launched, executing CoreUPROMIF_APB’s user testbench. Information of the APB read transactions performed are displayed in ModelSim’s Transcript window.
Note: The entire procedure outlined above needs to be reiterated, if any changes are made in the RTG4UPROM client configurator or user specified .mem file.
18 CoreUPROMIF_APB v2.0 Handbook
System Integration
To access RTG4’s uPROM memory block, CoreUPROMIF_APB needs to be instantiated with the RTG4UPROM SgCore and connected up, as shown in Figure 11.
Figure 11 CoreUPROMIF_APB Instantiation and Mapping the RTG4UPROM SgCore
To configure the uPROM memory contents users can right-click on the RTG4UPROM component in SmartDesign and select Configure. For more information on how to configure the RTG4UPROM component, refer to the RTG4 uPROM Configuration User Guide.
CoreUPROMIF_APB v2.0 Handbook 19
Design Constraints
Designs that contain CoreUPROMIF_APB and the RTG4UPROM SgCore require the following constraints to be applied in the design flow to prevent timing violations occurring in the design. The procedure for adding the constraints is as follows:
1. If the Enhanced Constraint flow in Libero v11.7 or later is used, double-click Constraints > Manage Constraints in the Design Flow window and click the Timing tab. Otherwise, go to step 3. If the design sources PCLK from a PLL, select Derive to automatically create a constraints file containing the PLL constraints, otherwise go to step 2. Select No when prompted to prevent the constraints being automatically included for Synthesis, Place-and-Route, and Timing Verification stages. If changes are made to the PLL configuration in the design, update the contents of this file by clicking Derive. Select Yes when prompted to allow the constraints to be overwritten. If the design’s PCLK frequency is not more than 30 MHz, go to step 11. Otherwise, in the Timing tab of the Constraint Manager window, select New to create a new SDC file, and name it. Design constraints other than the clock source constraints can be entered in this blank SDC file. Go to step 7.
2. If the Enhanced Constraint flow in Libero v11.7 or later is used and PCLK is sourced externally via a clock pad, in the Timing tab of the Constraint Manager window, select New to create a new SDC file and name it. The design constraints along with the clock source constraints can be entered in this blank SDC file. Go to step 4.
3. If Libero v11.6 or the Classic Constraint flow in Libero v11.7 or later is used, right-click Create Constraints > Timing Constraint in the Design Flow window and click Create New Constraint. This creates a new SDC file. The design constraints including the clock source constraints can be entered in this blank SDC file. Go to step 4.
4. If PCLK is sourced from a PLL in the design, go to step 5. Otherwise, if the design sources PCLK externally, calculate the PCLK period and half period. After completion, enter the following constraints in the SDC file:
create_clock -name { PCLK } \
-period PCLK_PERIOD \
-waveform { 0 PCLK_HALF_PERIOD } \
[ get_ports { PCLK } ]
For example, the following constraints need to be applied for a design that uses a PCLK frequency of 80 MHz:
create_clock -name { PCLK } \
-period 12.5 \
-waveform { 0 6.25 } \
[ get_ports { PCLK } ]
If the design’s PCLK frequency is greater than 30 MHz go to step 8, otherwise go to step 11 as PCLK is fed through as UPROM_CLK.
5. As the design sources PCLK from a PLL, constraints need to be applied to specify the frequency of the clock source to the PLL. The output of the PLL is determined by the PLL configuration.
Design Constraints
20 CoreUPROMIF_APB v2.0 Handbook
Clock Prescaler
CoreUPROMIF_APB
RTG4UPROM
GBRBuffer
Dedicated clock pad
RGBBuffer
APB Slave Logic
UPROM_CLK generated clock constraint
CLK_INPUTclock constraint
On-chipOscillator
Fabricinput
RTG4FCCC(PLL)
Source/Reference
Source/Reference
PCLK generated
clock constraint
(Buffers automatically inferred by tools)
Figure 12 Constraining a Design Sourcing PCLK from a PLL
Add the following constraints to specify the frequency of the clock input to the PLL. This input can be sourced from a dedicated clock pad input, a fabric input, or from the on-chip oscillator.
create_clock -name { CLK_INPUT } \
-period CLK_INPUT_PERIOD \
-waveform { 0 CLK_INPUT_HALF_PERIOD } \
[ get_ports { CLK_INPUT_PORT_PIN } ]
Where: CLK_INPUT_PERIOD is the period of the input source to the PLL CLK_INPUT_HALF_PERIOD is the half period of the input source to the PLL CLK_INPUT_PORT_PIN is the external port from which the clock is sourced when
using an external clock input routed through the fabric or when using a dedicated clock pad. If using a fabric generated clock or an on-chip oscillator, get_pins must be used in place of the get_ports command in the constraint shown above.
For example, if the CLK0 dedicated input pad is connected to an external 100 MHz oscillator, apply the following constraint:
create_clock -name { CLK_INPUT } \
-period 10 \
-waveform { 0 5 } \
[ get_ports { CLK0_PAD } ]
Alternatively, if the on-chip 50 MHz RC oscillator is used, apply the following constraint:
create_clock -name { CLK_INPUT } \
-period 20 \
-waveform { 0 10 } \
[ get_pins { RCOSC_50MHZ_0*CLKOUT } ]
6. Apply the following constraint to the output of the PLL that PCLK is sourced from:
create_generated_clock -name { PCLK } \
-multiply_by MULTI_VAR \
-divide_by DIV_VAR \
-source [ get_pins { RTG4FCCC_HIER_INST/CCC_INST*FCCC_INPUT } ] \
Design Constraints
CoreUPROMIF_APB v2.0 Handbook 21
[ get_pins { RTG4FCCC_HIER_INST/CCC_INST*FCCC_OUTPUT } ]
Where: MULTI_VAR is the factor by which the input clock is multiplied within the PLL (FCCC)
to achieve the output clock frequency DIV_VAR is the factor by which the input clock is divided within the PLL to achieve
the output clock frequency RTG4FCCC_HIER_INST is the hierarchical instance name and path to the
RTG4FCCC instantiation FCCC_INPUT is the name of the FCCC input from which PCLK is derived FCCC_OUTPUT is the FCCC output that PCLK is sourced from.
The MULTI_VAR and DIV_VAR arguments to the constraint specified above are determined by the configuration of the FCCC. Changes made to the PLL configuration must be reflected in these arguments. For example, if an 80 MHz PCLK is sourced from the GL0 output of a PLL connected to an external 100 MHz RC oscillator routed through the CLK0_PAD dedicated clock pad, the following constraint needs to be applied:
create_generated_clock -name { PCLK } \
-multiply_by 4 \
-divide_by 5 \
-source [ get_pins { RTG4FCCC_0/CCC_INST*CLK0_PAD } ] \
[ get_pins { RTG4FCCC_0/CCC_INST*GL0 } ]
If the design uses a PCLK frequency of more than 30 MHz go to step 7. Otherwise, go to step 11 as PCLK is fed through as UPROM_CLK.
7. As the design’s PCLK frequency is greater than 30 MHz, UPROM_CLK is generated using a register-based clock prescaler. As PCLK is sourced from the output of a PLL, apply the following constraint to UPROM_CLK:
create_generated_clock -name { UPROM_CLOCK } \
-divide_by CLK_DIV \
-source [ get_pins { RTG4FCCC_HIER_INST/CCC_INST*FCCC_OUTPUT } ] \
[ get_pins { COREUPROM_IF_APB_HIER_INST/UPROM_CLK_reg*Q } ]
Where: CLK_DIV mirrors the value specified for the CLK_DIV parameter in the Core
Configuration window. Refer to the Configuration Parameters section to determine the value of CLK_DIV.
RTG4FCCC_HIER_INST is the hierarchical instance name and path to the RTG4FCCC instantiation
FCCC_OUTPUT is the FCCC output that PCLK is sourced from COREUPROMIF_APB_HIER_INST is the hierarchical instance name and path to the
CoreUPROMIF_APB instantiation The generated clock constraints must not be applied from the source of the master clock in this instance. This preserves the clock insertion delay from the master clock source for timing analysis. For example, a design uses an 80 MHz PCLK sourced from the GL0 output of RTG4FCCC with instance name RTG4FCCC_0. A CoreUPROMIF_APB instance exists one level down in TOP_0, with an instance name COREUPROMIF_APB_0. In this case, the following constraints need to be applied to UPROM_CLK:
create_generated_clock -name { UPROM_CLOCK } \
-divide_by 4 \
-source [ get_pins { RTG4FCCC_0/CCC_INST*GL0 } ] \
[ get_pins { TOP_0/COREUPROMIF_APB_0/UPROM_CLK_reg*Q } ]
Go to step 9, as step 8 is irrelevant because PCLK is sourced from a PLL.
Design Constraints
22 CoreUPROMIF_APB v2.0 Handbook
8. As PCLK is sourced from an external input and has a frequency of greater than 30 MHz, UPROM_CLK is generated from PCLK using a register-based clock divider and must be constrained using the following constraint:
create_generated_clock -name { UPROM_CLOCK } \
-divide_by CLK_DIV \
-source [ get_ports { PCLK } ] \
[ get_pins { COREUPROM_IF_APB_HIER_INST/UPROM_CLK_reg*Q } ]
Where: CLK_DIV mirrors the value specified for the CLK_DIV parameter in the Core
Configuration window. Refer to the Configuration Parameters section to determine the value of CLK_DIV.
COREUPROMIF_APB_HIER_INST is the hierarchical instance name and path to the CoreUPROMIF_APB instantiation.
For example, CoreUPROMIF_APB is instantiated one level down from the root of the design in TOP_0. The CoreUPROMIF_APB instance name is COREUPROMIF_APB_0, and the design’s PCLK frequency is 80 MHz:
create_generated_clock -name { UPROM_CLOCK } \
-divide_by 4 \
-source [ get_ports { PCLK } ] \
[ get_pins { TOP_0/COREUPROMIF_APB_0/UPROM_CLK_reg*Q } ]
9. Add the constraints to the paths from the PCLK domain to the UPROM_CLK domain as shown:
set_min_delay MIN_DELAY \
-from { [ get_pins { COREUPROM_IF_APB_HIER_INST/UPROM_RDEN_reg*CLK } ] } \
-to { [ get_pins { RTG4UPROM_HIER_INST/UPROM_0*RDEN } ] }
set_max_delay MAX_DELAY \
-from { [ get_pins { COREUPROM_IF_APB_HIER_INST/UPROM_RDEN_reg*CLK } ] } \
-to { [ get_pins { RTG4UPROM_HIER_INST/UPROM_0*RDEN } ] }
set_min_delay MIN_DELAY \
-from { [ get_pins { COREUPROM_IF_APB_HIER_INST/UPROM_ADDR_reg*CLK* } ] } \
-to { [ get_pins { RTG4UPROM_HIER_INST/UPROM_0*ADDR* } ] }
set_max_delay MAX_DELAY \
-from { [ get_pins { COREUPROM_IF_APB_HIER_INST/UPROM_ADDR_reg*CLK* } ] } \
-to { [ get_pins { RTG4UPROM_HIER_INST/UPROM_0*ADDR* } ] }
Where: COREUPROMIF_APB_HIER_INST is the hierarchical instance name and path to the
CoreUPROMIF_APB instantiation. RTG4UPROM_HIER_INST is the hierarchical instance name and path to the
RTG4UPROM SgCore instantiation. MIN_DELAY specifies when the hold time check occurs. The value specified must be
zero for all cases. MAX_DELAY specifies when the setup time check occurs. The value specified must
be calculated using the following formula: 𝑀𝑀𝑀𝑀𝑀𝑀_𝐷𝐷𝐷𝐷𝐷𝐷𝑀𝑀𝐷𝐷 = 𝑃𝑃𝑃𝑃𝐷𝐷𝐾𝐾𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃 ∗ 𝑃𝑃𝐷𝐷𝐾𝐾_𝐷𝐷𝐷𝐷𝐷𝐷
SmartTime adds the clock skew associated with generating UPROM_CLK to the MAX_DELAY value specified for setup time checking and subtracts the skew from the MIN_DELAY value for hold time checking.
Design Constraints
CoreUPROMIF_APB v2.0 Handbook 23
For example, CoreUPROMIF_APB is instantiated one level down from the root of the design in ‘TOP_0’. The CoreUPROMIF_APB instance name is COREUPROMIF_APB_0. The RTG4UPROM instance name is RTG4UPROM_0, and the design’s PCLK frequency is 80 MHz.
set_min_delay 0 \
-from { [ get_pins { TOP_0/COREUPROMIF_APB_0/UPROM_RDEN_reg*CLK } ] } \
-to { [ get_pins { TOP_0/RTG4UPROM_0/UPROM_0*RDEN } ] }
set_max_delay 50 \
-from { [ get_pins { TOP_0/COREUPROMIF_APB_0/UPROM_RDEN_reg*CLK } ] } \
-to { [ get_pins { TOP_0/RTG4UPROM_0/UPROM_0*RDEN } ] }
set_min_delay 0 \
-from { [ get_pins { TOP_0/COREUPROMIF_APB_0/UPROM_ADDR_reg*CLK* } ] } \
-to { [ get_pins { TOP_0/RTG4UPROM_0/UPROM_0*ADDR*} ] }
set_max_delay 50 \
-from { [ get_pins { TOP_0/COREUPROMIF_APB_0/UPROM_ADDR_reg*CLK* } ] } \
-to { [ get_pins { TOP_0/RTG4UPROM_0/UPROM_0*ADDR*} ] }
These constraints enable the setup and hold time checking on the paths from the PCLK domain to the UPROM_CLK domain in SmartTime.
PCLK
UPROM_CLK
Skew due to clock generation
Hold check edge Setup Check Edge
Figure 13 Setup and Hold Checking – PCLK to UPROM_CLK
10. Add the following constraints to the paths from the UPROM_CLK domain to the PCLK domain:
set_min_delay MIN_DELAY \
-from { UPROM_CLOCK } \
-to { [ get_pins { COREUPROM_IF_APB_HIER_INST/UPROM_DATAR_reg*D* } ] }
set_max_delay MAX_DELAY \
-from { UPROM_CLOCK } \
-to { [ get_pins { COREUPROM_IF_APB_HIER_INST/UPROM_DATAR_reg*D* } ] }
Where: COREUPROMIF_APB_HIER_INST is the hierarchical instance name and path to the
CoreUPROMIF_APB instantiation. MIN_DELAY specifies when the hold time check occurs. The value specified must be
zero for all cases. MAX_DELAY specifies when the setup time check occurs. The value specified must
be calculated using the following formula: 𝑀𝑀𝑀𝑀𝑀𝑀_𝐷𝐷𝐷𝐷𝐷𝐷𝑀𝑀𝐷𝐷 = 𝑃𝑃𝑃𝑃𝐷𝐷𝐾𝐾𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃𝑃 ∗ 𝑃𝑃𝐷𝐷𝐾𝐾_𝐷𝐷𝐷𝐷𝐷𝐷
SmartTime subtracts the clock skew associated with generating UPROM_CLK from the MAX_DELAY value specified for setup time checking and adds the skew to the MIN_DELAY value for hold time checking.
Design Constraints
24 CoreUPROMIF_APB v2.0 Handbook
For example, CoreUPROMIF_APB is instantiated one level down from the root of the design in TOP_0. The CoreUPROMIF_APB instance name is COREUPROMIF_APB_0. The design’s PCLK frequency is 80 MHz:
set_min_delay 0 \
-from { UPROM_CLOCK } \
-to { [ get_pins { TOP_0/COREUPROMIF_APB_0/UPROM_DATAR_reg*D* } ] }
set_max_delay 50 \
-from { UPROM_CLOCK } \
-to { [ get_pins { TOP_0/COREUPROMIF_APB_0/UPROM_DATAR_reg*D* } ] }
These constraints enable the setup and hold time checking results on the paths from the UPROM_CLK domain to the PCLK domain in SmartTime.
PCLK
UPROM_CLKSkew due to
clock generation
Hold check edge Setup check edge
Figure 14 Setup and Hold Checking – UPROM_CLK to PCLK
11. Associate all constraints files with the Place-and-Route and Timing Verification stages in the Constraint Manager > Timing tab by selecting the related check boxes for the SDC file(s) in which the constraints were entered in.
CoreUPROMIF_APB v2.0 Handbook 25
List of Changes
The following table lists important changes that were made in each revision of the document. Date Change Page March 2016 Initial release. N/A
26 CoreUPROMIF_APB v2.0 Handbook
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 408.643.6913
Customer Technical Support Center Microsemi SoC Products Group staffs its Customer Technical Support Center with highly skilled engineers who can help answer your hardware, software, and design questions about Microsemi SoC Products. The Customer Technical Support Center spends a great deal of time creating application notes, answers to common design cycle questions, documentation of known issues and various FAQs. So, before you contact us, please visit our online resources. It is very likely we have already answered your questions.
Technical Support For Microsemi SoC Products Support, visit http://www.microsemi.com/products/fpga-soc/design-support/fpga-soc-support
Website You can browse a variety of technical and non-technical information on the Microsemi SoC Products Group home page, at http://www.microsemi.com/soc/.
Contacting the Customer Technical Support Center Highly skilled engineers staff the Technical Support Center. The Technical Support Center can be contacted by email or through the Microsemi SoC Products Group website.
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].
My Cases Microsemi SoC Products Group customers may submit and track technical cases online by going to My Cases.
Product Support
CoreUPROMIF_APB v2.0 Handbook 27
Outside the U.S. Customers needing assistance outside the US time zones can either contact technical support via email ([email protected]) or contact a local sales office. Visit About Us for sales office listings and corporate contacts.
ITAR Technical Support For technical support on RH and RT FPGAs that are regulated by International Traffic in Arms Regulations (ITAR), contact us via [email protected]. Alternatively, within My Cases, select Yes in the ITAR drop-down list. For a complete list of ITAR-regulated Microsemi FPGAs, visit the ITAR web page.
Microsemi Corporation (Nasdaq: MSCC) offers a comprehensive portfolio of semiconductor and system solutions for communications, defense & security, aerospace and industrial markets. Products include high-performance and radiation-hardened analog mixed-signal integrated circuits, FPGAs, SoCs and ASICs; power management products; timing and synchronization devices and precise time solutions, setting the world's standard for time; voice processing devices; RF solutions; discrete components; Enterprise Storage and Communication solutions security technologies and scalable anti-tamper products; Ethernet solutions; Power-over-Ethernet ICs and midspans; as well as custom design capabilities and services. Microsemi is headquartered in Aliso Viejo, Calif., and has approximately 4,800 employees globally. Learn more at www.microsemi.com. Microsemi Corporate Headquarters
One Enterprise, Aliso Viejo, CA 92656 USA Within the USA: +1 (800) 713-4113 Outside the USA: +1 (949) 380-6100 Sales: +1 (949) 380-6136 Fax: +1 (949) 215-4996 E-mail: [email protected]
© 2016 Microsemi Corporation. All rights reserved. Microsemi and the Microsemi logo are trademarks of Microsemi Corporation. All other trademarks and service marks are the property of their respective owners.
50200683-1/03.16
Microsemi makes no warranty, representation, or guarantee regarding the information contained herein or the suitability of its products and services for any particular purpose, nor does Microsemi assume any liability whatsoever arising out of the application or use of any product or circuit. The products sold hereunder and any other products sold by Microsemi have been subject to limited testing and should not be used in conjunction with mission-critical equipment or applications. Any performance specifications are believed to be reliable but are not verified, and Buyer must conduct and complete all performance and other testing of the products, alone and together with, or installed in, any end-products. Buyer shall not rely on any data and performance specifications or parameters provided by Microsemi. It is the Buyer’s responsibility to independently determine suitability of any products and to test and verify the same. The information provided by Microsemi hereunder is provided “as is, where is” and with all faults, and the entire risk associated with such information is entirely with the Buyer. Microsemi does not grant, explicitly or implicitly, to any party any patent rights, licenses, or any other IP rights, whether with regard to such information itself or anything described by such information. Information provided in this document is proprietary to Microsemi, and Microsemi reserves the right to make any changes to the information in this document or to any products and services at any time without notice.