Przejdź do treści
Biblioteka skilli
Programowanie · Budowanie i kod

verilog-design-skill

/verilog-design-skill

Pisze, przegląda i poprawia kod Verilog i FPGA: styl, potoki, optymalizację zasobów, reset i wzorce przetwarzania obrazu.

Licencja
MIT
Ostatnia zmiana repozytorium
23.05.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
3
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 23.05.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co robi i kiedy

Pisze, przegląda i poprawia kod Verilog i FPGA: styl, potoki, optymalizację zasobów, reset i wzorce przetwarzania obrazu.

Oryginalny opis (EN)

Verilog/FPGA 代码编写、审查、纠错与分析的专项技能。在需要编写、检查、纠错、分析、优化 Verilog 代码时使用,涵盖编码风格规范、时序打拍与流水线技巧、资源优化(避免除法、移位替代乘法、DSP/BRAM 映射)、复位策略、常见错误防范、像素级判定与区域级聚合模式等。触发场景:(1) 编写新的 Verilog 模块,(2) 审查或纠错已有 Verilog 代码,(3) 优化 FPGA 资源或时序,(4) 设计图像处理流水线,(5) 任何涉及 .v/.sv 文件的工作。

Jak działa

  1. 核心铁律
  2. 工作流程
  3. 除法替代速查
  4. 流水线模板
  5. 详细参考
Sekcje z nagłówków SKILL.md, w oryginale · 81 linii, 312 słów
Podgląd SKILL.md
---
name: verilog-design-skill
description: Verilog/FPGA 代码编写、审查、纠错与分析的专项技能。在需要编写、检查、纠错、分析、优化 Verilog 代码时使用,涵盖编码风格规范、时序打拍与流水线技巧、资源优化(避免除法、移位替代乘法、DSP/BRAM 映射)、复位策略、常见错误防范、像素级判定与区域级聚合模式等。触发场景:(1) 编写新的 Verilog 模块,(2) 审查或纠错已有 Verilog 代码,(3) 优化 FPGA 资源或时序,(4) 设计图像处理流水线,(5) 任何涉及 .v/.sv 文件的工作。
---

# Verilog/FPGA 设计规范与实战指南

## 核心铁律

编写/审查 Verilog 代码时,以下规则不可违反:

1. **赋值不混用**:时序逻辑 `<=`,组合逻辑 `=`,同一 always 块严禁混用
2. **组合逻辑无负反馈**:`assign b = m + b` 会导致仿真死循环,改为时序逻辑
3. **BRAM 数组不加复位**:加复位 → 无法推断 BRAM → 用数千寄存器替代
4. **DSP 内用同步复位**:异步复位 → 寄存器无法吸收进 DSP → 额外 65+32 LUT
5. **除法必须替代**:FPGA 中 `/N` 用移位、定点缩放或离散档比较替代

## 工作流程

### 编写新模块
1. 定义端口(clk, rst_n → pre 输入 → post 输出)
2. 参数化阈值和常量
3. 规划流水线级数与每级运算复杂度
4. 同步信号用移位寄存器对齐 LATENCY 周期
5. 应用核心铁律检查

### 审查/纠错已有代码
按以下清单逐项检查:

| 检查项 | 风险等级 |
|--------|---------|
| 赋值混用 `=`/`<=` | 致命 |
| 组合逻辑缺少敏感量表 | 致命 |
| 组合负反馈 | 致命 |
| BRAM 加复位 | 严重 |
| DSP 异步复位 | 严重 |
| 除法运算 | 严重 |
| 异步复位释放不同步 | 严重 |
| 复位类型混合(同一 DSP/BRAM) | 中等 |
| 省略 begin/end | 低 |
| 同步信号未与数据对齐 | 中等 |

### 优化资源/时序
- 长组合路径 → 拆为多级流水线
- `/N` → `*(K) >> shift` 或离散档比较
- `*2^n` → `<< n`
- `*2k±1` → `(data << n) ± data`
- 比较平方替代开方:`sqrt(a) >= t` → `a >= t*t`
- 数据路径省复位,控制路径保留复位

## 除法替代速查

| 原始运算 | 替代方案 | Verilog 代码 |
|----------|---------|-------------|
| `/256` | 取高位字节 | `result[15:8]` |
| `/2^n` | 右移 | `data >> n` |
| `/3` | 乘85右移8 | `(data * 85) >> 8` |
| `/N` | 定点缩放 | `(data * K) >> S`,K/S ≈ 1/N |
| `a/b >= t` | 离散档 | `if (a * 1000 >= b * t1000)` |
| `sqrt(a) >= t` | 比较平方 | `a >= t * t` |

## 流水线模板

```verilog
// 信号对齐(与数据流水线同步)
reg [LATENCY-1:0] vsync_d, hsync_d, de_d;
always @(posedge clk) begin
    vsync_d <= {vsync_d[LATENCY-2:0], pre_vsync};
    hsync_d <= {hsync_d[LATENCY-2:0], pre_hsync};
    de_d    <= {de_d[LATENCY-2:0],    pre_de};
end
assign post_vsync = vsync_d[LATENCY-1];

// 边沿检测
wire pos_flag = sig_r  & ~sig_r2;
wire neg_flag = ~sig_r &  sig_r2;
```

## 详细参考

需要深入某个方面时,查阅以下参考文件:

- **编码风格与常见错误**:[verilog-coding-style.md](references/verilog-coding-style.md) — 赋值规则、命名惯例、状态机设计、错误清单
- **FPGA 资源与时序优化**:[fpga-resource-and-timing.md](references/fpga-resource-and-timing.md) — DSP/BRAM 映射、复位策略、控制集、除法替代、跨时钟域
- **流水线与图像处理模式**:[verilog-pipeline-patterns.md](references/verilog-pipeline-patterns.md) — 颜色转换、Sobel、run 检测、投影算法、中值滤波
Pliki w paczce (3)
  • LICENSE 1 KB
  • README.md 5 KB
  • SKILL.md 4 KB

Wersje

W bazie nie ma innych skilli o nazwie verilog-design-skill.

Migawka bazy z 28.10.2026 · wersja paczki f28308e449cf (skrót SHA-256 całej paczki)

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100verilog-fpga-digital-design
    Projektuje, syntetyzuje i weryfikuje układy cyfrowe w Verilog i SystemVerilog dla FPGA: automaty FSM, reset synchroniczny, synchronizatory CDC i symulacje testbench w Icarus Verilog i GTKWave.
  • 100verilog-basics-for-lowlevel
    Wyjaśnia podstawy Verilog dla inżynierów firmware i jądra: RTL, domeny zegara, resetowanie i protokoły magistrali.
  • 100yosys
    Pomaga pisać syntezowalny Verilog-2005 dla FPGA iCE40 i doprowadzić go do bitstreamu, z raportem zasobów oraz gotowymi blokami UART i PWM.
  • 95readable-verilog-generator
    Pisze, przegląda i naprawia czytelny RTL w Verilogu, z adnotacjami, szkieletem testbencha i walidacją w Vivado.
  • 100duck-rtl
    Tworzy, analizuje i weryfikuje moduły RTL w Verilog i SystemVerilog, także względem modelu referencyjnego w Pythonie z cocotb, a na życzenie wyodrębnia z AST diagramy automatów FSM.
  • 100fpga-patterns
    Podaje wzorce syntezowalnego Verilogu dla projektów MCU-FPGA na Artix-7 i Cyclone V: bank rejestrów ze strobe'ami, CDC na dwóch przerzutnikach, generator PWM, Tcl dla Vivado i przechwytywanie ILA lub SignalTap.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.