bizzare unexplained random errors w/ Lattice 4256V CPLD

We are using VHDL on a new design with a Lattice 4256V and are running into problems with our shift registers. We're using ispLEVER 5.1 trial along with Synplicity synthesis. Here's our generic 11-bit shift register with async. parallel load:

--

-- 11 bit shifter for data serialization

-- library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_arith.all; use IEEE.STD_LOGIC_unsigned.all;

entity shifter11 is port( clk:in std_logic; rst:in std_logic; data_in:in std_logic_vector(10 downto 0); shift_load_select:in std_logic; shift_in:in std_logic; data_out:out std_logic); end shifter11;

architecture bhv of shifter11 is signal data_latched: std_logic_vector(10 downto 0); begin process(clk,rst,data_in,shift_load_select) begin if(rst='0') then data_latched

Reply to
shawnn
Loading thread data ...

Reply to
Gabor

"async. parallel load" can be dangerous - what releases the Load signal, relative to the Clock ? If your load has no release precautions, then yes, you can expect nasty aperture effects if/when the release hits a shift clock edge.

If it mostly works, then it is not likely to be a tool-error. Fuse/map errors tend to be hard, in nature.

If you added an Nth bock, and that (or other) blocks then fail (always), that is (likely) a tool chain issue.

-jg

Reply to
Jim Granville

on the Lattice website forums

formatting link
Lattice's response was as follows:

------------------------------------------------------ The fact that the error happens occasionally, and doesn't happen at all with fewer shift registers, suggests that it's either a timing issue or a board level issue. If the error occured all of the time, or when it went bad it stayed bad, I would agree that it could be a logic problem. By the way, does the design occasionally not drive a bit high (a hole in the shift sequence) or does the shift sequence get off by a clock? Is it happening on all shift registers, or just one?

Make sure that you have set proper timing contraints for your design and that you check the log files for violations.

Assuming the timing looks good, I'd check your board level design. Make sure you aren't overworking the outputs, take a look at page 20 of the datasheet. Keep in mind that if you are driving many loads all at once you can create ground bounce significant enough to affect the part. You might try different input patterns to see if this changes things (use a pattern that generates less toggling of the outputs). Also check that you have sufficient numbers of high frequency (.1uf or .01uf) and mid frequency (10uf to 47uf) capacitors. Check that your power supply isn't drooping. Check that the power supply doesn't get more noisy as the load increases.

------------------------------------------------------ Hope this helps! Bart Borosky Online Marketing Manager Lattice Semiconductor

Reply to
bart

Reply to
shawnn

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.