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:
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!
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
Post a Comment