Lexical conventions in Verilog are similar to C in the sense that it contains a stream of tokens. A lexical token may consist of one or more characters and tokens can be comments, keywords, numbers, strings or white space. All lines should be terminated by a semi-colon ;
.
The simple assertions are the easiest to understand, easiest to get right and they simulate the fastest, so a cheat sheet should focus on that. I created a SystemVerilog Assertions Checklist in the spring of 2015 and thought that it would be useful to combine the checklist and a cheat sheet into a useful whole. RStudio IDE Cheatsheet. The RStudio IDE is the most popular integrated development environment for R. Do you want to write, run, and debug your own R code? Work collaboratively on R projects with version control? Verilog - Operators Arithmetic Operators (cont.) I Unary operators I Operators '+' and '-' can act as unary operators I They indicate the sign of an operand i.e., -4 // negative four +5 // positive five!!! Negative numbers are represented as 2’s compliment numbers!!!!! Use negative numbers only as type integer or real!!! SystemVerilog Assertions (SVA) EZ-Start Guide 6. Note: When you are trying to capture an assertion in the standard written form, the implication operator typically maps to the word “then”. Cycle Operator (##)—Distinguishes between cycles of a sequence. Cycles are relative to. Download it, print it out and put it next to you on your desk. Happy coding: SystemVerilog Assertions Checklist Cheat Sheet v0.3. SVA Cheatsheet, View SystemVerilog-Assertions-Checklist-Cheat-Sheet-v0.3.pdf from ELECTRICAL EC622 at Nirma University, Ahmedabad. SystemVerilog Assertions View SVA Cheat Sheet.pdf from CS MISC at Technion.
Verilog is case-sensitive, so var_a and var_A are different.
Comments
There are two ways to write comments in Verilog.
- A single line comment starts with
//
and tells Verilog compiler to treat everything after this point to the end of the line as a comment. - A multiple-line comment starts with
/*
and ends with*/
and cannot be nested.
However, single line comments can be nested in a multiple line comment.
Whitespace
White space is a term used to represent the characters for spaces, tabs, newlines and formfeeds, and is usually ignored by Verilog except when it separates tokens. In fact, this helps in the indentation of code to make it easier to read.
However blanks(spaces) and tabs (from TAB key) are not ignored in strings. In the example below, the string variable called addr gets the value 'Earth ' because of preservation of spaces in strings.
Operators
There are three types of operators: unary, binary, and ternary or conditional.
- Unary operators shall appear to the left of their operand
- Binary operators shall appear between their operands
- Conditional operators have two separate operators that separate three operands
If the expression (y > 5) is true, then variable x will get the value in w, else the value in z.
Number Format
We are most familiar with numbers being represented as decimals. However, numbers can also be represented in binary, octal and hexadecimal. By default, Verilog simulators treat numbers as decimals. In order to represent them in a different radix, certain rules have to be followed.
Sized
Sized numbers are represented as shown below, where size is written only in decimal to specify the number of bits in the number.
- base_format can be either decimal ('d or 'D), hexadecimal ('h or 'H) and octal ('o or 'O) and specifies what base the number part represents.
- number is specified as consecutive digits from 0, 1, 2 ... 9 for decimal base format and 0, 1, 2 .. 9, A, B, C, D, E, F for hexadecimal.
Uppercase letters are legal for number specification when the base format is hexadecimal.
Unsized
Numbers without a base_format specification are decimal numbers by default. Numbers without a size specification have a default number of bits depending on the type of simulator and machine.
Negative
Negative numbers are specified by placing a minus -
sign before the size of a number. It is illegal to have a minus sign between base_format and number.
Strings
A sequence of characters enclosed in a double quote ' '
is called a string. It cannot be split into multiple lines and every character in the string take 1-byte to be stored.
Identifiers
Identifiers are names of variables so that they can be referenced later on. They are made up of alphanumeric characters [a-z][A-Z][0-9]
, underscores _
or dollar sign $
and are case sensitive. They cannot start with a digit or a dollar sign.
Keywords
Keywords are special identifiers reserved to define the language constructs and are in lower case. A list of important keywords is given below.
Verilog Example
Verilog Revisions
Verilog has undergone a few revisions over the years and more additions have been made from 1995 to 2001 which is shown below.
FPGA
Flashing Guide
⚠️Modifying FPGA source may have unintended consequences⚠️
Device Compatibility
Overview
Verilog Syntax Cheat Sheet
The FPGA handles:
- GPIO output
- UART for Zigbee and Z-Wave
- Connections between board components
- Microphone processing (not provided in source code)
FPGA Source
FPGA source code is located here.
Verilog Cheat Sheet
For refreshers on FPGA Verilog HDL syntax and concepts, check out this cheat sheet.
FPGA Flashing
Below is a guide on how to flash a premade user-provided FPGA bitstream onto the Xilinx Spartan-6 FPGA for the MATRIX Creator.
We first need to install a few prerequisites.
Add the MATRIX repository and key.
Update your repository and packages.
Install the required packages.
Reboot your device.
Backup the stock system_creator.bit
file.
Copy your built system_creator.bit
FPGA bitstream file to the blob folder.
Now you can flash the FPGA.
Reset the FPGA.
Flash the FPGA.
You should receive the following (may vary due to user-provided file).
Reset the FPGA.
Updating the matrixio-creator-init
package will cause the stock FPGA bitstream to be flashed upon next boot.
You can stop sudo apt-get upgrade
from automatically updating the matrixio-creator-init
package with the following command.
Power off your device.
Wait until the green led on your Raspberry Pi blinks 10 times, then unplug the power cable from your Raspberry Pi.
Verilog Syntax Cheat Sheet Excel
Plug the power cable back into your Raspberry Pi.
Restore Original Firmware
To restore the original firmware, restore the stock system_creator.bit
file in the blob folder.
Now you can flash the FPGA.
Reset the FPGA.
Flash the FPGA.
You should receive the following.
Reset the FPGA.
Allow sudo apt-get upgrade
to update the matrixio-creator-init
package.
Power off your device.
Wait until the green led on your Raspberry Pi blinks 10 times, then unplug the power cable from your Raspberry Pi.
Plug the power cable back into your Raspberry Pi.