Electronic Design Automation (EDA) Copilot

Chip design is one of the most complex engineering disciplines in the world — and one of the most knowledge-intensive. Engineers spend enormous time hunting through tool logs, version changelogs, and community forums to diagnose failures they have seen before. I built this project to ask: can we give those engineers a smarter assistant — one that doesn't just search text, but actually understands the relationships between errors, fixes, tool versions, and design rules?

The answer is yes. This system combines a knowledge graph (a structured map of EDA concepts and their connections) with AI language models trained on real chip design data. On a standardized 120-question benchmark I created for this domain, the full system answers questions 6.7× better than a bare AI model — and 139% better than simple document search alone. It was built in 16 weeks for $240, roughly 10% of the original budget estimate. As an AI cost optimizer, delivering production-grade research infrastructure at a fraction of projected cost is as important a result as the accuracy numbers.

6.7×
Answer quality vs bare LLM
139%
Over vector-only search
67.5%
Graph hit rate
120
EDABench items, 0 contaminated
$240
Total build cost
10%
Of original $2,685 budget used

How It Works

Think of this system as a librarian who has read every chip design manual, error log, and community forum post — and instead of just remembering the words, has built a map of how everything connects. When an engineer asks why their design is failing, the system doesn't just search for similar-sounding text. It follows the map: this error connects to that tool version, which connects to a known fix, which was confirmed in a specific experiment. The six stages below show how that map was built and how queries travel through it.

Here is what each stage does in plain terms: first, we gathered every document we could find about chip design tools — manuals, error logs, forum posts, release notes — over 14,000 files. Then we cleaned out duplicates, and used AI to generate 13,000 practice question-and-answer pairs so the system could learn the right way to respond. Next, we built a "knowledge graph" — essentially a giant web of connections showing which errors relate to which tool versions, which fixes work for which problems, and which design rules apply where. We also built a fast search index so the system can quickly find relevant text passages. When a question comes in, the system searches both the knowledge graph and the text index simultaneously, ranks the best results, and hands them to an AI model that writes a clear, sourced answer.

📄
Corpus
252M tokens, 14K files
🧹
Dedup + Synth
13K Q&A pairs
🕸️
Knowledge Graph
18K nodes, Neo4j
🔍
Vector Index
8.9K chunks, Weaviate
🔗
Fusion Retrieval
Graph + vector + rerank
💬
Synthesis
Claude API + LoRA

What We Found

The results exceeded expectations — especially on the question of cost. The system answers EDA questions 6.7 times more accurately than a standalone AI model, and nearly 140% better than simple document search. But the finding that stands out most as an AI cost optimization project: the entire system was built for $240, about one dollar in every ten of the original estimate. That wasn't luck — it came from deliberate engineering choices: using batch pricing discounts, building a three-tier extraction pipeline where 85% of work is free, and treating every cloud instance like a taxi meter. The six findings below tell the full story.

In simpler terms: we tested four different ways to answer chip design questions — asking a plain AI model with no help, giving it a basic text search, giving it a fine-tuned model trained on EDA data, and giving it our full system with the knowledge graph. The full system won by a wide margin on almost every question type. The knowledge graph was especially important for questions that required understanding which version of a tool introduced a bug or how different components interact — things that plain text search simply can't piece together. Meanwhile, the fine-tuned model excelled on patterns it had seen in training, showing that the two approaches complement each other rather than compete. The six cards below summarize the key numbers.

Headline Result
6.7×

The full GraphRAG system scores 0.482 answer quality vs 0.072 for a bare Claude model on EDABench — confirming that retrieval-augmented generation with a knowledge graph is essential for EDA domain tasks.

Knowledge Graph Lift
+139%

Structured graph retrieval outperforms vector-only search by 139% overall, and by 4.0× on cross-tool knowledge queries. Graph hit rate is 67.5% across all 120 benchmark items.

Version-Aware Reasoning
2.5×

On ED-005 (OpenROAD SIGSEGV crash tied to a specific build hash), the full system is 2.5× better than both vector search and the fine-tuned model alone. This is the core thesis: structured version context wins where flat text fails.

Fine-Tuning Finding
0.431

A QLoRA-adapted Mistral-7B achieves 0.431 answer quality without any retrieval — within 11% of the full system. Fine-tuning and structured retrieval are complementary, not substitutable. Training cost: $9.09 on a single GPU.

AI Cost Optimization
$240

Built for 10% of the $2,685 original budget. Key optimizations: Anthropic Batch API (50% discount on all offline generation), tiered triple extraction (85% free regex/NER, only 15% to LLM), and Spot instance discipline on AWS.

EDABench
120 items

A new zero-contamination benchmark for EDA copilot evaluation. Five task categories, seven verified seed bugs from real OpenROAD runs, KG-grounded ground truth. Released as part of this project.

