custom-allocators
Custom allocator skill for memory allocation strategies. Use when implementing…
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
$ npx -y skills add mohitmishra786/low-level-dev-skills --skill verilog-basics-for-lowlevel --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/verilog-basics-for-lowlevelContext preview
The summary Claude sees to decide when to auto-load this skill.
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
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.
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.
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 @(*)`.
| 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.
| 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.
# 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.
/verilog-basics-for-lowlevel Explain this APB register block and when STATUS bit updates relative to WRITE
| 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 |
A curated suite of AI agent skills for systems and low-level programming — C/C++, Rust, Zig, GPU, bare-metal firmware, Linux kernel/driver development, computer architecture, compiler internals, HPC, and more.
Repo: mohitmishra786/low-level-dev-skills
Custom allocator skill for memory allocation strategies. Use when implementing…
NUMA programming skill for multi-socket memory locality. Use when detecting NUMA topology,…
AF_XDP skill for high-performance XDP sockets. Use when creating AF_XDP sockets, configuring…
DPDK skill for userspace packet I/O. Use when initializing EAL, configuring PMD drivers,…
io_uring skill for Linux async I/O. Use when building high-performance servers with liburing,…
Bare-metal ADC and DAC skill. Use when configuring analog sampling, DMA-driven ADC,…