Verilogpro
4 Verilog and SystemVerilog coding
resources that will make you a pro!
Synthesizable Finite State Machine Design Techniques Using the
New SystemVerilog 3.0 Enhancements
State machines are typically one of the first coding techniques taught in a digital design course. But
did you know there are almost countless ways to write them, each with diៀerent level of complexity,
ease of code maintenance, and area/performance? This paper illustrates diៀerent ways to code a state
machine in SystemVerilog, and discusses their tradeoៀs to help you select the best coding style for
your application.
Standard Gotchas: Subtleties in Verilog and SystemVerilog That
Every Engineer Should Know
If you think you know how to code Verilog and SystemVerilog, reading this paper will convince you
that you don’t :) This paper is a collection of many tips---gotchas especially---that are not widely
known by users of the language, but can sometimes lead to a correct vs incorrect design. There are so
many gems in this paper that I’m sure you’ll keep returning to it over and over. There is also a part 2 of
the paper. The papers have also been compiled into a book if you would like to have it as a reference.
SystemVerilog Assertions - Bindfiles & Best Known Practices for
SVA Usage
An assertion is a concise instruction to a verification tool to check a certain property or behavior.
Dynamic verification (simulation) tools will raise an error when an assertion fails, and formal
verification tools can prove whether an assertion holds true or not for any combination of inputs.
Assertions are frequently thought of as verification constructs, but they are invaluable as self-checks
when written by an RTL designer into his/her own code. This paper illustrates some ways to
incorporate SystemVerilog Assertions (SVA) into an RTL design, including some useful macros that can
greatly simplify the task, and ways to organize SVA with RTL code.
© 2017 Verilogpro www.verilogpro.com 1
Synthesizing SystemVerilog: Busting the Myth that SystemVerilog
is only for Verification
When coding a RTL design, synthesis, whether for FPGA or ASIC, is usually the final goal. SystemVerilog
has introduced many new constructs to simplify RTL coding and to make it possible to code at a more
abstract level. But there are also many constructs that are intended for verification only and are not
synthesizable. This paper discusses which constructs in SystemVerilog are synthesizable, and can be
safely used with a modern synthesis tool. Aᢰer reading it you should feel confident with using new
SystemVerilog constructs in your design RTL (for example, structs and unions as discussed in my
article).
© 2017 Verilogpro www.verilogpro.com 2