npx skills add ...
npx skills add mohitmishra786/low-level-dev-skills --skill verilog-basics-for-lowlevel
Verilog basics skill for firmware and kernel engineers. Use when reading RTL to understand hardware behavior, reset/clock domains, bus protocols, or collaborating with hardware teams. Activates on queries about Verilog basics, RTL, hardware description, clock domain, reset synchronizer, or MMU in hardware.
npx skills add mohitmishra786/low-level-dev-skills --skill verilog-basics-for-lowlevel
Give firmware and kernel engineers enough Verilog/SystemVerilog literacy to read RTL: modules, clocks/resets, combinational vs sequential logic, bus interfaces, and why hardware behavior explains driver bugs — not a replacement for HDL design courses.
wire = combinational/network; reg in always block = flip-flop unless combinational always @(*).
| Construct | Meaning |
|---|---|
posedge clk | Registered update |
assign x = a & b | Combinational |
case / if in always @(*) | Mux logic |
Parameters #(.WIDTH(32)) | Configurable width |
Avoid #delay in synthesizable RTL — simulation only.
rst_sync_n)| Bus | Typical use |
|---|---|
| APB | Slow peripherals, simple reg interface |
| AHB | Higher throughput on-chip |
| AXI | DMA, modern SoCs — bursts, channels |
Linux regmap MMIO maps to APB/AXI slave decode in RTL address map.
Signals crossing clk_a → clk_b need synchronizers (2+ FFs). Metastability causes intermittent firmware bugs — not fixed in software alone.
QEMU/peripheral models may not match RTL edge cases.
| Symptom | Cause | Fix |
|---|---|---|
| Bit toggles once | Pulse in RTL | Poll latch / clear-on-read in driver |
| Random corruption | CDC | Hardware synchronizer; don't hack delays |
| Read stale data | Bus bridge buffer | Follow RM ordering / barrier |
| IRQ stuck | Level vs pulse in RTL | Match handler ACK sequence |
| Verilog vs VHDL | Mixed SoC docs | Focus on interface signals table |
skills/baremetal/mmio-and-bit-manipulation — register access from Cskills/baremetal/peripherals-from-datasheet — RM ↔ RTLskills/baremetal/datasheet-and-refmanual-reading — doc navigationskills/kernel-dev/device-tree — hardware integration in Linuxskills/qemu/protocol-analysis — validate bus timing# Typical open-source sim (conceptual)
iverilog -o sim.vvp design.v tb.v
vvp sim.vvp/verilog-basics-for-lowlevel Explain this APB register block and when STATUS bit updates relative to WRITE