Tracing the "why" behind a failure
A waveform shows what happened. Verinox works backward from the failing signal to the RTL condition that caused it.
AI Copilot for Hardware Verification — Built in India
Verinox reads your Verilog, generates the testbench, and helps you trace why a signal misbehaved — before you open Verdi.
4+ engineer responses across r/VLSI & r/chipdesign
Reviewed on Siemens Verification Academy, with feedback from AVAQ Semiconductor
Built for DV engineers & VLSI students across India
// problems we validated
Every pain point below came from real conversations with DV engineers — not a feature brainstorm.
A waveform shows what happened. Verinox works backward from the failing signal to the RTL condition that caused it.
Large dump files shouldn't mean five-minute load screens. Verinox works off targeted signal slices instead of the full dump.
On a wide bus with hundreds of nets, Verinox narrows the search to the handful of signals actually involved in the failure path.
No assertion fired, no error printed, sim just stalls. Verinox flags the last active driver before the stall so you're not guessing.
// how it works
Phase 1 is live today. Everything runs locally against your RTL — nothing is uploaded.
Paste or upload any module — Verinox parses ports, parameters, and clocking without needing a spec.
A local CodeLlama model, run through Verinox's Flask engine, infers reset behavior, handshakes, and edge cases from the RTL itself.
A complete, simulation-ready testbench is generated — stimulus, checkers, and clock/reset boilerplate included.
The upcoming Simulation Debug Assistant traces failures back through the waveform automatically.
// live in phase 1
This is the actual interaction — a module in, a self-checking testbench out.
module fifo_ctrl #(parameter DEPTH = 16) (
input wire clk,
input wire rst_n,
input wire wr_en,
input wire rd_en,
input wire [7:0] data_in,
output reg [7:0] data_out,
output wire full,
output wire empty,
output wire almost_full
);
// synchronous FIFO, DEPTH-entry
...
endmodule
module tb_fifo_ctrl;
reg clk = 0;
reg rst_n, wr_en, rd_en;
reg [7:0] data_in;
wire [7:0] data_out;
wire full, empty, almost_full;
fifo_ctrl #(.DEPTH(16)) dut (.*);
always #5 clk = ~clk;
initial begin
rst_n = 0; wr_en = 0; rd_en = 0;
#12 rst_n = 1;
// directed write/read + almost_full check
repeat (20) begin
@(posedge clk);
wr_en <= $urandom_range(0,1);
rd_en <= $urandom_range(0,1);
end
#50 $finish;
end
endmodule
// fair questions
A reasonable question. Here's the honest answer.
For a quick, rough draft — yes, and we won't pretend otherwise. But most DV teams can't paste proprietary RTL into a general chatbot in the first place; it's an IP and compliance risk, not a preference. Verinox runs locally through Ollama, so your module never leaves your machine. That's the actual blocker Verinox removes.
No. Phase 1 runs on Flask + Ollama + CodeLlama on your own machine — there's no cloud call, no external API, no copy of your module sitting on a server somewhere.
Testbench generation is the easy part. The harder problem — tracing a waveform failure back to the RTL condition that caused it — needs a tool that actually reads your simulation dump and understands your DUT's signal relationships. That's what Phase 2, the Simulation Debug Assistant, is built for, and it's not a copy-paste-into-a-chatbot task.
Not yet — it's on the roadmap. For now, reach out through the contact form and we'll run your module through it directly.
// the path to a full copilot
Verinox is being built in public, phase by phase, with DV engineers shaping what comes next.
Generate a complete, runnable testbench from any Verilog module.
Trace a failing signal back to the RTL condition that caused it.
Surface coverage holes and suggest the stimulus to close them.
Scaffold a UVM environment — agents, sequences, scoreboard — from your DUT.
One assistant across the entire verification flow, from testbench to signoff.
// get in touch
Early access is limited while Verinox runs locally. Tell us what you're verifying and we'll reach out.