A modern, web-based Verilog simulator that empowers students and professionals to write, compile, and simulate Verilog code directly in the browser—no local toolchain required. Ideal for education, prototyping, and collaborative development.
Verilog Simulator (AKA Vivado-Make) replaces heavyweight, licensed EDA tools with a lightweight, accessible web alternative. Key highlights:
Layer | Technology |
---|---|
Frontend | Next.js 14, React, TypeScript, Tailwind CSS, Monaco Editor |
Backend | Python 3.11, FastAPI, Icarus Verilog (iverilog, vvp), Docker |
Deployment | Vercel (frontend), Render (backend) |
Visualization | Custom waveform viewer based on VCD parsing |
.
├── frontend/ # Next.js frontend application
│ ├── src/ # Source code
│ ├── app/ # Next.js app directory
│ └── public/ # Static assets
├── backend/ # FastAPI backend service
│ ├── app/ # Application code
│ └── test/ # Test suite
├── Dockerfile # Backend container configuration
└── render.yaml # Render deployment configuration
Access the live demo at: https://ts-verilog-simulator-frontend.vercel.app
git clone https://github.com/yomnahisham/ts-verilog-simulator.git
cd ts-verilog-simulator
cd frontend
npm install
npm run dev
cd backend
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8001
docker build -t verilog-sim-backend backend/
docker run -p 8001:8001 verilog-sim-backend
module example_tb;
reg clk = 0;
reg rst_n;
wire [3:0] q;
example dut (
.clk(clk),
.rst_n(rst_n),
.count(q)
);
// Clock generator
always #5 clk = ~clk;
initial begin
rst_n = 0;
$dumpfile("waveform.vcd");
$dumpvars(0, example_tb);
#20 rst_n = 1;
#100;
$finish;
end
endmodule
Note:- It is important that you include the following to be able to actually see the resulting waveform.
$dumpfile("output_waveform_name.vcd");
$dumpvars(0, your_testbench_name);
Contributions are welcome! Please feel free to submit an Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.