Hot answers tagged

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 ...
user avatar
  • 19.4k
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 ...
user avatar
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 ...
user avatar
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 ...
user avatar
  • 1,749
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 ...
user avatar
  • 260
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 ...
user avatar
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 ...
user avatar
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 ...
user avatar
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 ...
user avatar
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 ...
user avatar
  • 165k
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 ...
user avatar
  • 14.1k
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. ...
user avatar
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 ...
user avatar
  • 121k
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" ...
user avatar
  • 1,476
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,...
user avatar
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 ...
user avatar
  • 7,633
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 ...
user avatar
  • 641
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 ...
user avatar
  • 14.1k
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 ...
user avatar
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 ...
user avatar
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 ...
user avatar
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 ...
user avatar
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 ...
user avatar
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 ...
user avatar
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 "...
user avatar
  • 1,096
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 ...
user avatar
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 ...
user avatar
  • 1,334
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 ...
user avatar
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 ...
user avatar
  • 2,423
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 ...
user avatar
  • 1,476

Only top scored, non community-wiki answers of a minimum length are eligible