I2C Read-back Failure Mode on Specific Use Scenario in MachXO2

Product Bulletin
February 2015
PB1412
I2C Read-back Failure Mode on Specific Use Scenario in
MachXO2 and MachXO3 Products and Work-Around Solutions
Lattice is issuing this Product Bulletin to inform that it identified a potential failure mode on I2C
read-back under certain use case scenarios in MachXO2 and MachXO3 Devices. The failure
mode is a limited use case, and most customers will not be impacted. However, for the limited
set of customers using the device in the use modes described below, there is a risk in I2C
read-back. We are communicating the potential failure modes and workaround solutions to
address it.
There is no datasheet specification change due to this finding. Datasheet specification remains
same as before. Since MachXO2 was introduced, thousands of customers globally installed
millions of units’ devices. To date, only a few customers noticed this issue in their specific
application environment and using solutions identified below have successfully mitigated the
issue.
Known Issue:
I2C Read-back Data is undefined in certain cases if the Embedded
Function Block (EFB) WISHBONE clock input port (‘wb_clk_i’) is
unconnected or is too slow.
No Customer Application Issue when:
1. I2C ports are NOT used in the customer application.
2. I2C ports are used in MASTER mode only.
a. Neither port is used for Configuration, Embedded Programming or User Slave I2C.
3. I2C ports are used in User or Configuration SLAVE mode but:
a. EFB Hard IP block is instantiated and WISHBONE clock is running >3.0 MHz.
Customer Application Is Exposed when:
1. Primary or Secondary I2C port is used in User or Configuration SLAVE mode, and
a. EFB Hard IP block is instantiated with wishbone clock is running <3.0 MHz, or
b. No EFB block is instantiated.
Note, for the purposes of this document, UFM access in XO2 and XO3LF should be
considered a Configuration Slave mode.
See Appendix 3 “Decision Tree” for a detail of possible use cases.
PB1412 XO2 XO3 I2C Read-back Failure Mode and Workaround Solutions v1_1.docx Page 1 of 6
If exposed, Lattice suggest one of the following two workaround options:
•
Option 1: FPGA Design Update (Preferred)
o No PCB change, FPGA code needs to be updated.
•
Option 2: I2C Configuration Algorithm Update (Limited application)
o No change on FPGA, but requires a I2C system controller software update.
o Only targets Configuration SLAVE mode.
o Not applicable if:
§ I2C User Slave ports are used and WISHBONE clock < 7.5x I2C bus speed.
Workaround Option 1: FPGA Design Update:
Instantiate EFB and connect Wishbone Clock of rate at least 7.5x the I2C bus rate
(e.g. >3.0 MHz for 400 kHz I2C bus).
Workaround Option 2: I2C Configuration Update:
Ensure certain configuration commands are executed within a valid configuration
edit mode.
Further details are explained in Appendix 1: “Common Application Issues”, Appendix 2:
“Frequently Asked Questions” and Appendix 3: “Decision Tree”.
Customers are advised to use workaround to prevent any possibility of field failures or
performance marginality. Lattice Semiconductor has no plan to further update the MachXO2
and MachXO3 product Family.
CONTACT
If you have any questions or require additional information, please contact
[email protected]
Sincerely,
Lattice Semiconductor MachXO2 and MachXO3 Product Line Management
PB1412 XO2 XO3 I2C Read-back Failure Mode and Workaround Solutions v1_1.docx Page 2 of 6
Revision History
Date
02/23/2015
03/04/2015
Version
1.0
1.1
Description of Revisions
Initial Release
- Improved Option 2 wording
- Added FAQ in Appendix 2
with a solution to EFB
synthesis optimization.
PB1412 XO2 XO3 I2C Read-back Failure Mode and Workaround Solutions v1_1.docx Page 3 of 6
Appendix 1 : Common Application Issues
Workaround Option 1: FPGA Design Update
Possible Use Scenarios
EFB already instantiated, but ’wb_clk_i’ is too slow
Design does not contain fast clock
In-field FPGA upgrade fails due to this issue
Design uses power control
FPGA Design is User I2C 'Master' only. (no
Configuration, Embedded programming, UFM, or
Slave I2C)
Only UFM is accessed by external Master, with
I2C bus speed <=200 kHz (no Configuration,
Embedded programming, or Slave I2C)
Design is 'validated' and cannot be re-built without
incurring significant revalidation effort
Recommended Workaround
Reduce I2C bus speed or
Increase ’wb_clk_i’ rate
Instantiate OSCH with Freq >= 3 MHz and
connect to ’wb_clk_i’
User must implement I2C Configuration Update,
or utilize an alternate sysConfig port if available
(for example, JTAG or SPI) to recover I2C access.
No impact - wake on I2C option wakes OSCH
No work-around is necessary
No work-around is necessary if impacted
commands are not used.
Contact Lattice for further assistance.
Workaround Option 2: I2C Configuration Update
Possible Use Scenarios
Recommended Workaround
Device ID check is prior to ISC_ENABLE/X
command
SRAM Done bit check is after ISC_DISABLE
command
Remove Device_ID check, or move Device_ID
check to after the ISC_ENABLE/X command
Remove READ_STATUS command
TRACE_ID, Check Busy, Read UserCode
commands are used (rare)
Issue ISC_ENABLE_X (SRAM mode) prior to
command, then ISC_DISABLE when done.
Design uses Embedded I2C - user has no control
over algorithm
User must implement FPGA Design Update, or
Contract Lattice for further assistance
I2C User Slave mode could still have marginal
timing problem if WISHBONE clock does not meet
7.5x rule
User must implement FPGA Design Update
PB1412 XO2 XO3 I2C Read-back Failure Mode and Workaround Solutions v1_1.docx Page 4 of 6
Appendix 2 : Frequently Asked Questions
1. Can Blank devices be programmed via I2C?
a. Yes. Blank or Erased devices are not in User Mode (DONE is false). Therefore these devices
are not affected by the issue.
2. Can programmed devices be re-programmed via I2C?
a. Yes. Once the device is placed into a valid configuration edit mode, devices are not affected by
the issue. However, in typical I2C access flows, some commands are commonly executed prior
to entering, or after exiting a valid configuration edit mode (for example, Read Device ID). The
FPGA must be updated or the access flows modified per this document.
3. What are the impacted configuration commands?
a. 0x19 Read Trace ID
b. 0x3C Read Status (common after Refresh or Disable)
c. 0xC0 Read Usercode
d. 0xE0 Read Device ID (common check prior to Erase/Program/Verify etc.)
e. 0xF0 Check Busy
4. What customer documents will be updated ?
a. MachXO2 and MachXO3 Technotes TN1204, TN1246, TN1279 and TN1294
5. When will the updated customer documentation become available?
a. Updated documentation will be available March 1, 2015
6. How will Diamond Design Software help users avoid the issue?
a. Two new Design Rule Checks (DRCs) will be added. The rules are:
i. If I2C port is persisted, Diamond software will check if ’wb_clk_i’ is connected:
1. If ’wb_clk_i’ is not connected, DRC will Error and stop
2. If ’wb_clk_i’ is connected but the frequency preference for the net is <3.0 MHz,
DRC will Warn and continue.
7. Will Diamond Programmer change?
a. Yes. Diamond Programmer will add a ‘Recovery' mode to erase the device via I2C without the
Device ID check. Once erased, all operations are possible.
8. When will Diamond and Diamond Programmer updates be available?
a. The full updates will be available in Diamond and Diamond Programmer Release 3.5 (mid-May,
2015)
b. A partial update (excluding the frequency preference DRC) will be available in Diamond and
Diamond Programmer Release 3.4.1 (March, 2015)
9. Is the Platform Manager device (LPTM21) affected?
a. Possibly. If the design was compiled previous to Diamond 3.5, contains no EFB-based IP (e.g.
Dual Boot, VID, Fault Log, PMBUS) and requires I2C Background programming, the Customer
application is exposed.
10. How do I ensure the EFB and the clock connection do not get optimized away by synthesis?
a. If the EFB is instantiated with no ports or connections other than ‘wb_clk_i’, most synthesis tools
will conclude the circuit is unnecessary (as there are no references to its outputs) and remove
both the EFB and the ‘wb_clk_i’ connection from the netlist. To avoid this, generate the EFB with
at least one I2C port (e.g. Primary I2C or Configuration I2C) in addition to the WISHBONE port.
Then route the EFB ‘i2c1_scl’ and ‘i2c1_sda’ pins to the top level design port list. Routing the
I2C port to the top level will have no impact to the original design, as the I2C port pins were
necessarily reserved (via persistence) to preserve I2C access from the beginning
PB1412 XO2 XO3 I2C Read-back Failure Mode and Workaround Solutions v1_1.docx Page 5 of 6
Appendix 3 : Decision Tree
Question 1
§
§
Does this MachXO2/3 design utilize the Primary or Secondary I2C port?
Yes: Go to question 2
No:
No impact. STOP
§
§
Is the Primary I2C port used on a non-blank device for Configuration, Embedded
Programming, or UFM access?
Yes: Go to question 4
No:
Go to question 3
§
§
Is the Primary or Secondary I2C port used on as an I2C slave in User mode?
Yes: Go to question 4
No:
No impact. STOP
§
§
Is the EFB Hard IP block instantiated?
Yes: Go to question 5
No:
Go to question 6
§
§
Is the EFB wb_clk_i port connected to an active clock with frequency > 7.5x I2C
bus frequency (SCL rate)
Yes: No impact. STOP
No:
Go to question 6
§
§
Is the design in Production?
Yes: Go to question 7
No:
"FPGA design update" is recommended. STOP
§
§
Is this an XO2 -AIX or XO3 design?
Yes: "FPGA design update" is recommended. STOP
No:
Go to question 8
Question 2
Question 3
Question 4
Question 5
Question 6
Question 7
Question 8
§
Is a "FPGA design update" possible?
Yes: “FPGA design update” is recommended. STOP
No:
Implement "I2C Configuration Update". STOP
PB1412 XO2 XO3 I2C Read-back Failure Mode and Workaround Solutions v1_1.docx Page 6 of 6