Related Projects
AI Cost Optimization
AI Inference Cost Optimizer

A rule-based FinOps decision assistant that recommends the cheapest viable AI inference path for any workload — serverless, batch, self-hosted, or API. The same cost discipline used to build this EDA Copilot at 10% of budget, packaged as a standalone tool.

ML-Driven Power, Performance and Area (PPA) Optimization
MLCAD 2026 — Instrumented ML-Driven PPA Optimization

The prior project that discovered the ORFS v3.0 → 26Q1 version divergence — the empirical anchor for this system. Bayesian optimization, GAT-based timing prediction, and pre-registered negative results on real OpenROAD chip designs.

Try the EDA Copilot

Live queries against the full GraphRAG pipeline. Graph + vector + reranker + Claude synthesis.

✅ Live API at api.oguzhantekin.com — hybrid retrieval across knowledge graph, vector index, reranker, and Claude synthesis. Average latency ~13s.
Your Query

Ask a technical EDA question — timing violations, tool errors, SDC constraints, PDK rules, or version-specific behavior.

110
Try a seed query:
Your answer will appear here.

EDABench Evaluation Results

EDABench is a 120-item evaluation benchmark built specifically for this domain, covering five task categories with zero training data contamination. All four systems were judged in a single Claude Sonnet batch using identical prompts — ensuring the scores are directly comparable with no calibration drift between runs.

System Ans. Quality Factual Completeness Actionability Specificity Graph Hit % Latency
Full GraphRAG 0.482 0.810 0.635 0.563 0.573 67.5% 12.7s
LoRA-only 0.431 0.491 0.565 0.655 0.656 0.0% 15.7s
Vector-only RAG 0.202 0.672 0.292 0.233 0.394 0.0% 13.0s
Direct LLM 0.072 0.207 0.071 0.048 0.075 0.0% 5.4s
All 480 evaluations (120 items × 4 systems) in a single Claude Sonnet batch. Zero parse failures.

This table is the core evidence of the project. We tested every one of the 120 benchmark questions against four different systems and scored each answer on four dimensions: is it factually correct, is it complete, is it actionable (can an engineer use it to fix the problem), and is it specific enough to be useful? The overall "Answer Quality" score is the minimum of these four — meaning one weak dimension drags the whole score down. This is deliberately strict: a response that is factually perfect but vague scores low, because vague answers don't help engineers.

The headline finding is clear: the full GraphRAG system (knowledge graph + vector search + reranker + Claude) scores 0.482, which is 6.7 times higher than a bare AI model at 0.072. But the more nuanced story is in the rows between. The fine-tuned LoRA model scores 0.431 without any retrieval at all — it learned EDA patterns from training data — but it can't access the knowledge graph, so its graph hit rate is 0%. Vector-only search scores just 0.202, proving that plain document retrieval isn't enough for this domain. The knowledge graph provides the structured context that makes the difference.

Answer quality by category

Graph hit rate by category

Entity extractor doesn't match PDK rule IDs yet

These two charts break down performance by the type of question being asked. The left chart shows that the system performs best on constraint generation and RTL questions (0.517 and 0.511) — these are areas where the knowledge graph has dense, well-connected data about tool configurations and code patterns. DRC Rule Lookup and Cross-Tool Knowledge score lower (0.422 each), but for different reasons: DRC questions involve PDK rule IDs that the entity extractor can't yet match, while cross-tool questions require connections across multiple tool boundaries.

The right chart tells an even clearer story. Graph hit rate — the percentage of answers that actually used information from the knowledge graph — is 89% for RTL and Cross-Tool questions, 83% for Constraint Generation, and 71% for Error Diagnosis. DRC Rule Lookup sits at 0% because the entity extractor doesn't recognize PDK rule naming patterns like METAL1.S.1. This is a known limitation with a straightforward fix (regex pattern extension), not a fundamental system weakness. The high graph hit rates everywhere else confirm that the knowledge graph is actively contributing to answers, not just sitting unused.

Regression Anchor Cases

Two seed items from real OpenROAD runs illustrate the complementarity of graph retrieval and fine-tuning.

Full GraphRAG
0.50
LoRA-only
0.20
Vector-only
0.20
Direct LLM
0.10

After upgrading from ORFS v3.0 to 26Q1, ibex crashes with SIGSEGV during global routing (stage 5_1_grt) with OPENROAD_HIERARCHICAL=1. Peak memory 717 MB — not OOM. This is an upstream regression in build 26Q1-2900-gdf79404cd8.

2.5× lift from graph — version-specific entity matching retrieved the exact build hash and crash stage.
LoRA-only
0.70
Full GraphRAG
0.20
Direct LLM
0.20
Vector-only
0.10

