23
votes
Accepted
Why is this Verilog RAM modification better in terms of resource usage?
As Joshua says, something is clearly wrong here. The synthesis tool has clearly optimized away your memory.
Having had a quick readup on the ice40 blockram it seems to have registered output, so ...
14
votes
I know what a Reset signal is, but a Set/Reset signal? Isn't that impossible?
In all likelihood it isn't really a "set/reset" signal, so much as a signal that can be configured to be either set or reset depending on how the device is configured. Note that in figure 3.2 (copied ...
14
votes
Why is this Verilog RAM modification better in terms of resource usage?
Normally if my design shows a drop in resources it means that it actually 'optimized' something away; I suspect the same has happened here.
Typical FPGA toolchains will cut everything away that does ...
8
votes
Lattice Diamond gitignore
It took me a few hours of guess and check to figure out what exactly is needed and what isn't. The project I inherited used the project directory as the implementation directory (where it dumps most ...
8
votes
How the slew-rate and drive strength affect the output signal of the FPGA?
As its name suggest, the slewrate preference is a preference for the rate of change of the signal at the Output Pin. Though seemingly unrelated, this is coupled with the load preference (which limits ...
6
votes
Lattice iCEcube2, error synplify_pro 321
the issue here is that the "execute" script that iceCube2 is trying to run, is using as "shell" /bin/sh linked to /bin/dash, in Ubuntu, instead of /bin/bash.
the best workaround i found, is to change ...
6
votes
Accepted
Lattice FPGA - declare pin
The *.lpf file does indeed describe the pinout of the FPGA, however before explaining the lines, you should know that there is an easier way to assign them using the Lattice Diamond design software ...
5
votes
Create breakout for small FPGA in BGA package
Since the comments are going too far I am giving my opinion here.
You should search for a commercial evaluation board with a device similar to your target, possibly with the HDMI connector already ...
4
votes
Accepted
Create breakout for small FPGA in BGA package
Since these parts are preliminary and are not really in distribution yet (you say 13 weeks or 1/4 year to get initial units).. you might want to contact Lattice sales and see if they plan to have eval ...
4
votes
Accepted
Diamond: Warning: logical net has no load
This is a pet peeve of mine with synthesis tools in general — they tend to spew out a lot of irrelevant warning messages that make it very difficult to find the real errors in a design.
In this ...
4
votes
Accepted
How to Output DDR data to 1 register
The normal procedure is to use double the data width inside a DDR receiver.
So with a 12-bit DDR bus you must output the data to a 24 bit wide port/register.
The alternative is to use double the ...
4
votes
Accepted
Why can't I assign pin 18 on Lattice MachXO2-256-HC FPGA in my design?
The pinout files for your device can be found here. Based on the "MachXO2-256 Pinout" document, looking at the TQFP 100 package ("TG100" from part number):
We see that Pin 18 is a No-Connect pin.
...
4
votes
Accepted
JK flip flop using gate level description in Verilog gives me a timing error
I found this post: Is it possible to create a working JK-flip flop using gate level description in Verilog
Notice that the earlier question seems to be asking only about formally describing the JKFF ...
4
votes
Accepted
Lattice Diamond — How to identify which parts of design take most of FPGA resources?
You are mostlikely looking for the "Hierarchy – Post Synthesis Resources" view. In my version it is "hidden" as a tab next to the "File List" and "Process" ...
4
votes
Accepted
Why is this power-on reset generator Verilog module getting optimized out?
This is probably a quirk in synplify. Synplify is intended for synthesizing designs for ASICs, not FPGAs, and as a result is rather opinionated. For ASICs, it's common to not initialize anything, ever,...
4
votes
Accepted
FPGA pin numbers
The iCE40 represents a FAMILY of FPGA devices and not a specific part. So to determine the pinout you need to choose a specific model from the list of available parts offered and then consult the ...
3
votes
Accepted
I know what a Reset signal is, but a Set/Reset signal? Isn't that impossible?
In addition to @Tom Carpenter's excellent answer, we have another way to verify that this interpretation is indeed correct.
Project IceStorm provides complete documentation of the bits that configure ...
3
votes
Accepted
What is the purpose of this Verilog code for implementing 3-port Block RAM?
This has been unanswered for a day and I think I know why. If Verilog code becomes a bit bigger and complex it is very difficult to see all the temporal relations.
Even if the user puts lots of ...
3
votes
Accepted
Correctly initialize a shift register (Verilog)
In many cases FPGAs don't support power-on initial values of anything but 0. I know that all the Altera FPGAs I've worked with don't. In fact according to the datasheet for your FPGA, this is indeed ...
3
votes
Accepted
Fairly Simple VHDL SPI bus working in simulation but not on FPGA (Lattice MACHOX3LF-6900C FPGA and Lattice Diamond software)
Answering my own question here, as it turns out you are NOT supposed to use clock dividers in VHDL. I had falsely assumed this was fine as long as you treated each clock as a clock, however as it ...
3
votes
Accepted
Pin Assignment in ispLEVER Classic
Found it on my own after an hour of searching. As per the website:
How can I assign device pin out for GAL devices?
The Design Planner (or the Constraint / Preference Editor) is not
...
3
votes
Lattice Diamond gitignore
A way to figure out the required files is to use the "File"->"Save Project As..." and to specify a new folder where to save it. It look like Diamond then create a minimum of files while still allow to ...
3
votes
Accepted
Lattice — Should I prefer IPX/PMI over Verilog arithmetic builtins?
There's a fundamental functional difference between your code and what the IPX thing does: yours is not clocked.
Also, you can explitly tell the IPX thing how many pipeline stages you want, something ...
3
votes
Accepted
Meaning of numbers inside parentheses in Lattice Synthesis Engine Utilization Report?
According to my calculation, the number inside the parentheses is the usage of the module itself excluding submodule instances. The number before is the total of the architecture:
This means that in ...
2
votes
Accepted
How to programm a Lattice board?
After working around, I finaly find out how. Synplify Pro is the synthetize but you don't need to open it. In Diamond, you see this panel when you are in the workspace:
Click on the second tab "...
2
votes
Correctly initialize a shift register (Verilog)
The structured procedural statement 'initial' is not synthesizable. To initialize the value when your fpga powers on, you can give initiate the value of the register by giving the value at the time of ...
2
votes
How to add an internal signal to the waveform viewer in Aldec HDL for a Lattice Machxo3
OK, always seems weird answering your own question, but this might save people a lot of time in the future.
The big important thing here is that in Design | Settings | Access to Design Objects, you ...
2
votes
Accepted
Should FPGA interface an IC using more than one IO bank?
It depends. If you aren't using any specialized hardware features and the bank power supplies are the same IO voltage, then there are usually no issues.
Things you might have to watch out for if you ...
2
votes
Accepted
Getting started with TinyFPGA board (Lattice Semiconductor MACHXO2 chip)
Here is another answer on StackExchange which explains pin assignment for Lattice devices: https://electronics.stackexchange.com/a/232013/213609
As a starting point, I'd suggest you just synthesize ...
2
votes
Accepted
Programming (flashing) MachXO2 chips through JTAG
Removing R5 to R8 and connecting an external FT2232H should actually work. Can you check the connections once again? Chances are that you are right and that the TinyFPGA programmer does not recognize ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
lattice × 104fpga × 83
verilog × 23
vhdl × 13
synthesis × 5
adc × 4
reset × 4
programmer × 4
programmable-logic × 4
spi × 3
embedded × 3
flipflop × 3
counter × 3
ftdi × 3
ddr × 3
activehdl × 3
simulation × 2
programming × 2
interface × 2
timing-analysis × 2
optimization × 2
ide × 2
yosys × 2
synplify × 2
arduino × 1