Frontiers commited on
Commit
6af0bc2
·
verified ·
1 Parent(s): 8c6eaba

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.