After migrating from ORFS v3.0 to 26Q1, JPEG WNS flips from +13.48 ps (timing met) to -2.16 ps (violated). This is the paper's central empirical finding, first discovered in [40] and reproduced here. riscv32i shows a reverse flip.

LoRA wins here — fine-tuning internalized the WNS flip pattern from training data. Graph retrieval missed the specific version comparison. Fine-tuning and retrieval are complementary.

These two case studies are the most concrete evidence in the project because they come from real bugs discovered during actual chip design experiments. ED-005 is a crash that only happens with a specific version of OpenROAD (build 26Q1-2900-gdf79404cd8) when running hierarchical global routing on the ibex processor design. The full GraphRAG system scores 2.5× higher than any other approach because the knowledge graph contains the exact build hash, the crash stage, and the version relationship — information that plain text search can't piece together from scattered log files and changelogs.

ED-002 flips the story. Here, the fine-tuned LoRA model wins decisively (0.70 vs 0.20) because the WNS timing sign flip between ORFS v3.0 and 26Q1 was well-represented in the training data. The model learned this specific pattern and can reproduce it without needing to search anything. This is the key insight about complementarity: structured retrieval excels when the answer depends on following version-specific connections through a graph, while fine-tuning excels when the answer matches a pattern the model has seen during training. Neither approach alone covers all cases — the full system needs both.

Difficulty breakdown

Expert > Hard — expert items have cleaner KG anchors (specific tools/versions). Hard items have ambiguous multi-factor causation.

AI Cost Optimization

$240.55 total · 34% of $700 revised budget · 9% of $2,685 original budget estimate.

The cost engineering techniques used here — Batch API pricing, tiered processing, Spot instance discipline — are documented as reusable patterns in the AI Inference Cost Optimizer →

  • Anthropic Batch API → 50% off all offline generation and judging
  • Tiered triple extraction → 85% free (regex/NER), only 15% to LLM
  • Spot instance discipline → $2.41 for full ORFS sweep vs $55–80 planned

The difficulty chart reveals a surprising pattern: expert-level questions actually score higher (0.460) than hard-level ones (0.390). This isn't a flaw — it reflects how knowledge graphs work. Expert questions tend to involve specific, named tools and version numbers that the graph can match precisely. Hard questions often involve ambiguous multi-factor causation where the right answer depends on interactions between several components, making both retrieval and synthesis more difficult. Easy questions score highest (0.597) as expected, confirming the system handles straightforward lookups well.

The cost breakdown tells the project's financial story. Synthetic Q&A generation consumed 87% of the budget ($208.64) — this was the single largest investment because generating 13,000 high-quality training pairs required extensive AI processing. Everything else was remarkably cheap: the knowledge graph extraction cost nothing extra (85% was done with free regex and NER tools), LoRA fine-tuning on a single GPU cost $9.09, and the full ORFS parameter sweep on AWS Spot instances cost just $2.41. The three cost-saving strategies listed — Batch API discounts, tiered processing, and Spot instance discipline — are what made a $240 total possible against a $2,685 original estimate.

System Architecture

PHASE 1

Corpus Collection & Dedup

14,294 files
252M tokens
6 sources
After dedup: 7,351 files · 4.36% dedup rate
+ 1,801 forum Q&A pairs (GitHub Issues)
PHASE 1

Synthetic Q&A Pipeline

13,024 pairs
12 violation families
judge ≥ 0.90
$208.64 · Batch API saves ~50%
PHASE 2

Knowledge Graph

18,037 nodes
16,530 relationships
5 seed bugs
p50 2-hop latency: 45ms · 0 orphan nodes
PHASE 3

Vector Store

166,939 chunks
8,888 indexed
voyage-code-2
$0.25 embedding cost · Weaviate hybrid search
PHASE 3

Fusion Retrieval

Neo4j 2-hop
Weaviate BM25+dense
ms-marco reranker
Entity extraction against 17,835 cached KG node IDs
PHASE 3

LoRA Fine-tuning

Mistral-7B
QLoRA 4-bit
2,586 steps
12.5× perplexity improvement · $9.09 GPU cost

The system was designed as a six-stage pipeline where each component feeds the next — and each was independently validated before moving forward. We started by collecting every publicly available document about open-source chip design tools: manuals, error logs, GitHub issues, forum posts, and release notes — over 14,000 files totaling 252 million tokens. After removing duplicates, we used AI to generate 13,000 synthetic question-and-answer pairs that teach the system how EDA engineers actually ask questions and what good answers look like.

