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.
How do I install this agent skill?
npx skills add https://github.com/mohitmishra786/low-level-dev-skills --skill verilog-basics-for-lowlevelIs this agent skill safe to install?
- Gen Agent Trust Hubpass
This skill is an educational resource for hardware-software interface engineers. It contains no malicious code, data exfiltration, or prompt injection risks.
- Socketpass
No alerts
- Snykwarn
Risk: MEDIUM · 1 issue
What does this agent skill do?
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 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
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/mohitmishra786/low-level-dev-skills/verilog-basics-for-lowlevel">View verilog-basics-for-lowlevel on skillZs</a>