Skip to content

Releases: Cedar17/ZlibValidation

v1.2.3

Choose a tag to compare

@Cedar17 Cedar17 released this 06 Jul 09:48
8e74178

v1.2.3

This release pays off the "year" unit debt by unifying to seconds across CLI, DB schema, and internal semantics.

Breaking: CLI --aged-year--age-time

--aged-year (double) is replaced by --age-time (string with unit suffix). New parse_age_time() converts y/d/h/bare-number to seconds:

Input Result Formula
--age-time 0.01h 36.0 s ×3600
--age-time 10y 315360000.0 s ×31536000
--age-time 36 36.0 s bare number = seconds
--age-time 0.01d 864.0 s ×86400
--age-time "" 0.0 s non-aging library

Unit parsing is centralized in C++, eliminating duplicated conversion logic in callers (aging-ml).

Schema: lut_entries.aged_yearlut_entries.age_seconds

DDL, UNIQUE constraint, INSERT statement, and all bind sites updated. The column now stores seconds not years, eliminating floating-point precision issues on small time values (e.g. 0.01h = 36.0s vs 1.14e-6 years).

Internal: Variable/parameter/comment rename

All aged_year references renamed to age_seconds across 8 source files — headers, implementation, and tests.

Chore: Remove obsolete doc

doc/sqlite_dedup_analysis.md (bug postmortem from v1.2.1) archived. Core knowledge (SQLite NULL ≠ NULL in UNIQUE constraint) condensed into agent memory.

Files changed (cumulative v1.2.2 + v1.2.3)

11 files, 62 insertions, 230 deletions.

Binary

File Name: zlibvalidation
Size: 15.7 MB
Compilation Environment: Red Hat Enterprise Linux 8.10 x86_64

v1.2.1

Choose a tag to compare

@Cedar17 Cedar17 released this 23 Jun 04:57
36510dd

v1.2.1

This release ships the SQLite-based Liberty LUT persistence pipeline (parse --db) and fixes a critical silent dedup data-loss bug in the UNIQUE constraint.

Feature: SQLite parse support (f10ad71d)

LibDatabase class with prepared INSERT, float32 BLOB conversion, and WAL journal mode. LibFile::writeToDB() iterates cells → output_pins → timing_arcs → arc_types and writes each LUT as a row in lut_entries with full hierarchy context (cell, pin, related_pin, timing_sense/type, PVT, index arrays, values). CLI flags --db, --pvt, --aged-year added to the parse subcommand. 8 GoogleTest cases.

Fix: when column added to UNIQUE constraint (v1.2.0)

The when attribute (boolean condition distinguishing timing arcs sharing the same related_pin) was not extracted, not stored, and not part of the UNIQUE constraint. On a production PDK with 531 cells / 6943 when conditions, this caused INSERT OR IGNORE to silently discard 77.7% of entries (counter: 35560, DB: 7936). After the fix, 35536 entries are preserved with full when fidelity — 27,772 conditional arcs, 717 distinct when expressions, zero data loss.

Key design decision: empty when is bound as "" (empty string) rather than SQL NULL, because SQLite's UNIQUE constraint treats multiple NULLs as non-conflicting, which would break idempotent re-writes for unconditional arcs.

TDD-driven: 3 new regression tests covering UNIQUE-level when dedup, integration-level distinct-when count, and multi-when survival.

Fix: CLI help text synced with README (v1.2.1)

The parse subcommand description in main.cpp now mentions the --db SQLite mode. README help section updated to match actual ./zlibvalidation -h output.

Files changed

10 files, 407 insertions, 42 deletions (cumulative v1.2.0 + v1.2.1)

v1.1.2

Choose a tag to compare

@Cedar17 Cedar17 released this 15 Apr 08:41

Release Date: 2025-04-15

v1.1.0

Choose a tag to compare

@Cedar17 Cedar17 released this 07 Apr 04:22

Release Date: 2025-04-07

Compilation Environment: Red Hat Enterprise Linux 8.10 x86_64

Highlights of this Release:

  • See [doc/ChangeLog.md]

Binary File:

  • File Name: zlibvalidation
  • Size: 14.89 MB