From that cleaned corpus, we built two retrieval systems that work in parallel. The knowledge graph (Neo4j) maps structured relationships — which tool versions introduced which bugs, which fixes apply to which errors, which design rules conflict with which configurations. The vector index (Weaviate) enables fast similarity search over text passages. When a query arrives, both systems are searched simultaneously, results are merged and re-ranked by a cross-encoder model, and the best evidence is handed to an AI model (Claude) that writes a clear, cited answer. A separately fine-tuned Mistral-7B model adds domain vocabulary and response formatting. The entire pipeline was built incrementally over 16 weeks, with every decision documented in a 1,414-line experimental trail.

Stack

ComponentTechnology
Knowledge graphNeo4j Aura (cloud)
Vector storeWeaviate Cloud
Embeddingsvoyage-code-2 (1,536 dim)
Rerankercross-encoder/ms-marco-MiniLM-L-6-v2
Fine-tuned modelMistral-7B-Instruct-v0.3 + QLoRA
SynthesisClaude Sonnet API
API layerFastAPI (Python)
UIGitHub Pages (this page) + FastAPI REST API
InfrastructureAWS (Spot + on-demand), Terraform
CorpusOpenROAD, SKY130, Yosys, OpenLane, OpenSTA, EPFL

Every technology choice was driven by a simple principle: use managed cloud services where possible to minimize operational overhead, and pick tools that are proven in production rather than cutting-edge but fragile. Neo4j Aura was chosen for the knowledge graph because it offers native graph traversal with sub-50ms latency on 2-hop queries — critical for real-time retrieval. Weaviate Cloud provides hybrid search (combining BM25 keyword matching with dense vector similarity) out of the box, eliminating the need to build and maintain separate search pipelines. The voyage-code-2 embedding model was selected specifically because it's optimized for code and technical documentation, producing 1,536-dimensional vectors that capture domain-specific semantics better than general-purpose models.

For the AI backbone, we use Claude Sonnet for answer synthesis because it handles long context windows and produces well-structured responses with citations. The fine-tuned Mistral-7B model was trained using QLoRA (4-bit quantization) to keep GPU costs under $10 — it runs on a single GPU and adds EDA domain vocabulary that the base model lacks. The cross-encoder reranker (ms-marco-MiniLM) sits between retrieval and synthesis, ensuring that only the most relevant evidence reaches the answer generator. FastAPI serves the entire pipeline as a streaming REST endpoint, and this GitHub Pages dashboard provides the interactive demo interface. All infrastructure runs on AWS using Spot instances where possible — the full ORFS parameter sweep cost $2.41 instead of the $55–80 originally budgeted.

Known Limitations & Open Items

DRC entity matching

Entity extractor does not match PDK rule IDs (e.g. METAL1.S.1). DRC Rule Lookup achieves 0% graph hit rate despite 0.422 answer quality. Regex pattern extension is the fix.

expected_graph_nodes coverage

Only 33 of 120 EDABench items have KG-grounded expected_graph_nodes populated. 87 items are answer-quality-only. Full annotation is future work.

swerv_wrapper ORFS run

swerv_wrapper ORFS sweep was deferred (requires 64 GB r6i.2xlarge). 9 of 12 planned runs completed. ibex 26Q1 SIGSEGV is upstream OpenROAD bug (26Q1-2900-gdf79404cd8), documented as ED-005.

ASAP7 PDK coverage

ASAP7 (7nm academic PDK) rules are not in the corpus. Queries about ASAP7 design rules will return low-confidence answers. Adding ASAP7 documentation to the ingestion pipeline is planned for future work.

No research system ships without gaps, and being transparent about them is as important as reporting what works. Four areas need attention in upcoming work. First, the entity extractor currently cannot match PDK design rule IDs (like METAL1.S.1), which is why DRC Rule Lookup shows 0% graph hit rate despite reasonable answer quality — a straightforward regex pattern extension will fix this. Second, only 33 of the 120 EDABench items have full KG-grounded expected nodes annotated; the remaining 87 are scored on answer quality alone, which limits how precisely we can measure retrieval accuracy. Third, the swerv_wrapper design was excluded from the ORFS parameter sweep because it requires a 64 GB instance, meaning 3 of the 12 planned experimental runs were deferred. Fourth, the ASAP7 7nm academic PDK rules are not yet in the corpus, so queries about ASAP7 design rules return low-confidence answers until that documentation is added to the ingestion pipeline. None of these limitations affect the core findings — the 6.7× improvement and 67.5% graph hit rate are measured on the components that work — but addressing them will strengthen both the benchmark and the system for future use.

📋
Full Experimental Trail
PROGRESS.md — 1,414 lines, 16 weeks
Every decision, cost, gate check, and failure is documented. The 50K triple shortfall rationale, the $208 QA generation overrun, the ibex SIGSEGV discovery, the judge calibration fix in Week 15 — all traceable. This is the artifact that makes the work reproducible.