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.
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.
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.
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.
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.
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.
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.
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.
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.
Try the EDA Copilot
Live queries against the full GraphRAG pipeline. Graph + vector + reranker + Claude synthesis.
api.oguzhantekin.com — hybrid retrieval across knowledge graph, vector index, reranker, and Claude synthesis. Average latency ~13s.Ask a technical EDA question — timing violations, tool errors, SDC constraints, PDK rules, or version-specific behavior.
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 |
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
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.
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.
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.
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
AI Cost Optimization
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
Corpus Collection & Dedup
Synthetic Q&A Pipeline
Knowledge Graph
Vector Store
Fusion Retrieval
LoRA Fine-tuning
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
| Component | Technology |
|---|---|
| Knowledge graph | Neo4j Aura (cloud) |
| Vector store | Weaviate Cloud |
| Embeddings | voyage-code-2 (1,536 dim) |
| Reranker | cross-encoder/ms-marco-MiniLM-L-6-v2 |
| Fine-tuned model | Mistral-7B-Instruct-v0.3 + QLoRA |
| Synthesis | Claude Sonnet API |
| API layer | FastAPI (Python) |
| UI | GitHub Pages (this page) + FastAPI REST API |
| Infrastructure | AWS (Spot + on-demand), Terraform |
| Corpus | OpenROAD, 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.