Release Notes for MPLAB® REAL ICE™ In-Circuit
Emulator &
Device (Production) Programmer
MPLAB® X IDE v2.20
September 2, 2014
Table of Contents
6 Repairs and Enhancements Made in v2.20
8 Powering the Emulator and Target Board
9 Setting Up the Emulator and Target Board
10 Device Programming Considerations
13 Number of Hardware Breakpoints per Device
14 Durability/Insertion Life Cycle of the Card Guide
Click the link below to see device support for “REAL ICE Debugging” (RID) and “REAL ICE Programming” (RIP).
For feature support by device family, see the emulator on-line help file, “Device and Feature Support”.
See section 10 for special device programming considerations to avoid damage these devices:
PIC24F/H |
dsPIC33F |
No Native trace available for these devices:
PIC10F/12F/16F |
dsPIC30F (2) |
PIC18F (1) |
PIC32MX (3) |
(1) Except for PIC18FXXJXX
devices
(2) Except for dsPIC30F SMPS devices (dsPIC30F1010/2020/2023)
(3) These devices use PIC32 instruction trace, if available (see below)
No real-time data capture available for these devices:
PIC10F/12F/16F |
dsPIC30F (2) |
PIC18F (1) |
|
(1) Except for PIC18FXXJXX
devices
(2) Except for dsPIC30F SMPS devices (dsPIC30F1010/2020/2023)
No SPI trace is available for these devices:
dsPIC30F1010 |
dsPIC30F3010 |
dsPIC30F4012 |
dsPIC30F2010 |
dsPIC30F3011 |
dsPIC30F4013 |
dsPIC30F2011 |
dsPIC30F3012 |
dsPIC33F |
dsPIC30F2012 |
dsPIC30F3013 |
PIC24F/H |
dsPIC30F2020 |
dsPIC30F3014 |
PIC32MX |
dsPIC30F2023 |
dsPIC30F4011 |
|
No I/O Port trace is available for these devices:
dsPIC30F1010 |
dsPIC30F3010 |
dsPIC30F5015 |
dsPIC30F2010 |
dsPIC30F3011 |
dsPIC30F6010 |
dsPIC30F2011 |
dsPIC30F3012 |
dsPIC33F |
dsPIC30F2012 |
dsPIC30F3013 |
PIC24F/H |
dsPIC30F2020 |
dsPIC30F4011 |
PIC32MX |
dsPIC30F2023 |
dsPIC30F4012 |
|
The following devices cannot perform data capture, runtime watches, and Native trace at 40 MIPS, or use trace on Ports C and D:
dsPIC33F RevA1 DSCs
PIC32 instruction trace is available for these devices:
PIC32MX360F256L |
PIC32MX460F256L |
PIC32MX360F512L |
PIC32MX460F512L |
For low pin-count devices (8 to 28 pins), a Header board is usually required. See the Header Board Specification (DS51292) or Header help file (hlpHeader.chm) for a list of available headers by device.
For high pin-count devices (40 to 100 pins), a Header board may be available, but is not required. See the Header Board Specification (DS51292) or Header help file (hlpHeader.chm) for a list of available headers by device.
See the Readme for MPLAB X IDE.htm for other support information.
Due to the built-in in-circuit debugging capability of some devices, and the ICSP function offered by the emulator, the MPLAB REAL ICE in-circuit emulator uses on-chip resources when debugging, i.e., some device resources are reserved for use by the emulator. For a list of reserved resources by device for the emulator, click the link below.
· MPLAB REAL ICE In-circuit Emulator Reserved Resources by Device
The following documents may be found on our website:
· Using MPLAB REAL ICE In-Circuit Emulator for MPLAB X IDE (DS51997)
· MPLAB REAL ICE In-Circuit Emulator User's Guide for MPLAB X IDE (DS52085)
· Development Tools Design Advisory (DS51764)
· Processor Extension Pak and Debug Header Specification (DS51292)
· Emulation Extension Pak and Emulation Header Specification (Help Only)
· Transition Socket Specification (DS51194)
On-line help may be found in MPLAB X IDE under Help>Help Contents and Help>Tool Help Contents>REAL ICE Help.
· New part support.
SSR |
Description |
Device(s) |
ICD3-366 |
Cannot debug devices supported by the AC162067 (PIC18FXXJ1X) header using MPLAB ICD3 or MPLAB REAL ICE in-circuit emulator. Workaround: PICkit 3 works fine. |
PIC18FxxJ1x devices |
MPLAB X IDE will install the USB device drivers for you. However, if you have previously used MPLAB IDE v8 or below, you should read “MPLAB IDE v8 Users – IMPORTANT” on the Start page.
Notes:
· USB 2.0 is recommended for use with these drivers. USB 1.1 may be used but may result in reduced performance.
· If you change emulator units or PC USB ports, you will need to reinstall the drivers.
· If you use a USB hub, it needs to be powered.
The MPLAB REAL ICE emulator is powered through its USB connection to the PC.
The target board is powered from its own supply. The emulator cannot provide power to the target board.
1. Install the USB drivers on your PC, as discussed above (USB Port Setup). When this is complete, MPLAB REAL ICE emulator should be plugged into a USB port of the PC.
2. If you have not already done so, connect to a target, either directly or through a header board. See on-line help or the user's guide for ways to connect the emulator to a target board.
3. Power the target.
4. Launch MPLAB X IDE.
5. In MPLAB X IDE, create or open a project with the emulator selected as the Hardware tool. The emulator will automatically connect when code is executed. (To always be connected, see Tools>Options, Embedded, Generic Settings, “Maintain active connection to hardware tool”.) Also, the emulator can automatically detect if it has been disconnected/reconnected and if the target has been disconnected/reconnected.
6. The emulator will now be ready for use.
Several 16-bit devices allow customers to define up to 3 programming segments: Boot, Secure and General. The purpose is to allow a customer to place proprietary data (libraries, IP address, etc.) into a protected boot or secure segment. That customer may then transfer these preprogrammed devices to another customer who would use the unprotected general segments.
For more details on CodeGuard Security functionality, please refer to the CodeGuard Security reference manual for 16-bit devices (DS70180) and dsPIC33F/PIC24H and dsPIC30F device programming specifications found on our website.
To program the preprogrammed devices, MPLAB IDE v8.00 and above provides a Secure Segment tab on the Settings dialog, accessed under either the Programmer or Debugger menu. This tab contains the following options:
· Full Chip Erase/Program
· Segment Programming
· Boot, Secure & General Segments
· Secure, General Segments
· General Segment.
The programming function of this tool is now capable of identifying various device segments and their sizes upon connecting the device. Hence, these options allow you to selectively program the program memory segments and thus avoid accidental eraser of preprogrammed proprietary data (Libraries, IP, etc.)
When programming these devices, bulk erase commands should be issued between successive programming operations, i.e., erase, then program, then erase, then program, etc. Therefore, Microchip advises against multiple-stage programming sessions which may fail to verify. For example, you should NOT do the following sequence with these devices:
The following is a list of known problems. For information on common problems, error messages and limitations please see Troubleshooting in the on-line help file for the MPLAB REAL ICE emulator. Bolded prefix represents internal tracking numbers.
Emulator
· Engineering Technical Notes (ETNs)
Emulator Accessories
· During firmware updates, communication can be lost if your PC is a Lenovo® Laptop running Window® OS which contains the following USB 3.0 chipset: “Renesas Electronics USB 3.0 Host Controller”, VendorID = 1033, DeviceID = 0194.
Work-around: Start>All Programs>Renesas Electronics>USB 3.0 Host Controller Driver>USB 3.0 Host Controller Utility. The utility contains a checkbox that you should check to disable it in the pop-up window.
· If you do not use the included cables, make sure the cables you do use are: (1) not longer than 6 inches for standard communications or errors could result and (2) USB 2.0 compliant if you will be using USB 2.0 communications.
· Using the USB connection on a laptop PC with suspend mode enabled will lock up the emulator if suspend mode is entered. Unplug the USB cable from the MPLAB REAL ICE emulator and then plug the cable back in to resume debugging. You may want to disable suspend mode while using the emulator. From Control Panel, select "Power Options" and disable suspend mode.
· Running a data capture at greater than 16 MIPS may result in a bad header error. At higher speeds decrease the number of data capture points or the frequency of the capture. For example create a trigger on a temporary variable that gets changed ever nth cycle.
· Virus protection software can interfere with USB driver installation. If your development tool is not operational and you have tried reinstalling the USB drivers, consider disabling your virus protection software and reinstalling the USB drivers again.
RI-38: If the target voltage is changed while the MPLAB REAL ICE emulator is connected, the emulator’s Vdd may be out of range.
MPLABX-390: Problems with connecting a pendrive while MPLAB ICD 3 or MPLAB REAL ICE emulator used as Debugger in Win XP 32 bit. These problems do not occur if the USB pendrive is connected before MPLAB X IDE connects to these tools.
MPLABX-303: Mac OSx - 32 seems to think MPLAB REAL ICE emulator was MPLAB ICD 3 and PICkit 3 was PICkit 2. If the tool is plugged into the SAME USB port, then this problem can occur. If the tool is plugged into a different USB port, then this problem is not observed.
· The breakpoint dialog doesn’t accept Auxiliary memory addresses. The only way to set breakpoints in Aux memory is via double clicking.
· If there is a Software breakpoint on a function call to a function that is in Auxiliary memory, single stepping over that breakpoint will not work properly.
· Verifying Auxiliary Memory sometimes will proceed even when verifying Program memory has failed.
· When programming in Debugger mode, a message may come up that protection bits need to be turned off even though they show as being turned off in the Configuration Bits window.
· The UART does not freeze when in debug mode for PIC24EPxxxGU/dsPIC33EPxxxMU devices.
The following are enumerated issues for the emulator.
SSR |
Description |
Device(s) |
RI-612 |
Blank Check fails for PIC32MZ devices |
PIC32MZ family |
RI-611 |
Runtime watches do not work for PIC12(L)F1xxx and PIC16(L)F1xxx devices. Emulation Extension Pak do not have this issue. |
PIC16F1939, PIC16F1789 |
RI-608 |
Programming and Debugging fails at Vdd minimum when 'Enable Low Voltage Programming' is enabled for PIC12(L)F1xxx and PIC16(L)F1xxx devices. |
PIC12(L)F1xxx, PIC16(L)F1xxx |
RI-607 |
PIC32 PE command GET_DEVICEID returns only one byte of Device ID with the higher byte always zero |
|
RI-605 |
Unable to erase PIC32MX450F256L with the JTAG driver board after it has been programmed with code protect enabled. Workaround: Use the standard driver board or other ICSP tools. |
PIC32MX450F256L |
RI-604 |
Cannot Debug PIC32MZ with oscillator configured to use LPRC |
|
RI-595 |
Setting Software breakpoints for certain PIC18 devices generates an error in the MPLAB X IDE. |
PIC18F2220, PIC18F2221, PIC18F2320, PIC18F2321, PIC18F2331, PIC18F242, PIC18F2431, PIC18F2450, PIC18F252, PIC18F258, PIC18F2682, PIC18F2685, PIC18F4220, PIC18F4221, PIC18F4320, PIC18F4321, PIC18F4331 PIC18F442, PIC18F4431, PIC18F4450, PIC18F448, PIC18F452 |
RI-566 |
Code cannot run past the first software breakpoint when two or more contiguous software breakpoints are set in assembly language code. |
dsPIC33EP64MC502, dsPIC33EP512GM710 |
RI-552 |
Not halting on data breakpoints on the STKPTR register. |
PIC18F8720 |
RI-542 |
Debugging issue: Program Counter does not reset at Fosc = 32 kHz but will at higher Fosc frequencies - (frequency-dependent issue). |
PIC18F45K50 44-pin rev A0 using dedicated ICSP channel (ICPORT), PIC18F46K22, PIC18F14K22 |
RI-541 |
Register 'PCLATU' cannot be cleared to 0x00 in the 'Watches' or 'Variables' window (value is stuck at 0x20) -- bit 5 (zero-based) is always '1'. While viewing 'PCLATU' in the MPLAB X IDE 'Watches' or 'Variables' window, bit 5 (zero-based) of 'PCLATU' will be inadvertently shown as '1' even if user code attempts to force it to zero. Please note that this issue does not affect the user code value of 'PCLATU', only the value in the 'Watches' or 'Variables' window. |
PIC18F45K50, PIC18F46K22 |
RI-533 |
Runtime read/update of watch window variables doesn't take effect on dsPIC33EP/PIC24EP devices. |
dsPIC33EP, PIC24EP |
RI-526 |
High speed (~40 MIPS) runtime watch seems to cause data corruption. |
dsPIC33FJ245GP710A |
RI-517 |
When using Data Capture on a PIC32, an incorrect symbol (_persist_begin) appears in the variable list. In general, the first initialized global variable will be replaced. |
All PIC32MX devices that support data capture such as the PIC32MX795F512L |
RI-503 |
For PIC18F devices, Trace and Log macros within tight loops do not work when using IO PORT Trace. The workaround is to use NOP instructions within the loop. |
PIC18F devices |
RI-489 |
Runtime Watch & Data Capture have a silicon errata limitation which prevents these features from working up to the maximum Fosc frequency of 32 MHz for Enhanced Midrange devices. Work-around: In order to ensure reliable Runtime Watch & Data Capture operation it is recommended to keep the maximum Fosc at or below 3 MHz during the debugging phase of product development. |
PIC16F1xxx devices |
RI-481 |
Runtime watch does not work for arrays defined in a struct for PIC32MX devices. |
PIC32MX devices |
RI-476 |
Add Breakpoint Dialog box does not accept Auxiliary memory addresses. Work-around: One can go into the program memory window and set the breakpoint. |
dsPIC33EP512MU810 family |
RI-449 |
Step-over will cause code to run if the statement following the step-over is part of a sequenced breakpoint. Stepping over a function works by setting a breakpoint right after the function and issuing a Run. However if the next statement has a breakpoint already, the IDE will not set a breakpoint assuming that the existing breakpoint will suffice. But if that existing breakpoint is part of a sequence, MPLAB IDE will still not issue a breakpoint even though that execution isn't guaranteed to stop at the following statement (since the whole sequence has to be followed first before the program halts). |
dsPIC33FJ256GP710, dsPIC33EP512MU814, probably other devices that supports sequenced breakpoints |
RI-409 |
"MPLAB IDE v8.xx - For PIC32 devices, single stepping becomes very slow and apparently code runs if single stepping is started from within the middle of the assembly instructions required to do a variable update. These instructions are: lw |
PIC32MX devices |
RI-391 |
Performing Build All will disable runtime watch for some of the array elements. This happens when array elements manually enabled for run time watch. |
PIC32MX devices |
RI-354 |
Using REAL ICE as a debugger for the PIC18F46J50 (or PIC18F46J11), the SPI Trace is not functioning as expected. |
PIC18F46J50 & PIC18F46J11, possibly others. |
RI-350 |
[PIC32 REAL ICE Trace] Instructions in the trace window have incorrect addresses when compared with the actual memory contents for PIC32 devices in some cases. |
PIC32MX devices |
RI-348 |
[PIC32 Trace] PIC32 instruction trace does not match disassembly when instruction in branch delay slot is other than NOP |
PIC32MX family |
The following are enumerated issues for other tools that relate to the emulator.
SSR |
Description |
Device(s) |
ICD3-369 |
For PIC16F570 (header AC244062), there is no debug visibility into GPR banks 4, 5, 6 and 7, although user access to these banks works. |
PIC16F570 |
ICD2-81 |
For PIC24F devices during a programming/verify operation (or subsequent verification operation) of user code that performs self-writes and/or self-erases to program space, a verify sequence may fail if the code execution occurs within the first execution cycles following reset. Workaround: Place a delay in your code before the code section that performs the self-write and/or self-erase. The specific delay value may need to be adjusted, but 100 ms would be a conservative value to start out with. Here is a C language example that illustrates the workaround: int main (void) { // Place 100 ms delay here before any self-write/self-erase code : : : } |
PIC24F devices |
Low-Voltage Programming will not work on the following devices. This is because of known errata on some versions of the devices (LVP bulk erase not available). Device Revision Errata Document PIC12F/LF1822 Rev 6 DS-80502 Rev E PIC16F/LF1823 Rev 6 DS-80502 Rev E PIC16F/LF1824 Rev A1 DS-80000510 Rev J PIC16F/LF1828 Rev A1 DS-80000510 Rev J PIC16F/LF1933 Rev A1, A2, A3 DS-80000490 Rev M Work around Method 1: If ICSP Low-Voltage Programming mode is required, use row erases to erase the program memory, as described in the Program/Verify mode section of the Programming Specification. Data memory must be over-written with the desired values. Method 2: Use ICSP High-Voltage Programming mode if a bulk erase is required. |
PIC12F1822, PIC12LF1822, PIC16F1823, PIC16LF1823, PIC16F1824, PIC16LF1824, PIC16F1828, PIC16LF1828, PIC16F1933, PIC16LF1933 |
|
SPI001-113 |
SPI misses SDI input when single stepping with freeze in debug enabled. |
dsPIC33EP/PIC24EP |
TBAA0-199 |
When reading a device with a programmer, code or write protection applied to either the General or Auxiliary Segment is being applied to both; therefore all flash memory will read back as zero. Only devices with no code or write protection applied can be successfully read using a programmer. This limitation applies to revision B1 (0x4002) of the following devices: PIC24EP512GU814 PIC24EP512GU810 PIC24EP256GU814 PIC24EP256GU810 dsPIC33EP512MU814 dsPIC33EP512MU810 dsPIC33EP256MU814 dsPIC33EP256MU810 dsPIC33EP256MU806 PIC24EP512GP806 dsPIC33EP512GP806 dsPIC33EP512MC806 |
dsPIC33EP/PIC24EP |
The following ETNs are related to the MPLAB REAL ICE in-circuit emulator. Please see the product webpage for details.
· ETN-30: Applies to Assembly #10-00401-R1 or below.
The following are bulleted and enumerated issues for emulator headers (-ME2).
SSR |
Description |
Device(s) |
MPLABX-1945 |
Sporadic Trace window refresh issues show incorrect trace data. Using the mouse wheel more likely to cause this issue than using the window scroll bar. Workaround: Put focus on another window and then return to the trace window. |
|
MPLABX-1926 |
Sequence breakpoint information is not being saved in the MPLAB X IDE project. |
|
The following are enumerated issues for the Power Monitor (PMON).
SSR |
Description |
Device(s) |
MPLABX-1754 |
Power Monitor data is not updated after single stepping. Only Run is supported. |
|
· For PIC16F616 devices, the emulator does not row erase the device below 4.5V. A bulk erase will be required which must take place with Vdd above 4.5V. (ICD3-125)
· When using real-time data capture trigger or Capture trace, standard communication can only provide a data rate of 15 MIPS. For speeds up to 40 MIPS, high-speed communication will be required, via the Performance Pak.
· When using I/O Port trace, make sure multiplexed device port pins are set as I/O pins.
· When adding/removing Capture or I/O Port trace points, you must rebuild and reprogram the project the device – end debug session, add trace points, and then start debug session again.
· Make sure that table reads/writes are not code protected.
· At low Vdd, bulk erase will not erase code protect bits.
· Before setting the Stopwatch between any 2 Software breakpoints, ensure that the total number of Hardware breakpoints being used is always 2 less than the Maximum number of Hardware breakpoints available for the device.
1.
RB0 and RB1 pins:
If the MPLAB REAL ICE emulator is selected as a debugger, it initializes all
the A/D input pins - AN0 (RB0) through AN15 (RB15) pins - as
"digital" pins, by setting all 16 bits in the ADPCFG register.
For example, if EMUD3 and EMUC3 are used as the debug pins on a dsPIC30F2010 device, then bits 0 and 1 of the ADPCFG register must remain set at all times. Similarly, if EMUD and EMUC are used as the debug pins on a dsPIC30F5011 device, then bits 6 and 7 of the ADPCFG register must remain set at all times. In such cases, you must also take proper precaution to isolate the application circuitry from the corresponding A/D pins during debugging.
For example, if AN4 and AN5 are required as analog input pins, then bits 4 and 5 of the ADPCFG register must be cleared.
2.
SLEEP, IDLE, WDT, Clock Switching:
For dsPIC devices, debug operations can be executed on programs which use SLEEP
or IDLE mode, Watchdog Timer, and/or Clock Switching.
3.
Debug during SLEEP or IDLE Mode:
When the device is in SLEEP and IDLE mode and a Halt command is issued, the
MPLAB REAL ICE emulator will wake up the device and halt execution on the
instruction immediately following the PWRSAV instruction.
4. Interrupts:
5.
Break Point Behavior:
If a break point is set on an instruction that follows a taken branch, the
Breakpoint will be triggered even though the branch went elsewhere.
6.
Break Point Behavior and Skidding:
It is possible that a breakpoint halt will exhibit program memory skidding in
that the execution stops N instructions after reaching the breakpoint. The
following definitions are provided and referred to:
· One skid - A breakpoint occurs AFTER the instructions is executed (PC+2)
· Two skid - A break point occurs AFTER the NEXT instruction (PC+4)
Break Point Behavior:
· If a Non-Program-Flow, modifying, Single-Word, Two-Cycle instruction (such as Table or PSV) precedes a break point instruction, then the breakpoint occurs BEFORE the instruction at the breakpoint address is executed (ONE SKID).
· All other instructions have a "TWO SKID", which means the break occurs AFTER the NEXT instruction is executed.
7. The CAN module, unlike the other peripherals, does not get frozen in the following situations:
· during a Halt
· during a stop on a Breakpoint
· after a Single-Step
For example, if you set a Breakpoint and run to it, the CAN module continues to run in the background, and it may seem that data transmissions and receptions have completed immediately.
8.
DISICNT register:
In five dsPIC30F devices (dsPIC30F6010, dsPIC30F6011, dsPIC30F6012,
dsPIC30F6013 and dsPIC30F6014), since the DISICNT register continues to
decrement even when the device is halted by the debugger, the DISICNT value
will always be seen as 0x0000 in the Watch, SFR and File Registers windows. To
monitor the DISICNT value, add code to copy the DISICNT register contents to a
W register or memory location and monitor the value of the corresponding W
register or memory location in the Watch, SFR or File Registers window.
9.
ADCMD bit in PMD1 register:
The user application must not set the ADCMD bit (bit 0 of PMD1 register). This
would lead to incorrect ICE operation.
10. SPLIM
register:
When using the MPLAB REAL ICE emulator as a Debugger, your software must
initialize the Stack Pointer Limit register (SPLIM) before using the stack
(device errata).
11. Single-stepping
a DO loop:
In five dsPIC30F devices (dsPIC30F6010, dsPIC30F6011, dsPIC30F6012,
dsPIC30F6013 and dsPIC30F6014), single-stepping through a DO loop in dsPIC30F
assembly code results in the loop getting executed one less time than expected.
12. Pass
Counter feature in Advanced Breakpoints:
For a specified Pass count of 'N', the code will break after 'N+1' occurrences
of the breakpoint instead of 'N' occurrences.
13. If you need to use the Fail-Safe Clock Monitor feature on a dsPIC device when using the MPLAB REAL ICE emulator for debugging your application, a Watchdog Timer Device Reset will occur, even if the Watchdog Timer has not been explicitly enabled in the application. To work around this issue, use the "CLRWDT" instruction in the main loop of your application code. This will ensure that the Watchdog Timer gets cleared before it causes the device to reset.
· Instruction Trace: When using the trace functionality ensure TROEN bit on DDPCON register is not modified in your code. Refer to the data sheet for more information.
To see the number of breakpoints supported for your device and the number of breakpoints used in your project, use the Dashboard window (Window>Dashboard).
Breakpoint support per device is as follows:
Devices |
Number of Hardware Breakpoints |
Notes |
PIC12F/16F |
1 |
|
PIC16F1xxx enhanced |
1 or 3 |
(1) |
PIC18F |
1 |
|
PIC18F enhanced |
3 |
|
PIC18FxxJ |
3 or 5 |
(2) |
dsPIC30F |
2 |
|
dsPIC33F/PIC24 |
4 |
|
dsPIC33EP/PIC24EP |
2 |
|
dsPIC33EP/PIC24EPxxxxx8xx |
3 |
|
PIC32MX |
6 |
|
Note 1: Refer to the Development Tools Selector (DTS) on microchip.com to select your device and determine the number of available breakpoints for the device and its related processor extension pak or debug header.
Note 2: There is a limitation for these devices that only 1 data capture is available.
The card guide is the part of the emulator pod where the communications board (either standard or high-speed) is inserted into the pod.
SAMTEC
Durability Summary Report
PART DESCRIPTION
MB1-130-01-S-S-02-A1-N
&
MB1-130-01-H-S-02-A1-N
(The “-H” 50u” thick Au Plating is currently non-standard.)
SCOPE: To perform the following tests: Durability up to 10,000 cycles.
For the complete report, see:
http://www.samtec.com/technical_specifications/test.asp?series=MB1&menu=STANDARD_PRODUCTS