Skip to main content

FPGA stuff

Learning VHDL

A nice free book about VHDL is Free Range VHDL

Other site to learn VHDL I recently spotted is surf-vhdl.com

 Learning TCL 

Check out www.tcl.tk

Use Atom for VHDL editing

Check out this post https://aebtb.blogspot.com/2020/02/atom-vhdl-editing-with-syntax-checking.html

Or if you really have to, VS code does support VHDL syntax checkin after installing this as well. 

Vivado Tip

Working with IPs and version control is a bit challenging. One really should not want to check in those large XCI files, which are actually some archive of quite a bit of generated files.
Instead of archiving the XCI, one can export the IP to a small script with the configuration in use with this simple TCL command:

write_ip_tcl [get_ips ip_name_here] file_name_there.tcl

To load the file, simply type on the TCL command line, or as part of a project setup script:

source file_name_there.tcl


Vivado Quircks

Abnormal program terminations:
https://forums.xilinx.com/t5/Design-and-Debug-Techniques-Blog/Vivado-Synthesis-Crash-Debugging-Guide/ba-p/946862

Huge Internationalisation bug in Ubuntu 18.04 that Xilinx support tries to ignore in all possible ways. Very annoying. Either set system language to US English OR overrule the Numeric locale to (US) English in your startup script to open Vivado. E.g.

#!/bin/bash
export LC_NUMERIC=en_US.UTF-8
source /opt/Xilinx/Vivado/2018.3/settings64.sh
/opt/Xilinx/Vivado/2018.3/bin/vivado &

Example startup script and Desktop launcher can be found on Eli Billauer excellent site: http://billauer.co.il/blog/2014/07/gnome-xilinx-desktop-icons-launcher/

Vivado things to consider

Block level synthesis options per XDC constraints:
https://blog.hackster.io/microzed-chronicles-block-synthesis-465f872d5b4e

Reporting control sets.

When having a troubles getting a design through place and route and achieve timing closure, it could be you are running into problems with either too many resources in use or a too high number of control sets.

This report can be quite large, and if you use an UltraScale device, by default the command will not report the control sets by Super Logic Region (SLR). The following TCL command does achieve that:

Get control sets in a specific SLR: e.g.
first run get_slrs (returns a list of possible SLRs)
report_control_sets -cells [get_cells -of_objects [get_slrs SLR0]] -verbose

Get control sets in a specific clock region: e.g
first run get_clock_regions (returns a list of possible clock regions)

report_control_sets -cells [get_cells -of_objects [get_clock_regions X6Y4]] -verbose  

With get_tiles and get_sites you could zoom in even further to problem or congested areas.

The UltraFast method will guide you through some of the most important issues as well. It is usually a good starting point to get to the bottom of such problems.


AXI protocol
An excellent explanation of the AXI protocol, right here on blogspot!


Quartus Quircks

Running Modelsim ASE on Linux, the same solution worked for Quartus 15.0 on Ubuntu 18.04 :
http://mattaw.blogspot.com/2014/05/making-modelsim-altera-starter-edition.html

Nice new stuff from Microchip/Microsemi, the Polarfire SoC with Risc-V core!

https://youtu.be/BwpUz9nwm8c


Git version control

Are you an FPGA engineer having some difficulties with Git, because of it's learning curve? Read on!
Git is maybe not the easiest or most entry level version control system, though in it's core it is not extremely complicated.
Most FPGA engineers should be able to learn it quite easily.

First of all, I highly recommend using a decent GUI for Git, like SmartGit to ease the initial user experience.
It provides various views and visual clues by colour encoding for altered files in the working directory.
Remote repo changes can be polled (or fetched manually) and indicated with an incoming arrow, unpushed changes are indicated by an outgoing arrow icon.
Quite easy and clear.

SmartGit is also a great cross-platform solution. Just works on any OS.
SmartGit takes the pain out of creating SSH connections from a Windows machine, since it comes with built in SSH support.
Alternatives are gitk or others, but may be more platform dependent.

Some nice visual Git cheatsheets:
A nice Git cheatsheet from GitLab, take special note of the Zoo of Working Areas on page 2!
https://about.gitlab.com/images/press/git-cheat-sheet.pdf

A Visual Git Reference, makes it very clear how Git works in just a few diagrams.
https://marklodato.github.io/visual-git-guide/index-en.html

Of one does choose to use Git on the command line, it is also vital to understand how to deal with SSH connections.
A nice introduction to SSH can be found here
Understanding the SSH Encryption and Connection Process https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process

When using a GitLab server, it provides some clear documentation on where to store your public key for the various machines you're using.
https://docs.gitlab.com/ee/ssh/README.html#adding-an-ssh-key-to-your-gitlab-account

Comments

Popular posts from this blog

ADR modules part 2, to recap or not?

Electrolytic capacitors have a wet dielectric which degrades with age and temperature. As a result the extremely thin oxide layers may become less isolating when stored over decades. Either the capacitor shorts or opens at some point, or just doesn't perform as good when it was new. Re-capping is the usual procedure to replace (all) electrolytic caps in restoring old audio equipment. The most common coupling capacitor value in these modules is 15uF / 40V. These smaller values might be replaceable with solid foil capacitors, though it largely depends on the space on the circuit board if this is possible and the cost involved. High-end audio nut cases (no relation to this blog) may spend top dollar/euro/yen on such things. Here it just has to be in line with the actual value of these units. So we will only use foil if the costs are limited. Otherwise just stick to cheap but good quality electrolytic caps. The likes of Nichicon, Panasonic, Vishay. Vishay bought a lot of the old Eur

ADR modules part 1

This is a restoration project I’ve been procrastinating around since about 2015. This will be quite some work, but then if one doesn’t start at least it will not happen at all. This will be a step by step project, and see how far we get with this Kaizen like approach. So first a short intro of the four audio modules made by Audio & Design (Recording) Ltd, in the mid 70s based in Shinfield Green, Reading, Berkshire UK. The company still exists to this date and is still active in pro-audio and is now in a different location but still in Reading. These modules can be dated to the mid 1970s, more precisely found the E900 Equaliser unit quality checklists to be dated 12 November 1976. There are two E900 equaliser modules, and two F760N Compressor/Limiters. A picture of the now dismantled mixing desk with the four modules. The mixing desk was in a quite dusty and sorry state. The desk was too space consuming and heavy to keep and many other parts were sold as separate items.

Kruishout - Marking/Scratch Gauge

And Now for Something Completely Different: the kruishout (Dutch), or you might know it as a marking or scratch gauge. This is an essential measurement tool in woodworking! Note the sharp needle or point on the left side of the beam. This is used to scratch a line in the wood. This specific one was from my grandfather. He was a carpenter specialised in making ship interiors. Carpenters can own multiple of these gauges on a project, so they only need to set them to a specific size and have less work re-adjusting constantly. Some variations may even use the tip of a knifeblade to actually cut a deeper line, e.g. when the grain is too strong to make a proper straight line. Or to actually cut very even widths of veneer. The Japanese or Chinese variants seem to use the knife tips. I’m not so much into woodworking at the moment, but this surely is a keeper! It’s also fairly easy to make some of your own. If you know a special use of this tool other than most uses shown on youtube, please