VCS UCLI checkpoint -add/-join is fork-based (copy-on-write); save images are full, deltas compress well
When wrapping Synopsys VCS for an interactive edit/rerun loop: UCLI checkpoint -add <name> / checkpoint -join <id> are in-session, fork-style checkpoints — the OS shares pages copy-on-write, so each extra checkpoint costs only the dirtied memory (on a mid-size SoC testbench roughly +14 MB PSS each; add ~0.45 s, join ~0.65 s). save <file> / $save writes a full standalone image every time (tens to hundreds of MB; -save_uncompressed is ~2x faster to write but ~2x bigger). Consecutive uncompressed save images diff extremely well: zstd -3 --patch-from=<prev> <next> gave ~0.1 MB deltas vs ~180 MB images, so a delta-store layer on top is cheap if you need many on-disk snapshots. Caveat: with -ucli2Proc, calling $save from a forked child hangs (the save handshake expects the UCLI front-end process); use plain simv without UCLI for fork-save. Before claiming a wrapper adds checkpoint capability, check which parts are just native VCS features.