As a chip verification engineer, I ask LLMs for help constantly — draft a UVM sequence, explain a CDC violation, sanity-check an SDC constraint, summarize a synthesis timing report. The problem is that general-purpose chatbots have no idea what a good EDA prompt looks like. Every time, I was manually writing the same scaffolding: who the model should act as, what technical context it needs, what the actual task is, what constraints apply, and what shape the output should take. Redoing that by hand for every question gets old fast.
So I built EDA Prompt Generator to automate that scaffolding — you type a short EDA requirement, it hands back a structured, professional prompt ready to paste into whatever model you’re using.
1. What It Does
You type something like “verify AXI outstanding transaction ordering” or “explain why this SDC constraint fails timing,” pick a target model, and the generator expands your one-liner into a structured prompt with:
- Role — who the model should act as (e.g. “senior verification engineer specializing in AMBA protocols”)
- Technical context — the background the model needs so it doesn’t hallucinate
- Task — precisely what you want done
- Constraints — what to avoid, what format rules apply
- Output format — how the response should be structured
Simple questions collapse to a lean 3-section prompt; complex, multi-stage asks automatically expand to include an acceptance-criteria section. You don’t pick the level of detail yourself — the generator infers it from how complex your ask is.
2. Built for the EDA Domain, Not General Chat
This isn’t a generic prompt tool with an EDA skin — it’s actually scoped to the domain:
| Feature | Detail |
|---|---|
| Sub-domain coverage | RTL Design, Functional Verification, Synthesis & STA, Physical Design, DFT, CDC/RDC, EDA Scripting — 7 areas |
| Target models | ChatGPT, Claude, DeepSeek, Doubao, Qwen — output format and language auto-adapt per model |
| Scope filtering | Chips, CPUs, IP cores (e.g. Arm Cortex-R52), protocols, and microarchitecture are all in scope. Off-topic questions — even ones that sneak in an EDA buzzword — get politely declined, with varied, natural-sounding refusals (occasionally with a lighthearted nod toward the tip jar) |
| Language matching | Chinese input → Chinese prompt, English input → English prompt. Doubao and Qwen always output Chinese |
| Multi-turn refinement | Iterate on a generated prompt across turns; regenerate targets the exact message in history, not just “the last message” |
3. Everything Else You’d Expect From a Real Product
Since I built this as a proper app rather than a demo, it also has:
- Streaming, markdown-rendered output with one-click copy
- Accounts — email + password, with email verification codes for signup, password reset, and password change
- Cross-device history sync — local-first (localStorage, works offline), merges with the cloud on reconnect using last-write-wins per session
- Guest quota — 3 generations/day for anonymous users, unlimited once you register; hitting the limit surfaces a dedicated sign-up prompt instead of a generic error
- Account settings — sign out of all devices, delete account (re-auth + typed confirmation, cascades to all cloud history)
- Admin dashboard — usage trends, user search, audit log viewer, leaderboards (active users, target models, anomalous IPs)
- Dark/light theme, responsive layout, mobile-friendly
- Timeout and empty-response protection on streaming, with one-click retry
- Mock mode — works out of the box with no API key configured, so you can try the UI without any live inference cost
4. Under the Hood
| Layer | Choice |
|---|---|
| Framework | Next.js 16 (App Router), React 19, TypeScript |
| Styling / State | Tailwind CSS v4, Zustand |
| LLM backend | DeepSeek V4 (deepseek-v4-flash by default) |
| Auth | Hand-rolled — Server Actions + jose (RS256 JWT) + bcryptjs, not NextAuth (this project runs a modified Next.js 16 where middleware is renamed to Proxy and cookies()/headers() are async, which broke NextAuth compatibility) |
| Storage | better-sqlite3 |
nodemailer via Alibaba Cloud DirectMail, for verification codes |
The auth layer uses two tokens: a short-lived (15 min) RS256-signed access token in an httpOnly cookie, and a revocable refresh token stored in the database — hashed, and rotated on every use. Rate limiting covers login attempts, verification-code sends (per-email and per-IP), and generation requests. Production runs behind Cloudflare (Full mode) → nginx → a systemd-managed Next.js process on 127.0.0.1:3100.
Full architecture notes, the streaming pipeline, and the checklist for adding a new target model live in the repo’s CLAUDE.md. User-facing docs are at docs.edaproprompt.com.
5. Try It
It’s live at edaproprompt.com — no sign-up required to try a few prompts, and it degrades gracefully to mock mode if you’re just poking around. If you do IC design or verification work and have ever wasted time re-explaining context to a chatbot, I built this for you.
6. What’s Next
OAuth login is on the roadmap but not shipped yet (email/password only for now). Beyond that, I’m mostly iterating based on which target models and sub-domains people actually use in practice — if you try it and something’s missing for your workflow, let me know.