add research-reports/raport_circuite_ultron.md
Browse files
research-reports/raport_circuite_ultron.md
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RAPORT: Hardware (circuite, netlists, Verilog/HDL, PCB, diagrame) pentru un LM MIC text-only
|
| 2 |
+
|
| 3 |
+
**Context:** SmolLM2-360M continue-pretrain, Kaggle **T4x2 (fp16, NU bf16)**, **TEXT-ONLY (fără vision)**.
|
| 4 |
+
**Obiectiv:** model care ÎNȚELEGE și GENEREAZĂ hardware — circuite, netlists, Verilog/HDL, PCB, diagrame tehnice (style Ultron).
|
| 5 |
+
|
| 6 |
+
> Toate ID-urile de mai jos au fost verificate live prin `https://huggingface.co/api/...` (**HTTP 200**) în timpul cercetării. Sunt marcate și capcanele (datasets cu nume înșelător care NU sunt despre electronică).
|
| 7 |
+
|
| 8 |
+
---
|
| 9 |
+
|
| 10 |
+
## 0. CONCLUZIA CENTRALĂ (citește asta întâi)
|
| 11 |
+
|
| 12 |
+
SmolLM2 e text-only → **NU putem folosi imagini** (schematic PNG, PCB photo, defect-seg). Dar cheia e că **hardware-ul ARE deja reprezentări 100% text**:
|
| 13 |
+
|
| 14 |
+
1. **Verilog / SystemVerilog / VHDL / Chisel** — cod, text pur. Un LM mic îl învață ca pe orice limbaj de programare.
|
| 15 |
+
2. **Netlist SPICE** (`.cir`, `.sp`, `.net`) — linii `R1 in out 1k` — text line-based.
|
| 16 |
+
3. **KiCad schematic** (`.kicad_sch`) și **PCB** (`.kicad_pcb`) — format **S-expression text** (`(kicad_sch (symbol ...))`). Deci chiar și "schematicile" sunt text!
|
| 17 |
+
4. **Netlist JSON** (`netlist_json` KiCad) și **YAML** — topologie de circuit ca text structurat.
|
| 18 |
+
5. **Diagrame tehnice** — **Mermaid**, **Graphviz DOT**, **PlantUML** — limbaje de diagramă 100% ASCII → perfecte pentru "Ultron style technical diagrams".
|
| 19 |
+
|
| 20 |
+
**Recomandare scurtă:** antrenăm SmolLM2-360M să mapeze între aceste 5 formate text (descriere NL ↔ Verilog ↔ netlist SPICE ↔ KiCad s-expr/JSON ↔ Mermaid/DOT). Fără vision, fără arhitectură nouă.
|
| 21 |
+
|
| 22 |
+
---
|
| 23 |
+
|
| 24 |
+
## 1. DATASETS VERIFICATE (200 OK) — pe categorii
|
| 25 |
+
|
| 26 |
+
### 1.A. NETLIST / SPICE / ANALOG (electronice reale)
|
| 27 |
+
|
| 28 |
+
| Dataset | Marime | Format | Cum se folosește |
|
| 29 |
+
|---|---|---|---|
|
| 30 |
+
| **AbijahKaj/kicad-netlist-sft-dataset** ⭐ | 100K<n<1M | parquet (chat `messages` + `netlist_json` + `source_url`) | **CEL MAI BUN pentru netlist ca text.** Descriere circuit → cod **SKiDL (Python)** → `generate_netlist()`. Include netlist JSON KiCad ca țintă. Licență apache-2.0. |
|
| 31 |
+
| **Si7li/ltspice-spice-circuits** ⭐ | 10K<n<100K | parquet, coloane `netlist` + `asc` | Perechi **netlist SPICE ↔ schematic LTspice ASCII (.asc)** — ambele TEXT! Ideal pentru "schematic→netlist" și invers, fără imagini. |
|
| 32 |
+
| **ADI2005/spice-circuits-finetune-v2** (și v3,v5,v6) | 1K<n<10K | jsonl `spice_v2_final_dataset.jsonl` | text-generation SPICE, SFT. |
|
| 33 |
+
| **pphilip/analog-circuits-sky130** | 100K<n<1M | parquet (config `default` + `with_testbench`) | Circuite analogice **SKY130** cu netlist + simulare + testbench. `task_categories: graph-ml`. Text netlist + rezultate simulare. |
|
| 34 |
+
| **zeju-0727/ForgeEDA_netlist** | 10K<n<100K | **webdataset** (`tar.gz`) | Netlists EDA la scara. Necesită `webdataset` lib pentru citire. |
|
| 35 |
+
| **fengjiahao0421/CircuitWeave** | ~47K fișiere | folder/design: `module.v`, `qa.json`, `design_analysis.md`, `testbench.v`, `result.txt`, `simulation_result.txt` | Bogat text: **Verilog + QA + analiză design + testbench + rezultate sim**. Direct folosibil pentru SFT multi-task. |
|
| 36 |
+
|
| 37 |
+
> ⚠️ **CAPCANE (verificate, NU sunt electronice):**
|
| 38 |
+
> - `copenlu/spiced` → benchmark NLP (sentence similarity), "spice" = condiment. NU e circuite.
|
| 39 |
+
> - `InstaDeepAI/SPICE2-curated` și `openforcefield/descent-format-spice` → dataset **molecular** (exciton/force-fields). NU e electronică.
|
| 40 |
+
> - `tony10101105/Query-Circuit-Dataset` → **circuite de interpretabilitate** (activări LLM), nu circuite electrice.
|
| 41 |
+
> - `Hack337/Minecraft-Schematics` → **schematics Minecraft**, nu schematice electronice.
|
| 42 |
+
|
| 43 |
+
### 1.B. VERILOG / HDL / RTL (code LM)
|
| 44 |
+
|
| 45 |
+
| Dataset | Marime | Format | Cum se folosește |
|
| 46 |
+
|---|---|---|---|
|
| 47 |
+
| **shailja/Verilog_GitHub** ⭐ | 100K<n<1M | CSV `Verilog_bigquery_GitHub.csv` | Verilog brut de pe GitHub. Perfect pt **continue-pretrain**. arXiv:2212.11140. |
|
| 48 |
+
| **JayZhang1/Verilogdata4pretrainCODET5** | 100K<n<1M | 193 CSV shards | Verilog brut multi-shard pt pretrain. |
|
| 49 |
+
| **davide221/verilog-instruct-60k** ⭐ | 10K<n<100K | parquet: `system_prompt`,`instruction`,`module`,`description`,`output`,`prompt`,`module_name` | **SFT instruction→Verilog** gata formatat (chat template). |
|
| 50 |
+
| **davide221/verilog-instruct-deepseek-60k** | 10K<n<100K | parquet | Același, generat cu DeepSeek (mai curat). |
|
| 51 |
+
| **davide221/verilog-raw-100k**, **hdl-raw-35k** | — | parquet | Raw HDL pt pretrain. |
|
| 52 |
+
| **GaTech-EIC/MG-Verilog** | — | arrow (`merged_dataset`) | **Multilingual**: Verilog+VHDL, cod + documentație. MIT. |
|
| 53 |
+
| **Jongbin-kr/RTL-Coder-27k** | 10K<n<100K | parquet: `instruction`,`output` | SFT NL→Verilog (RTL-Coder). |
|
| 54 |
+
| **LLM4Code/expanded_rtlcoder_12k** | 10K<n<100K | jsonl | Extindere RTL-Coder. |
|
| 55 |
+
| **ahmedallam/RTL-Repo** | 1K<n<10K | parquet train/test | Benchmark completare Verilog în contexte repo. arXiv:2405.17378. |
|
| 56 |
+
| **bnadimi/PyraNet-Verilog** | 100K<n<1M | CSV `PyraNetOnVeriBest.csv` | Perechi NL↔Verilog (HDLBits-style) pt instrucțiuni. ⚠️ licență **cc-by-nc-sa** (non-comercial). |
|
| 57 |
+
| **observerw/RTLLM** | n<1K | parquet test | **Benchmark** NL design desc → Verilog + testbenches. |
|
| 58 |
+
| **ggncristian/RTLLM-v1.1** / **v2.0** | — | parquet | v2.0 e **GATED (HTTP 401)** — necesită acceptare. |
|
| 59 |
+
| **dakies/nvlabs-verilogeval-v2-spec-to-rtl** | n<1K | parquet | **Eval spec→RTL** (VerilogEval v2, NVIDIA). |
|
| 60 |
+
| **AWfaw/ai-hdlcoder-dataset** (+ `-clean`, `-pretokenized-...`) | 100K<n<1M | JSON shards | HDL coder SFT. |
|
| 61 |
+
| **rtl-llm/chisel-verilog-pairs** | 10K<n<100K | JSON: `chisel_verilog_*`, `firrtl_verilog_*` | **Traducere Chisel↔Verilog / FIRRTL↔Verilog**. |
|
| 62 |
+
| **hdl2v/chisel-dataset** | 10K<n<100K | JSON `chisel_data.json`, `firrtl_data.json` | La fel. |
|
| 63 |
+
| **verify-ppt/marin-starcoderdata_verilog** | mare | **MosaicML Streaming `.ds`** | Verilog extras din StarCoderData (pretrain, ~332 shards). |
|
| 64 |
+
| **SAIFIINDUSTRIES/verilog_data-1/2** | ~100K fișiere | raw repo files | Verilog brut (repos complete). |
|
| 65 |
+
|
| 66 |
+
### 1.C. KICAD / SCHEMATIC (text!) + PCB
|
| 67 |
+
|
| 68 |
+
| Dataset | Marime | Format | Cum se folosește |
|
| 69 |
+
|---|---|---|---|
|
| 70 |
+
| **bshada/open-schematics** ⭐ | 10K<n<100K | parquet, **942 fișiere** | Coloane TEXT: `schematic` (**KiCad s-expr**), `schematic_json`, `schematic_yaml`, `description`, `components_used`; PLUS `schematic_image`/`pcb_images` (ignorăm imaginile). **Deci e utilizabil text-only prin s-expr/JSON/YAML/descriere!** |
|
| 71 |
+
| **Ju-C/open-schematics** | 10K<n<100K | parquet (78 shards) | Aceeași schemă ca bshada (fork/duplicat). |
|
| 72 |
+
| **electron-rare/kicad9plus-permissive** (98) & **kicad9plus-copyleft** (209) | n<1K | jsonl | KiCad 9+ s-expr. (varianta combinată `kicad9plus-sch-corpus` e **DEPRECATED** din cauza licențelor). |
|
| 73 |
+
| **Ailiance-fr/mascarade-kicad-dataset** / **electron-rare/mascarade-kicad-dataset** ⭐ | 1K<n<10K | jsonl `kicad_chat.jsonl` | **Q&A despre KiCad/EDA**: schematic, PCB, footprint, DRC, ERC, BOM. Format chat → perfect pt "circuit QA". |
|
| 74 |
+
| **keremberke/pcb-defect-segmentation** | n<1K | imagefolder (roboflow) | **Doar vision** (defecte PCB). NU folosibil text-only. |
|
| 75 |
+
| **Jackestar/RLCS_circuit_IEC_diagrams** | 1K<n<10K | 1409 PNG | Simboluri/ diagrame IEC (doar vision). |
|
| 76 |
+
| **LibreYOLO/printed-circuit-board**, **Francesco/printed-circuit-board** | — | imagini | Doar vision. |
|
| 77 |
+
|
| 78 |
+
> Notă: **PCB e aproape în totalitate vision** (imagini). Text-only putem folosi doar componentele meta-textuale: BOM, netlist, domenii (`.kicad_pcb` este totuși S-expression text!).
|
| 79 |
+
|
| 80 |
+
### 1.D. DIAGRAME CA TEXT (Mermaid / PlantUML / DOT) — "Ultron style"
|
| 81 |
+
|
| 82 |
+
| Dataset | Marime | Format | Cum se folosește |
|
| 83 |
+
|---|---|---|---|
|
| 84 |
+
| **ibm-research/MermaidSeqBench** ⭐ | n<1K | CSV `data.csv` | Text → **diagram de secvență Mermaid**. Referință de calitate (IBM Research). |
|
| 85 |
+
| **Celiadraw/text-to-mermaid** (+ **-2**) | 1K<n<10K | CSV `true_clean.csv` | Text→Mermaid, curățat. |
|
| 86 |
+
| **ninjaeryou/mermaid_samples_13k** | ~13K | — | Volum mare Mermaid. |
|
| 87 |
+
| **SpongeBOB9684/mermaid-text-to-diagram** | — | — | Text→diagram. |
|
| 88 |
+
| **pritamdeka/mermaid-diagrams-merged / -flat-original** | — | — | Corpus Mermaid. |
|
| 89 |
+
| **DangIT02/image-to-mermaid-v3** | — | — | image→Mermaid (necesită vision; ignorăm). |
|
| 90 |
+
| **Seym0n/cas2uml_hand-drawn_to_plantuml_dataset** | — | — | Schiță→**PlantUML**. |
|
| 91 |
+
| **vinzur/Prompt-to-PlantUML**, **coai/plantuml_generation**, **devgpt-aimotion/the-stack-v2_PlantUML_full** | — | — | Corpuri PlantUML (UML/diagrame). |
|
| 92 |
+
| **AjayP13/scifi_graphviz**, **kblw/graphimages_dot**, **supergoose/buzz_sources_286_graphviz-dot** | mici | — | Corpus **Graphviz DOT**. |
|
| 93 |
+
| **vinzur/user-stories-to-plantuml-usecase-diagram** | — | — | NL→PlantUML use-case. |
|
| 94 |
+
|
| 95 |
+
### 1.E. CIRCUIT QA / REASONING
|
| 96 |
+
|
| 97 |
+
| Dataset | Format | Note |
|
| 98 |
+
|---|---|---|
|
| 99 |
+
| **Ailiance-fr/mascarade-kicad-dataset** | jsonl chat | Q&A EDA/KiCad (vezi 1.C). |
|
| 100 |
+
| **EngineeringWays/Circuit-Analysis-Reasoning-Sample** | jsonl `..._Circuits1-Sample.jsonl` | Mostră analiză de circuite (raționament). Mic. |
|
| 101 |
+
| **fengjiahao0421/CircuitWeave** | `qa.json` per design | QA per circuit (vezi 1.A). |
|
| 102 |
+
|
| 103 |
+
> ⚠️ **CircuitNet NU e text.** `CircuitNet/CircuitNet`, `sylcjl/circuitnet`, `SKLP-EDA-LAB/CircuitNet3.0` = dataset **graph-ML** pt predicție IR-drop/DRC pe design-uri (features în `.npy`, grafuri `.npz`, arhive `.tar.gz`/`.zip`). **NU e utilizabil direct de un LM text** — doar dacă convertim graful în text (vezi §2). E util conceptual ca "circuit = graf".
|
| 104 |
+
|
| 105 |
+
---
|
| 106 |
+
|
| 107 |
+
## 2. FORMAT TEXTUAL pentru circuite (fără vision)
|
| 108 |
+
|
| 109 |
+
Cum reprezentăm o schemă electronică ca TEXT învățabil de un LM text-only:
|
| 110 |
+
|
| 111 |
+
1. **Verilog / SystemVerilog** — nivel RTL/behavioral. Text = cod. Ex:
|
| 112 |
+
`always @(posedge clk) q <= d;`
|
| 113 |
+
2. **Netlist SPICE** (`.cir`/`.sp`/`.net`) — nivel tranzistor/componente. Line-based:
|
| 114 |
+
```
|
| 115 |
+
V1 IN 0 5
|
| 116 |
+
R1 OUT N002 887K
|
| 117 |
+
C1 OUT 0 22
|
| 118 |
+
L1 N001 OUT 4.7
|
| 119 |
+
.tran 1m startup
|
| 120 |
+
```
|
| 121 |
+
3. **KiCad S-expression** (`.kicad_sch`, `.kicad_pcb`) — schematic/PCB ca arbore text:
|
| 122 |
+
```
|
| 123 |
+
(kicad_sch (version 20231120) (generator "eeschema") ... (symbol (lib_id "Device:R") ...))
|
| 124 |
+
```
|
| 125 |
+
4. **Netlist JSON / YAML** — topologie structurată (noduri+nete). Cel mai "LM-friendly":
|
| 126 |
+
```json
|
| 127 |
+
{"components":[{"ref":"C1","value":"100nF","footprint":"Capacitor_SMD:C_0805"}],
|
| 128 |
+
"nets":[{"name":"OUT","nodes":["C1.1","R1.1"]}]}
|
| 129 |
+
```
|
| 130 |
+
5. **Graf de circuit ca text** — pentru topologie/raționament: **Graphviz DOT** (`digraph { IN->R1; R1->OUT; }`), **Mermaid** (`graph TD; V1-->R1; R1-->OUT;`). Circuitul devine noduri+muchii ASCII.
|
| 131 |
+
6. **ASCII schematic** (`+--R1--+`) — carăcaterial, învățabil dar fragil aliniere.
|
| 132 |
+
|
| 133 |
+
**Răspuns direct:** da, o schemă electrică se poate învăța text-only prin **netlist SPICE / KiCad s-expr / netlist JSON / DOT-Mermaid**. CircuitNet însă e un **graf numeric** (numpy), nu text — dacă vrem să-l folosim trebuie serializat în DOT/JSON.
|
| 134 |
+
|
| 135 |
+
---
|
| 136 |
+
|
| 137 |
+
## 3. MODELE EXISTENTE (verificate pe HF)
|
| 138 |
+
|
| 139 |
+
| Model | Bază / arhitectură | Ce face |
|
| 140 |
+
|---|---|---|
|
| 141 |
+
| **AbijahKaj/qwen3-4b-kicad-netlist** ⭐ | Qwen3-4B (LoRA) | **Descriere → netlist KiCad/SKiDL**. Antrenat exact pe `kicad-netlist-sft-dataset`. Cea mai apropiată referință de scopul nostru. Există și `qwen3.5-4b-kicad-netlist`. |
|
| 142 |
+
| **shailja/fine-tuned-codegen-2B-Verilog** | **CodeGen-2B** (decoder-only) | Verilog LM fine-tuned pe `Verilog_GitHub`. Dovadă că un model MIC (~2B) poate genera Verilog. |
|
| 143 |
+
| **hdl2v/qwen2.5-coder-7b-single-verilog / -vhdl / -chisel** | Qwen2.5-Coder-7B | Traducere/augmentare HDL (Verilog↔VHDL↔Chisel). |
|
| 144 |
+
| **ishorn5/RTLCoder-Deepseek-v1.1**, quantizări **mradermacher/RTLCoder*** | DeepSeek-Coder / Qwen | RTL generation SOTA-ish. |
|
| 145 |
+
| **VeriReason (mradermacher/VeriReason-Qwen2.5-*-RTLCoder-*-GRPO)** | Qwen2.5 1.5B/3B/7B + **GRPO** cu reward din testbench | Verilog cu raționament + verificare prin simulare. |
|
| 146 |
+
| **tocsa/llama2-7b-dapt-chipdesign** | **Llama-2-7B** (DAPT) | Domain-adaptive pretrain pe chip design. |
|
| 147 |
+
| **alongwith/chipseek-r1-qwen2.5** | Qwen2.5 | Chip design/reasoning. |
|
| 148 |
+
| **ChipExpert-8B-Instruct**, **omnicoder-hdl-9b** | Llama/Qwen | Asistent HDL. |
|
| 149 |
+
| **hdlm-group/hdlm-base-*** | — | HDL base models. |
|
| 150 |
+
| **observerw/ChiseLLM-Decompile / -Completion** | Chisel LLM | Chisel. |
|
| 151 |
+
| **Askalamyeh/schematic-parser-qwen2.5**, **nutinspace/talk-to-schematic-*-lora**, **foundation-models/*-schematic-*** | Qwen + **vision** | schematic↔text (unele multimodale — NU ne trebuie). |
|
| 152 |
+
|
| 153 |
+
**Arhitecturi:** toate sunt **decoder-only LLM** generaliste (CodeGen, Llama-2, Qwen2.5/Coder, DeepSeek-Coder, Mistral), adaptate prin **DAPT + SFT/LoRA**; unele prin **GRPO** cu reward din simulator (VeriReason). **Nu există arhitecturi speciale** pentru hardware — se folosește reprezentarea "hardware = cod/text". Asta e o veste bună: **SmolLM2-360M e arhitectural potrivit**.
|
| 154 |
+
|
| 155 |
+
---
|
| 156 |
+
|
| 157 |
+
## 4. TEHNICI: "diagram / circuit reasoning" pentru un LM MIC
|
| 158 |
+
|
| 159 |
+
1. **Hardware = limbaj** (code-LM paradigm). Nu antrenăm vision. Învățăm mapările text↔text:
|
| 160 |
+
- `descriere NL → Verilog`
|
| 161 |
+
- `descriere NL → netlist SPICE`
|
| 162 |
+
- `descriere NL → KiCad s-expr / netlist JSON` (ca AbijahKaj)
|
| 163 |
+
- `netlist/schematic text → explicație NL` (QA / "captioning" fără imagini)
|
| 164 |
+
- `netlist → Mermaid/DOT` (vizualizare/„Ultron" diagramă ca text)
|
| 165 |
+
- `Verilog ↔ netlist`, `Chisel ↔ Verilog` (traducere)
|
| 166 |
+
2. **Continue-pretrain → SFT (2 etape).** Pretrain pe HDL/netlist brut (îi dă "gramatica"); apoi SFT cu template `### Instruction / ### Output` pe perechi instruct.
|
| 167 |
+
3. **Multi-task "unified text"**: serializează TOATE formele în text (SPICE, KiCad s-expr, JSON, DOT). Un singur vocabular.
|
| 168 |
+
4. **Simulare ca recompensă (opțional)**: `iverilog`/`verilator` (rulează pe CPU) pot verifica sintaxa/comportamentul → filtrează datele SFT ("rejection sampling"/"best-of-n"). GRPO e prea scump pe T4x2 pentru 360M, dar **data filtering prin simulator e gratis și urcă calitatea mult**.
|
| 169 |
+
5. **Data augmentation**: NL→formă, formă→NL, formă→formă (round-trip), renaming obfuscat, fragmentare netlist.
|
| 170 |
+
6. **Tokenizare**: BPE-ul SmolLM2 tratează bine ASCII/cifre SPICE; verifică că numere gen `887K`, `1.18x1.45mm`, `posedge` se tokenizează rezonabil (adăugare tokeni speciali pt `netlist` doar dacă e cazul).
|
| 171 |
+
7. **Diagram reasoning ca text**: predai modelului că "schema = graf (noduri=componente, muchii=nete)" → generezi DOT/Mermaid; apoi poți răspunde la întrebări ("câte rezistențe?", "ce e conectat la OUT?") parcurgând textul.
|
| 172 |
+
|
| 173 |
+
---
|
| 174 |
+
|
| 175 |
+
## 5. RECOMANDARE CONCRETĂ pentru SmolLM2-360M pe Kaggle T4x2
|
| 176 |
+
|
| 177 |
+
**Fezabil:** 360M params încăpe lejer pe 2×T4 (15GB fiecare), fp16 + gradient checkpointing, DDP. Chiar **full fine-tune** (nu doar LoRA).
|
| 178 |
+
|
| 179 |
+
### Etapa 0 — Setup
|
| 180 |
+
- fp16 (NU bf16 — Turing nu suportă), `use_cache=False`, `gradient_checkpointing=True`, DDP pe 2 GPU.
|
| 181 |
+
- seq len 1024–2048; batch/device 16–32, grad-accum 4–8 (țintă ~1–2M tokens/pas global).
|
| 182 |
+
|
| 183 |
+
### Etapa 1 — Continue-pretrain (îi învață "gramatica hardware")
|
| 184 |
+
Mix surse (raw, text pur):
|
| 185 |
+
- `shailja/Verilog_GitHub` + `JayZhang1/Verilogdata4pretrainCODET5` + `verify-ppt/marin-starcoderdata_verilog` (Verilog brut)
|
| 186 |
+
- `SAIFIINDUSTRIES/verilog_data-*` (repo-uri)
|
| 187 |
+
- `hdl2v/chisel-dataset`, `rtl-llm/chisel-verilog-pairs` (Chisel/FIRRTL↔Verilog)
|
| 188 |
+
- netlists: `Si7li/ltspice-spice-circuits` (`netlist`+`asc`), `zeju-0727/ForgeEDA_netlist`
|
| 189 |
+
- KiCad s-expr: `bshada/open-schematics` (câmpuri `schematic`,`schematic_json`,`schematic_yaml`), `electron-rare/kicad9plus-*`
|
| 190 |
+
- diagrame: Mermaid/PlantUML/DOT din `ninjaeryou/mermaid_samples_13k`, `devgpt-aimotion/the-stack-v2_PlantUML_full`, `AjayP13/scifi_graphviz`.
|
| 191 |
+
- **Target volum:** ~0.3–1.0 B tokens (dominat de Verilog; netlist+schematic ca flavor). 1–2 epoch.
|
| 192 |
+
|
| 193 |
+
### Etapa 2 — SFT multi-task (instruction→output, format chat SmolLM2)
|
| 194 |
+
Adună perechi curate:
|
| 195 |
+
- `davide221/verilog-instruct-60k` (+ `-deepseek-60k`) — NL→Verilog
|
| 196 |
+
- `Jongbin-kr/RTL-Coder-27k`, `LLM4Code/expanded_rtlcoder_12k`, `bnadimi/PyraNet-Verilog`
|
| 197 |
+
- `AbijahKaj/kicad-netlist-sft-dataset` — descriere→SKiDL/netlist JSON (⚠️ cc/apache, verif. termenii)
|
| 198 |
+
- `Si7li/ltspice-spice-circuits` — netlist↔schematic (.asc) round-trip
|
| 199 |
+
- `Ailiance-fr/mascarade-kicad-dataset` — Q&A EDA/KiCad
|
| 200 |
+
- `fengjiahao0421/CircuitWeave` — Verilog + `qa.json` + `design_analysis.md`
|
| 201 |
+
- `ibm-research/MermaidSeqBench` + `Celiadraw/text-to-mermaid` — text→Mermaid
|
| 202 |
+
- Construiește manual un set mic "NL → Mermaid circuit diagram" + "netlist → explicație NL".
|
| 203 |
+
|
| 204 |
+
Format unificat recomandat:
|
| 205 |
+
```
|
| 206 |
+
### Task: generate-verilog
|
| 207 |
+
### Instruction: <descriere NL>
|
| 208 |
+
### Response: <verilog>
|
| 209 |
+
```
|
| 210 |
+
(și variante pentru `netlist-json`, `spice`, `schematic-sexpr`, `mermaid`, `explain`, `qa`).
|
| 211 |
+
|
| 212 |
+
**Filtrare prin simulator (gratis, pe CPU):** rulează `iverilog`/`verilator` pe sample-urile Verilog; păstrează doar ce compilează. Taie mult zgomot.
|
| 213 |
+
|
| 214 |
+
### Etapa 3 — Evaluare
|
| 215 |
+
- Subset din `observerw/RTLLM` și `dakies/nvlabs-verilogeval-v2-spec-to-rtl` (spec→RTL).
|
| 216 |
+
- Metrici: compilare (`iverilog`), pass@k funcțional (testbench), ROUGE/exact pe netlist & Mermaid.
|
| 217 |
+
- Held-out pentru "netlist→explicație" (QA).
|
| 218 |
+
|
| 219 |
+
### Buget & așteptări realiste
|
| 220 |
+
- 360M e mic → va excela la **sintaxă + pattern-uri simple** (fifo, counter, UART, divizor, RC filter, netlist corect sintactic) și la **formatare Mermaid/DOT**; NU la design complex arbitrar. Scopul "Ultron diagram reasoning" (descriere → diagramă text + netlist) e realist.
|
| 221 |
+
- Ordinea valorii: **Verilog (mult) > Mermaid/DOT (diagrame) > SPICE netlist > KiCad s-expr/JSON > PCB (aproape deloc, e vision)**.
|
| 222 |
+
|
| 223 |
+
### Pipeline minim viabil (MVP, ≤ 2 zile pe T4x2)
|
| 224 |
+
1. Download: `shailja/Verilog_GitHub` + `davide221/verilog-instruct-60k` + `Si7li/ltspice-spice-circuits` + `ibm-research/MermaidSeqBench`.
|
| 225 |
+
2. Etapa 1 (1 epoch pe ~200–300M tokeni Verilog).
|
| 226 |
+
3. Etapa 2 SFT (~150–250K exemple instruct: Verilog/SPICE/Mermaid).
|
| 227 |
+
4. Eval: `iverilog` syntax @ subset RTLLM.
|
| 228 |
+
5. **Livrabil "Ultron":** NL → (Verilog **sau** netlist SPICE **sau** diagramă Mermaid/DOT **sau** explicație de netlist).
|
| 229 |
+
|
| 230 |
+
---
|
| 231 |
+
|
| 232 |
+
## 6. REZUMAT: ce e verificat & sigur de folosit
|
| 233 |
+
|
| 234 |
+
**TEXT-ONLY, prioritate maximă:**
|
| 235 |
+
- Pretrain: `shailja/Verilog_GitHub`, `JayZhang1/Verilogdata4pretrainCODET5`, `verify-ppt/marin-starcoderdata_verilog`.
|
| 236 |
+
- Instruct: `davide221/verilog-instruct-60k`, `Jongbin-kr/RTL-Coder-27k`, `bnadimi/PyraNet-Verilog`.
|
| 237 |
+
- Netlist: `AbijahKaj/kicad-netlist-sft-dataset`, `Si7li/ltspice-spice-circuits`, `zeju-0727/ForgeEDA_netlist`, `pphilip/analog-circuits-sky130`.
|
| 238 |
+
- Schematic text: `bshada/open-schematics` (JSON/YAML/s-expr/descriere), `electron-rare/kicad9plus-*`, `Ailiance-fr/mascarade-kicad-dataset`.
|
| 239 |
+
- Diagrame: `ibm-research/MermaidSeqBench`, `Celiadraw/text-to-mermaid`, `ninjaeryou/mermaid_samples_13k`, PlantUML corpora.
|
| 240 |
+
- QA/raționament: `fengjiahao0421/CircuitWeave`, mascarade.
|
| 241 |
+
|
| 242 |
+
**De EVITAT pentru text-only:** toate PCB/schematic **image** datasets (`keremberke/pcb-defect-segmentation`, `Jackestar/RLCS_circuit_IEC_diagrams`, `LibreYOLO/*`), plus capcanele `copenlu/spiced` / `InstaDeepAI/SPICE2` / `openforcefield/*spice*` (moleculare/NLP) și `CircuitNet*` (graf numeric, nu text).
|
| 243 |
+
|
| 244 |
+
**Concluzie:** scopul e realizabil 100% text-only pe T4x2 prin reprezentările textuale ale hardware-ului (Verilog, SPICE netlist, KiCad s-expr/JSON, Mermaid/DOT). Fără vision, fără arhitecturi noi — doar DAPT + SFT pe SmolLM2-360M.
|