Computer Laboratory

ECAD and Architecture Practical Classes

General troubleshooting tips

In an effort to reduce the number of students jumping off the balcony of the Intel Lab to a reasonable level, here are some suggestions should you become stuck:

Help! It doesn't work! What do I do now?

  • Isolate it between two areas, where one works and one doesn't. Even if the working bit is "When I press this button the LED comes on", at least that tells you the tools are working.
  • Have you imported the pin assignments from the file DE2_pin_assignments.csv? If not you need to do this.
  • Try using the LEDs to output signals you normally couldn't see.
  • If the monitor goes into standby when you upload your code, the VGA timing probably isn't set up correctly.
  • If the monitor turns on, but displays a blank screen, check your renderer code.
  • Try working with a slower clock to check individual signals at a speed you can comprehend. Note that if the VGA clock is changed, then the screen will go into standby as you will not be feeding it a valid VGA signal.
  • If you still don't know why your code isn't working as you expect, read through the compilation warning messages. Sometimes Quartus isn't sure what you're trying to do and makes a guess instead of raising an error. One common case that falls under this category is when you forget to declare a bus rather than a single wire. Quartus simply keeps the LSB and discards the rest, only raising a warning, not an error.

Quartus doesn't seem to reflect my source code changes when I re-program the board...

Check the programming file is set to the file <top-level name>.sof in the project directory. You can check this by opening up the programmer, and looking at the filename given. If it is wrong, double-click on it and select the correct file.

My assembler code isn't running - what now?

  • Make sure you do NOT prefix register names with "$".
  • Check the output window for any assembler error messages.
  • Do NOT assume the initial contents of any register -> always ensure you initialise them yourself.
  • Check the communication server log window for error messages.
  • If all else fails, disconnect from the board and close the communication server completely, and power-down the board. Then turn everything on again, reprogram the board, restart the communication server and try uploading the assembler again.

Quartus gives a strange error regarding M4K blocks

If you get a compilation message along the lines of "Error: M4K memory block WYSIWIG primitive utilises the dual-port dual-clock mode. However, this mode is not supported in the Cyclone II device family in this version of Quartus.", then there is a simple fix to this problem. Goto Assignments | Settings and on the left select Analysis & Synthesis Settings | Default Parameters. On the right, add the parameter with name CYCLONEII_SAFE_WRITE and default setting VERIFIED_SAFE. Case is important here. Click OK and re-compile and it should work ok.

Argh! I'm never going to get this finished in time!

  • If you don't finish in time, you can stay after/come back later and sort the practical out, then get it ticked at the next lab.
  • Alternatively, you can download Quartus Web Edition for free if you wish to work on this back at college or try something new with the board.
  • Read up on the lab before and figure out how to do it.

Compiling takes too long!

Compiling takes a long time since Quartus is basically trying to find a good solution to several NP-Complete problems. Particularly in the fitter stage. Don't complain about a build time of a few minutes, several hours is commonplace for larger designs! The only workaround is to check your code more thoroughly so you don't have to compile it as many times!

Quartus won't start - I'm getting error messages mentioning licence servers

This should be working. Call a demonstrator.