verilog-basics-for-lowlevel

v2026.09.24

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.

GitHub
安装命令
npx skhub add mohitmishra786/verilog-basics-for-lowlevel
Markdown
SKILL.md

Verilog Basics for Low-Level Engineers

Purpose

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.

When to Use

  • Reference manual unclear — RTL clarifies register behavior
  • Understanding CDC (clock domain crossing) bugs
  • Correlating DMA/AXI transactions with driver ordering
  • Reviewing SoC block diagram with hardware team

Workflow

1. Module structure

module uart_tx (
    input  wire       clk,
    input  wire       rst_n,   /* active-low async reset */
    input  wire       start,
    input  wire [7:0] data,
    output reg        busy
);
    /* sequential logic */
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n)
            busy <= 1'b0;
        else if (start)
            busy <= 1'b1;
        /* ... */
    end
endmodule

wire = combinational/network; reg in always block = flip-flop unless combinational always @(*).

2. Synthesizable subset (what firmware folks need)

ConstructMeaning
posedge clkRegistered update
assign x = a & bCombinational
case / if in always @(*)Mux logic
Parameters #(.WIDTH(32))Configurable width

Avoid #delay in synthesizable RTL — simulation only.

3. Reset discipline

  • Async assert, sync deassert common (rst_sync_n)
  • Firmware must wait post-reset setup times — see RM reset chapter
  • Multiple reset domains → peripheral may need explicit soft reset bit

4. Bus protocols (reading SoC diagrams)

BusTypical use
APBSlow peripherals, simple reg interface
AHBHigher throughput on-chip
AXIDMA, modern SoCs — bursts, channels

Linux regmap MMIO maps to APB/AXI slave decode in RTL address map.

5. Clock domains

Signals crossing clk_a → clk_b need synchronizers (2+ FFs). Metastability causes intermittent firmware bugs — not fixed in software alone.

6. Simulation vs silicon

# Typical open-source sim (conceptual)
iverilog -o sim.vvp design.v tb.v
vvp sim.vvp

QEMU/peripheral models may not match RTL edge cases.

7. Agent usage

/verilog-basics-for-lowlevel Explain this APB register block and when STATUS bit updates relative to WRITE

Common Problems

SymptomCauseFix
Bit toggles oncePulse in RTLPoll latch / clear-on-read in driver
Random corruptionCDCHardware synchronizer; don't hack delays
Read stale dataBus bridge bufferFollow RM ordering / barrier
IRQ stuckLevel vs pulse in RTLMatch handler ACK sequence
Verilog vs VHDLMixed SoC docsFocus on interface signals table

Related Skills

  • skills/baremetal/mmio-and-bit-manipulation — register access from C
  • skills/baremetal/peripherals-from-datasheet — RM ↔ RTL
  • skills/baremetal/datasheet-and-refmanual-reading — doc navigation
  • skills/kernel-dev/device-tree — hardware integration in Linux
  • skills/qemu/protocol-analysis — validate bus timing
发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

Sep 24, 2026

分类

未分类

许可证

MIT

源路径

skills/qemu/verilog-basics-for-lowlevel

默认分支

main

最新提交

bdc5847

Tree SHA

1178323