Reviving OVL for the AI era, via opensource
RTL is getting cheaper to produce. Whether it comes from a teammate, a script or an AI assistant, someone still has to decide if it's correct, and that check shouldn't depend on a license seat.
Our bet is that simple, always-on assertions are a good answer. Accellera's Open Verification Library (OVL) is 55 ready-made checkers written as plain HDL modules. You instantiate one next to the logic it watches, and it tells you when a rule is broken. They're vendor-neutral and tool-agnostic. That is the shape of guardrail a CI job running an open-source simulator can use on every commit.
OVL's last release was in 2014, and its working group is listed as inactive. The simulators have moved on, and the library hasn't. So we're doing something about it.
af_ovl: OVL 2.8.1, revamped for open-source simulators
The first target is Icarus Verilog. Here's what you get today:
- Silent checkers now speak up. Four checkers (
ovl_bits,ovl_mutex,ovl_code_distanceandovl_coverage) exist upstream only as SVA, which Icarus doesn't support. They used to compile and then say nothing, which looks exactly like a passing design. They now report violations. - A modern reporting path. Messages are no longer cut at 128 characters. Severities map to
$fatal/$error/$warning/$info, and there's an optional UVM path. The original task is still available withOVL_LEGACY_TASK. - Nothing to rewrite. Module names, parameters and ports are unchanged.
ovl_mutex #(.width(4), .msg("grants overlap"))
u_grant_mutex (.clock(clk), .reset(rst_n), .enable(1'b1),
.test_expr(grant), .fire());
iverilog -g2012 -DOVL_VERILOG -DOVL_ASSERT_ON \
-I std_ovl -I af_ovl std_ovl/ovl_mutex.v my_tb.sv
Four is the start
Those four were the first to be fixed, not the whole plan. Eighteen more checkers still elaborate but stay silent, and they're next. Beyond that, we plan to add new checkers under their own prefix, so they can't be confused with the Accellera set.
Where it stands
- All 55 checkers elaborate on Icarus Verilog 14.0 (a development build).
- 7 have pass/fail tests, and the other 48 are still to come.
- The tests don't check the
fireoutput yet. - Verilator isn't tested yet.
The docs list every change from OVL 2.8.1, with a reference for all 55 checkers that shows the status of each. Please read them before you rely on a specific checker.
Try it, and tell us what breaks
Install it, point it at your design and see what it catches. Then open an issue for a bug or a feature request. Which checker should we do next? What did your simulator choke on? That's the feedback that sets the order of the work. Our team is building the enhancements.
af_ovl is Apache-2.0, derived from Accellera OVL 2.8.1, and isn't affiliated with or endorsed by Accellera.
Code: github.com/AsFigo/af_ovl
Docs: asfigo.github.io/af_ovl
Comments
Post a Comment