At a glance
| IP | Status | Wrapper | Interfaces | Simulation runs | Lint warnings left | Structural CDC/RDC |
|---|---|---|---|---|---|---|
| CV-X1 Pro | released product line | cv_x1_pro_axi, Verilog-2005, public | AXI4-Lite slave, AXI4-Stream slave, AXI4-Stream master | 6 / 6 PASS | 0 | PASS |
| CV-GEMV | research RTL, supplied under an evaluation agreement | cv_gemv_axi, SystemVerilog, evaluation licence | AXI4-Lite slave, AXI4-Stream slave, AXI4-Stream master, irq | 16 / 16 PASS | 0 | PASS |
IP-XACT (IEEE 1685-2014) schema validation of both components: PASS (log). The full written contract is the integration guide; every claim below links to its file.
Bus interfaces
| IP | Interface | Role | IP-XACT bus type | Signals (widths from the IP-XACT component) |
|---|---|---|---|---|
| CV-X1 Pro | s_axil | slave | amba.com:AMBA4:AXI4-Lite:r0p0 | awaddr[11:0], awprot[2:0], awvalid, awready, wdata[31:0], wstrb[3:0], wvalid, wready, bresp[1:0], bvalid, bready, araddr[11:0], arprot[2:0], arvalid, arready, rdata[31:0], rresp[1:0], rvalid, rready |
| CV-X1 Pro | s_axis | slave | amba.com:AMBA4:AXI4Stream:r0p0 | tvalid, tready, tdata[63:0], tuser[19:0], tlast |
| CV-X1 Pro | m_axis | master | amba.com:AMBA4:AXI4Stream:r0p0 | tvalid, tready, tdata[31:0], tuser[1:0], tlast |
| CV-GEMV | s_axil | slave | amba.com:AMBA4:AXI4-Lite:r0p0 | awaddr[11:0], awprot[2:0], awvalid, awready, wdata[31:0], wstrb[3:0], wvalid, wready, bresp[1:0], bvalid, bready, araddr[11:0], arprot[2:0], arvalid, arready, rdata[31:0], rresp[1:0], rvalid, rready |
| CV-GEMV | s_axis | slave | amba.com:AMBA4:AXI4Stream:r0p0 | tvalid, tready, tdata[31:0], tdest[1:0], tlast |
| CV-GEMV | m_axis | master | amba.com:AMBA4:AXI4Stream:r0p0 | tvalid, tready, tdata[31:0], tlast |
| CV-GEMV | irq | output | — | level interrupt, registered: irq = |(INT_STATUS & INT_ENABLE) |
Sources: CV-X1 Pro IP-XACT · CV-GEMV IP-XACT.
AXI4-Lite (32-bit data, 12-bit byte address), the same policy in both wrappers:
- Byte address, 32-bit registers; address bits [1:0] are ignored (AXI4-Lite accesses are full width).
- AWPROT/ARPROT are accepted and ignored.
- AW and W are accepted independently, in either order or in the same cycle; one write executes once both are held and the previous B response has been accepted. One write and one read every two cycles at most; BVALID/RVALID stay asserted with stable payload until BREADY/RREADY.
- Unmapped address: read returns 0x00000000 with SLVERR; write has no effect, returns SLVERR and sets ERR.ADDR_ERR.
- Write to a read-only register: no effect, SLVERR, ERR.ADDR_ERR.
- Write-only locations read as 0x00000000 with OKAY.
- WSTRB: register fields live in byte lane 0 unless stated; a write without WSTRB[0] leaves byte-0 fields unchanged (OKAY).
- Reads have no side effects.
Measured in simulation: a write completes at least 2 cycles after the later of its AW and W handshakes, a read at least 1 cycle after AR; AW handshakes and AR handshakes are each at least 2 cycles apart. CV-X1 Pro held at most 2 writes and 1 read in flight.
AXI4-Stream. CV-X1 Pro: one result per accepted tile, in order; TSTRB, TKEEP, TID, TDEST are not used (every byte valid). CV-GEMV load port: TDEST selects weights, metadata or query memory, TLAST ends a packet; s_axis_tready is held low while a command runs or a START is pending, so a load never changes a running command. CV-GEMV result port: one signed, saturated row per beat, TLAST on the last row. Field layouts: integration guide, section 4.
Clock and reset
| IP | Clock domains | Flip-flops | Latches | With async reset | Without reset | Flops with aresetn in data cone | Combinational input → output | SDC clock period |
|---|---|---|---|---|---|---|---|---|
| CV-X1 Pro | 1 | 2,712 | 0 | 2,712 | 0 | 0 | none | 4.000 ns |
| CV-GEMV | 1 | 4,265 | 0 | 1,737 | 2,528 | 3,891 | s_axis_tready ← aresetn | 4.000 ns |
- One clock,
aclk, rising edge. Every flip-flop is clocked by it directly; no derived or gated clocks, no latches. - One reset,
aresetn, active low, asserted asynchronously. Release must be synchronous toaclk: put a reset synchronizer in the integrating design. Asynchronous release is not supported; the SDC excludes only the reset assertion from timing. - CV-X1 Pro: reset clears the weight memory, FIFO, pipeline, accumulator and counters. Every flip-flop has an asynchronous reset and no output has a combinational path from any input.
- CV-GEMV: reset aborts a running command and clears control state but does not clear the weight, metadata, query or result memories; results are invalid after reset (
STATUS.RESULT_VALID = 0). The device also usesaresetnas a synchronous qualifier, so the reset reaches 3,891 data inputs ands_axis_treadydepends combinationally onaresetn. Its release must meet setup and hold like a data input.
Reports: CV-X1 Pro CDC/RDC (per-flop JSON) · CV-GEMV, memories black-boxed · CV-GEMV, memories as flip-flops · constraints CV-X1 Pro SDC, CV-GEMV SDC.
Register maps
| Offset | Name | Access | Reset | Fields | Description |
|---|---|---|---|---|---|
0x000 | ID | RO | 0x43565831 | ID | Identification, ASCII "CVX1". |
0x004 | VERSION | RO | 0x00010000 | MAJOR, MINOR, PATCH | Wrapper version 1.0.0. |
0x008 | CAPS | RO | 0x13410408 | LANES, BANKS, ROWS_PER_BANK, FIFO_DEPTH, PIPE_STAGES, SAT_MODE, WEIGHT_READBACK | Fixed core capabilities. |
0x00C | CTRL | RW | 0x00000002 | STREAM_EN, WGUARD | Control. |
0x010 | STATUS | RO | 0x00000400 | INFLIGHT, FIFO_COUNT, BUSY, SAT_OVF, CORE_S_TREADY, M_TVALID | Live status (reset value shown). |
0x014 | ERR | W1C | 0x00000000 | WGUARD_REJECT, WSTRB_REJECT, ADDR_ERR | Sticky error flags; write 1 to clear (byte lane 0). |
0x018 | PERF_MAC_TILES | RO | 0x00000000 | COUNT | Tiles completed since reset (16-bit, wraps). |
0x01C | PERF_STALL_CYCLES | RO | 0x00000000 | COUNT | Cycles with m_axis_tvalid=1 and m_axis_tready=0 since reset (16-bit, wraps). |
0x020 | PERF_BANK_CONFLICTS | RO | 0x00000000 | COUNT | Consecutive FIFO pops reading the same bank since reset (16-bit, wraps). |
0x100 + 4·i, i < 64 | WEIGHT | WO | 0x00000000 | KV0, KV1, KV2, KV3, KV4, KV5, KV6, KV7 | Weight memory, 64 words. Word i (address 0x100+4*i) is bank i[1:0], row i[5:2]; eight signed INT4 values KV0..KV7 in bits [4k+3:4k]. Requires WSTRB=0xF. Write-only: reads return 0. Reset clears the weight memory to zero. |
Full map with field bits and descriptions: Markdown · JSON ↓ · IP-XACT memory map.
| Offset | Name | Access | Reset | Fields | Description |
|---|---|---|---|---|---|
0x000 | ID | RO | 0x4356474D | ID | Identification, ASCII "CVGM". |
0x004 | VERSION | RO | 0x00010000 | MAJOR, MINOR, PATCH | Wrapper version 1.0.0. |
0x008 | PARAM_ROWS | RO | ROWS | ROWS | Parameter ROWS. |
0x00C | PARAM_COLS | RO | COLS | COLS | Parameter COLS. |
0x010 | PARAM_CFG | RO | (RESULT_STREAM << 17) | P | P, RESULT_STREAM | Parameters P and RESULT_STREAM. Bit 16 is an implementation configuration flag documented in the evaluation-licence register map. |
0x014 | PARAM_BEATS | RO | (2 << 16) | (((P * 12 + 31) / 32) << 8) | P | WEIGHT_BEATS, META_BEATS, QUERY_BEATS | AXI4-Stream beats per memory word. |
0x018 | W_DEPTH | RO | (ROWS / P) * (COLS / 8) | DEPTH | Weight memory depth in words. |
0x01C | M_DEPTH | RO | (ROWS / P) * (COLS / 32) | DEPTH | Metadata memory depth in words. |
0x020 | Q_DEPTH | RO | COLS / 8 | DEPTH | Query memory depth in words. |
0x024 | R_BLOCKS | RO | ROWS / P | BLOCKS | Result blocks of P rows. |
0x040 | CTRL | WO | 0x00000000 | START, RSTREAM | Command register (byte lane 0). Reads return 0. Writing both bits is rejected. |
0x044 | STATUS | RO | 0x00000001 | CFG_READY, BUSY, RESULT_VALID, ERROR, START_PENDING, LOAD_ACTIVE, WINDOW_VALID, RSTREAM_ACTIVE, LOAD_DEST, IRQ | Live status (reset value shown). |
0x048 | ERR | W1C | 0x00000000 | PARTIAL_WORD, OVERRUN, BAD_DEST, DEST_MISMATCH, START_REJECT, RESULT_REJECT, ADDR_ERR | Sticky error flags; write 1 to clear (byte lane 0). A new event in the same cycle wins. |
0x04C | INT_STATUS | W1C | 0x00000000 | DONE, RSTREAM_DONE | Interrupt status; write 1 to clear. |
0x050 | INT_ENABLE | RW | 0x00000000 | DONE, RSTREAM_DONE | Interrupt enable; irq = |(INT_STATUS & INT_ENABLE), registered (one cycle). |
0x054 | CYCLES | RO | 0x00000000 | CYCLES | Device resident_cycles of the last command (core cycle_count + 1); 0 after reset and START. |
0x05C | LOAD_WORDS | RO | 0x00000000 | COUNT | Memory words written through the load port since reset (wraps). |
0x060 | W_BASE | RW | 0x00000000 | BASE | Start word address of each weight packet (all byte lanes honoured). |
0x064 | M_BASE | RW | 0x00000000 | BASE | Start word address of each metadata packet. |
0x068 | Q_BASE | RW | 0x00000000 | BASE | Start word address of each query packet. |
0x06C | LOAD_PTR | RO | 0x00000000 | PTR | Next word address of the active or last load packet. |
0x070 | RESULT_SEL | RW | 0x00000000 | BLOCK | Writing selects result block b (rows b*P..b*P+P-1) and reads it into RESULT_DATA. Rejected (SLVERR, ERR.RESULT_REJECT, value unchanged) unless RESULT_VALID=1, b < R_BLOCKS, no START pending and no result stream active. |
0x100 + 4·i, i < P | RESULT_DATA | RO | 0x00000000 | ROW | Rows of the selected block: element l is row RESULT_SEL*P + l (signed 32-bit, saturated). Read with SLVERR and value 0 while STATUS.WINDOW_VALID=0. |
Full map with field bits and descriptions: Markdown · JSON ↓ · IP-XACT memory map.
Parameters and simulated ranges
| Parameter | Default | Legal values | Simulated |
|---|---|---|---|
LANES | 8 | 8 (fixed) | 8 |
BANKS x ROWS_PER_BANK | 4 x 16 | 4 x 16 (fixed) | 4 x 16 |
FIFO_DEPTH | 4 | 4 (fixed) | 4 |
AXI4-Lite ADDR/DATA width | 12 / 32 | 12 / 32 (fixed) | 12 / 32 |
s_axis TDATA/TUSER width | 64 / 20 | 64 / 20 (fixed) | 64 / 20 |
m_axis TDATA/TUSER width | 32 / 2 | 32 / 2 (fixed) | 32 / 2 |
| Parameter | Default | Legal values | Simulated |
|---|---|---|---|
ROWS | 32 | 1..4096, ROWS % P == 0 | 32, 64, 896 |
COLS | 128 | 32..65536, multiple of 32 | 128, 256, 4864 |
P | 8 | 1..min(ROWS, 960), ROWS % P == 0, address pointer width <= 24 bits | 8 |
RESULT_STREAM | 1 | 0 or 1 | 1 |
| CV-GEMV configuration | Simulators | Handshake seeds run |
|---|---|---|
| ROWS 32 × COLS 128, P 8 | Icarus Verilog, Verilator | 1 (Icarus Verilog), 2 (Icarus Verilog), 3 (Icarus Verilog), 1 (Verilator), 2 (Verilator), 3 (Verilator) |
| ROWS 64 × COLS 256, P 8 | Icarus Verilog, Verilator | 1 (Icarus Verilog), 2 (Icarus Verilog), 3 (Icarus Verilog), 1 (Verilator), 2 (Verilator), 3 (Verilator) |
| ROWS 896 × COLS 4,864, P 8 | Icarus Verilog, Verilator | 1 (Icarus Verilog), 1 (Verilator), 2 (Verilator), 3 (Verilator) |
CV-X1 Pro has no HDL parameters; its configuration is fixed and was simulated as delivered. For CV-GEMV, a value inside the legal range is not thereby verified: only the configurations above were simulated, all with P = 8 and RESULT_STREAM = 1. Derived parameters (tiles, groups, address widths, depths, beats) must not be overridden. One further implementation parameter, reported in bit 16 of PARAM_CFG, is documented in the evaluation-licence parameter table and register map, with the configurations simulated for it.
What was verified
| Configuration | Simulator | Seeds (log) | Result | Compared with the model | Register reads compared | Write responses compared |
|---|---|---|---|---|---|---|
| CV-X1 Pro | Icarus Verilog | 1 2 3 | PASS | 25,786 stream results | 3,179 | 3,336 |
| CV-X1 Pro | Verilator | 1 2 3 | PASS | 25,786 stream results | 3,179 | 3,336 |
| CV-GEMV 32 × 128, P 8 | Icarus Verilog | 1 2 3 | PASS | 15 commands (15 cycle counts matched); 480 rows via AXI4-Lite, 576 via AXI4-Stream | 1,071 | 354 |
| CV-GEMV 32 × 128, P 8 | Verilator | 1 2 3 | PASS | 15 commands (15 cycle counts matched); 480 rows via AXI4-Lite, 576 via AXI4-Stream | 1,071 | 354 |
| CV-GEMV 64 × 256, P 8 | Icarus Verilog | 1 2 3 | PASS | 15 commands (15 cycle counts matched); 960 rows via AXI4-Lite, 1,152 via AXI4-Stream | 1,611 | 414 |
| CV-GEMV 64 × 256, P 8 | Verilator | 1 2 3 | PASS | 15 commands (15 cycle counts matched); 960 rows via AXI4-Lite, 1,152 via AXI4-Stream | 1,611 | 414 |
| CV-GEMV 896 × 4,864, P 8 | Icarus Verilog | 1 | PASS | 5 commands (5 cycle counts matched); 4,480 rows via AXI4-Lite, 5,376 via AXI4-Stream | 5,188 | 657 |
| CV-GEMV 896 × 4,864, P 8 | Verilator | 1 2 3 | PASS | 15 commands (15 cycle counts matched); 13,440 rows via AXI4-Lite, 16,128 via AXI4-Stream | 15,564 | 1,971 |
Simulators: Icarus Verilog and Verilator 5.052; handshake seeds 1, 2, 3. For each of the 10 seed and configuration pairs run in both simulators, the two logs report identical counts and results. Every result is compared with an independent Python model, through both the AXI4-Lite result window and the result stream. The testbenches drive AW before W, W before AW and both in one cycle, back-to-back requests, random VALID/READY delays, reads during writes, OKAY and SLVERR for every address class, write strobes, write-1-to-clear flags, the reset value of every register and a reset in the middle of traffic. Summaries: CV-X1 Pro JSON ↓ · CV-GEMV JSON ↓ · all results JSON ↓. The public CV-GEMV logs have the per-command cycle values redacted; the unredacted logs are delivered under the evaluation licence.
| Item (cycles, measured in simulation) | CV-X1 Pro | CV-GEMV |
|---|---|---|
| Stream input to result, handshake to handshake | min 4, max 108 (with random backpressure) | — |
| Throughput, always-valid source and always-ready sink | 500 results in 500 cycles | load port: TREADY low for 0 cycles while idle |
| START write to device start | — | 1 |
irq rise after device start | — | CYCLES + 3 |
| Result stream, always-ready sink | — | 32 rows in 36 cycles; 64 rows in 72 cycles; 896 rows in 1,008 cycles |
| Memory writes while a command executes | — | 0 |
Fault injection. Each testbench was rerun against single-line mutations of its wrapper; it must fail on every one.
Lint. Verilator 5.052 --lint-only -Wall, first without waivers, then with them; Yosys 0.70+post check without waivers. The cores are delivered unmodified, so warnings inside core files are waived with a stated reason rather than fixed (waivers and reasons).
| IP | Verilator warnings, no waivers | Waivers | Left after waivers | Yosys problems | Logs |
|---|---|---|---|---|---|
| CV-X1 Pro | 5 (DECLFILENAME 1, UNUSEDSIGNAL 4) | 5 | 0 | 0 | raw · waived · Yosys |
| CV-GEMV | 19 (DECLFILENAME 3, GENUNNAMED 2, WIDTHEXPAND 3, WIDTHTRUNC 3, UNUSEDSIGNAL 7, SYNCASYNCNET 1) | 17 | 0 | 0 | raw · waived · Yosys |
IP-XACT. Both components validate against the IEEE 1685-2014 schema with xmllint (libxml 20913); the published files' SHA-256 match the validated files. A negative control (first addressOffset renamed to addrOffset) fails as expected (exit 3). Result: PASS (log).
Area and timing (pre-layout)
| Design | Wrapper µm² | Wrapped IP µm² | Total µm² | Wrapper overhead | Timing at 4.000 ns |
|---|---|---|---|---|---|
| CV-X1 Pro | 707.028 (81 flip-flops) | 25,292.344 | 25,999.372 | 2.8% of core | setup +0.1389 ns, hold +0.037 ns, minimum period 3.86 ns |
| CV-GEMV, memories black-boxed | 4,704.742 (425 flip-flops) | 63,568.946 | 68,273.688 | 7.4% of device + core | report under evaluation licence |
| CV-GEMV, memories as flip-flops | 4,704.742 | 225,092.392 (memory 161,452.424) | 229,797.134 | — | — |
A production CV-GEMV integration replaces the reference memory arrays with SRAM macros and re-times the memory paths. Reports: CV-X1 Pro area · CV-X1 Pro timing · CV-GEMV, memories black-boxed · CV-GEMV, memories as flip-flops.
What is delivered
| IP | Deliverable | Availability | Files |
|---|---|---|---|
| CV-X1 Pro | Wrapper RTL (Verilog-2005) | public | cv_x1_pro_axi.v |
| CV-X1 Pro | Core RTL (unmodified, already public) | public | dut.v |
| CV-X1 Pro | Timing constraints (SDC) | public | cv_x1_pro_axi.sdc |
| CV-X1 Pro | Synthesis script and reports (Yosys stat, OpenSTA) | public | cv_x1_pro_axi.ys, stat_hier.log, stat_flat.log, yosys.log, sta.tcl, sta.log |
| CV-X1 Pro | Lint reports and waivers | public | verilator_lint_raw.log, verilator_lint_waived.log, yosys_check.log, lint-summary.json, cv_x1_pro_axi.vlt, lint-waivers.md |
| CV-X1 Pro | Structural CDC/RDC report (per-flop JSON) | public | cdc.md, cdc.json |
| CV-X1 Pro | IP-XACT IEEE 1685-2014 component | public | cv_x1_pro_axi.xml |
| CV-X1 Pro | Register map | public | cv_x1_pro_axi.regmap.md, cv_x1_pro_axi.regmap.json |
| CV-X1 Pro | Parameter table | public | cv_x1_pro_axi.params.md, cv_x1_pro_axi.params.json |
| CV-X1 Pro | Testbench, AXI monitors, vector generator / golden model | public | tb_cv_x1_pro_axi.sv, axil_monitor.sv, axis_monitor.sv, gen_x1_vectors.py |
| CV-X1 Pro | Simulation logs (Icarus, Verilator) and fault-injection log | public | mutation_x1.log, x1-summary.json, x1_icarus_seed1.log, x1_icarus_seed2.log, x1_icarus_seed3.log, x1_verilator_seed1.log, x1_verilator_seed2.log, x1_verilator_seed3.log |
| CV-GEMV | Wrapper RTL (SystemVerilog) | evaluation licence | 1 file; SHA-256 in the manifest |
| CV-GEMV | Device/core/memory RTL (unmodified) | evaluation licence | 4 files; SHA-256 in the manifest |
| CV-GEMV | Timing constraints (SDC) | public | cv_gemv_axi.sdc |
| CV-GEMV | Synthesis scripts | evaluation licence | 2 files; SHA-256 in the manifest |
| CV-GEMV | Synthesis stat logs (memory excluded / memory as flip-flops) | public | stat_flat.log, stat_hier.log, stat_flat.log, stat_hier.log |
| CV-GEMV | Timing reports (OpenSTA) | evaluation licence | 2 files; SHA-256 in the manifest |
| CV-GEMV | Lint reports (source excerpts removed) and waivers | public | verilator_lint_raw.log, verilator_lint_waived.log, yosys_check.log, lint-summary.json, lint-waivers.md |
| CV-GEMV | Verilator waiver file | evaluation licence | 1 file; SHA-256 in the manifest |
| CV-GEMV | Structural CDC/RDC reports (grouped by source file) | public | cdc-memory-as-flops.json, cdc-memory-as-flops.md, cdc-memory-excluded.json, cdc-memory-excluded.md |
| CV-GEMV | IP-XACT IEEE 1685-2014 component | public | cv_gemv_axi.xml |
| CV-GEMV | Register map | public | cv_gemv_axi.regmap.md, cv_gemv_axi.regmap.json |
| CV-GEMV | Parameter table | public | cv_gemv_axi.params.md, cv_gemv_axi.params.json |
| CV-GEMV | Testbench and vector generator / golden model | evaluation licence | 4 files; SHA-256 in the manifest |
| CV-GEMV | Simulation logs, public copies (one parameter and per-command cycle values redacted) and fault-injection log | public | gemv-summary.json, gemv_32x128_p8_icarus_seed1.log, gemv_32x128_p8_icarus_seed2.log, gemv_32x128_p8_icarus_seed3.log, gemv_32x128_p8_verilator_seed1.log, gemv_32x128_p8_verilator_seed2.log, gemv_32x128_p8_verilator_seed3.log, gemv_64x256_p8_icarus_seed1.log, gemv_64x256_p8_icarus_seed2.log, gemv_64x256_p8_icarus_seed3.log, gemv_64x256_p8_verilator_seed1.log, gemv_64x256_p8_verilator_seed2.log, gemv_64x256_p8_verilator_seed3.log, gemv_896x4864_p8_icarus_seed1.log, gemv_896x4864_p8_verilator_seed1.log, gemv_896x4864_p8_verilator_seed2.log, gemv_896x4864_p8_verilator_seed3.log, mutation_gemv.log |
| CV-GEMV | Simulation logs, unredacted, incl. the non-default parameter configuration | evaluation licence | 24 files; combined SHA-256 in the manifest |
| CV-GEMV | Complete register map, parameter table and IP-XACT (all parameters) | evaluation licence | 5 files; SHA-256 in the manifest |
| both | Integration guide (public edition) | public | INTEGRATION_GUIDE.md |
| both | Integration guide (complete edition) | evaluation licence | 1 file; SHA-256 in the manifest |
| both | IP-XACT schema validation log | public | ipxact-validation.log |
| both | Evidence summary (numbers used on the site) | public | summary.json |
| both | Flow scripts (simulation, synthesis, lint, CDC, IP-XACT) | public | netlist_check.py, run_synth.py, validate_ipxact.py |
| both | Fault-injection, publishing and full-flow scripts | evaluation licence | 7 files; SHA-256 in the manifest |
Delivery manifest JSON ↓ (paths, sizes and SHA-256 of every file, including those under the evaluation licence).
Not included, not verified
- No formal proof of the wrappers; no gate-level or SDF-annotated simulation; no placement, routing, clock tree, power or silicon data in this release. Timing uses ideal clocks.
- CDC/RDC is a structural analysis of the gate netlist with Corvel's own script, not a commercial CDC/RDC or lint tool.
- The AXI monitors are Corvel's own; no third-party AXI protocol-checker IP was used.
- IP-XACT is schema-valid but was not imported into an IP-XACT EDA tool. The AMBA bus-definition VLNVs were not checked against the official AMBA definition files; check them against your licensed AMBA library before import.
- CV-GEMV: only P = 8 and RESULT_STREAM = 1 were simulated, at the ROWS × COLS listed above; other legal values are not verified. 32-bit result saturation is reachable and tested only at 896 × 4,864.
- CV-GEMV: memories are reference arrays; SRAM macro timing is not covered. Reset does not clear them. The device does not export its memory read counter, so there is no READS register (offset
0x058is unmapped). - CV-GEMV: the RTL is research RTL supplied under an evaluation agreement; its wrapper and core RTL, synthesis scripts, timing reports, testbench and unredacted logs are not public.
- CV-X1 Pro: weight writes during traffic with
WGUARD = 0follow the core's read-old-data rule and are not compared against a model;PERF_BANK_CONFLICTSis checked only for equality with the core counter; the performance counters are 16-bit and wrap.