360 Secure SkillHub
360 安全技能中心

verilog-basics-for-lowlevel

围绕模块结构、复位纪律、总线协议、时钟域和仿真与硅片差异,帮助固件与内核工程师读懂 RTL,并将硬件行为与驱动问题关联;以概念解释和排障提示为主,不提供完整 HDL 设计教学或实际仿真执行。

mohitmishra786
热度 0.00
最近更新 2026-10-19 04:15:48
分类:知识依赖:纯提示词应用场景:教学辅导 / 概念解释 / 调试排错

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add mohitmishra786/low-level-dev-skills/verilog-basics-for-lowlevel
Metadata
name
verilog-basics-for-lowlevel
description
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.

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)

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.

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)

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.

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

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

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