How SoC design is organised as a stack of abstraction layers, from transistors at the bottom to application software at the top, and the languages and tools used at each level.
read moreOther articles
Requirements Writing
Good requirements engineering is fundamental to delivering products that meet customer needs within cost and schedule. A well-formed requirement identifies …
read moreVerilog Lint Skill for Claude Code
I've been using Claude Code for RTL generation lately, and the missing piece was a tight feedback loop between code …
read moreWaveDrom Timing Diagrams in Pelican with Claude Code
"SystemVerilog: RTL Types"
read moreregandwirewere the original synthesisable types. Wires are constantly assigned and regs are evaluated at particular points, the …"Verilog: define if not defined"
To set a default define option while allowing it to be overridden from the command line.
read more`ifndef mode_sel `define mode_sel …"Verilog: shm waveforms"
The best practice is to use a tcl file:
shm.tcl
read moredatabase -open waves -shm probe -create your_top_level -depth all …"Verilog Timeformat"
Time can be displayed during simulation using
%t.$display("%t", $realtime);Timeformat is used to control the way (
read more%t) this …"SystemVerilog: Constrained Random"
A minimal example of constrained random to constraining a 4 bit value to 0 to 11 when randomised.
read moremodule tb …"Verilog: Thermometer Code"
Efficiently create a [thermometer code][wiki] in verilog:
read morelocalparam M = 32; function [M-1:0] therm_code; input [$clog2(M):0 …"Verilog: Calculate primes"
"Verilog: Timeout"
To wait for a maximum of
10nsfor positive edge on clk then carry on with simulation.read morefork : wait_or_timeout begin …"Verilog importing envvar"
Based on a Stackoverflow answer, to import environment variables into Verilog you can use:
read moreimport "DPI-C" function string getenv(input …"$display without a line return"
In Verilog to output to stdout without a line return use
$write();Equivalent statements :
read more$write("\n"); $display("");"flip-flop"
A flip-flop (D-Type) is essentially 2 latches in series with the enable to one inverted. This stops the flip-flop from …
read more"Navigate Verilog with VIM"
Using
gfIn your vimrc
read more" gf goto_file, automatically add search for these file extensions :set suffixesadd+=.v :set suffixesadd+=.sv …Tasks Using Absolute Delays
As previously mentioned SystemVerilog introduced abolute delays in the form of
read more#1s;,#1ms,#1us,#1ns. Using these as values passed …