From 8e7336b74a86f7af404f154416ed764f777dbb9c Mon Sep 17 00:00:00 2001 From: YurenHao0426 Date: Sat, 29 Aug 2026 19:19:11 -0500 Subject: figure: promote confirmed nonlinear hardware results --- README.md | 5 +- THREE_PART_EVIDENCE.md | 16 +- experiments/plot_physical_hardware_evidence.py | 24 +- ...ure_physical_hardware_evidence_confirmation.pdf | Bin 0 -> 19423 bytes ...ure_physical_hardware_evidence_confirmation.png | Bin 0 -> 153645 bytes ...ure_physical_hardware_evidence_confirmation.svg | 1105 ++++++++++++++++++++ .../p12_hardware_evidence_analysis.json | 324 ++++++ .../physical_bias/p12_hardware_evidence_source.csv | 26 + visual-composer/physical-hardware-evidence.md | 10 +- visual-composer/qa-ledger.md | 1 + 10 files changed, 1493 insertions(+), 18 deletions(-) create mode 100644 results/figs/figure_physical_hardware_evidence_confirmation.pdf create mode 100644 results/figs/figure_physical_hardware_evidence_confirmation.png create mode 100644 results/figs/figure_physical_hardware_evidence_confirmation.svg create mode 100644 results/physical_bias/p12_hardware_evidence_analysis.json create mode 100644 results/physical_bias/p12_hardware_evidence_source.csv diff --git a/README.md b/README.md index 4724cf2..6d4204d 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,8 @@ task loss. Neutral measurements and their cost are counted. The completed transfer evidence is: Dual Propagation recovers from 9.40% to 82.92% validation accuracy against 82.86% clean; EP recovers from 31.38% to 74.52% against 76.26% clean; and the nonlinear 4-by-4 CLLN recovers from -25.86% mean classification error to 0%. The first fully confirmed digital +25.42% mean classification error to 0% on 120 untouched task/device pairs. +The first fully confirmed digital CLLN size contains 40 tasks and three device draws: at 32 edges, clean and SDIL have 0% error, raw imperfection has 34.69%, same-RMS noise has 0.73%, and static calibration has 6.15%. The remaining five sizes are running under the @@ -57,7 +58,7 @@ frozen protocol. Start with [`THREE_PART_EVIDENCE.md`](THREE_PART_EVIDENCE.md) for the evidence map and [`CLLN_SCALING.md`](CLLN_SCALING.md) for the frozen scaling protocol. The current hardware-realistic figure is -[`figure_physical_hardware_evidence.pdf`](results/figs/figure_physical_hardware_evidence.pdf). +[`figure_physical_hardware_evidence_confirmation.pdf`](results/figs/figure_physical_hardware_evidence_confirmation.pdf). The standard-ResNet stability branch additionally uses a fast paired neutral observation to project any *remaining* affine neutral residual off current diff --git a/THREE_PART_EVIDENCE.md b/THREE_PART_EVIDENCE.md index 306dfc0..e3642e1 100644 --- a/THREE_PART_EVIDENCE.md +++ b/THREE_PART_EVIDENCE.md @@ -96,14 +96,16 @@ This part uses the nonlinear conductance law, periodic 4-by-4 topology, released Figure-5 tasks and initial gates, Appendix-C component imperfections, and explicit local voltage-square updates. -Across 40 tasks and four component draws, or 160 trials per method: +The untouched confirmation uses 40 tasks and three new component draws, or 120 +trials per method: | Method | Mean classification error | Zero-error trials | |:--|--:|--:| | Clean CLLN | 0.00% | 100.00% | -| Raw imperfect CLLN | 25.86% | 21.25% | -| Static calibration | 3.75% | 84.38% | -| Overclamping | 4.77% | 86.88% | +| Raw imperfect CLLN | 25.42% | 18.33% | +| Static calibration | 1.35% | 92.50% | +| Clean overclamping | 0.00% | 100.00% | +| Imperfect overclamping | 5.42% | 85.83% | | SDIL | 0.00% | 100.00% | | Overclamping + SDIL | 0.00% | 100.00% | @@ -116,12 +118,14 @@ failure boundary. Sources: +- `results/physical_bias/p11_nonlinear_hardware_confirmation.json` +- `results/physical_bias/p11_nonlinear_hardware_confirmation_gate.json` - `sdil/physical_grid.py` - `results/physical_bias/p5_full_grid_bias_crossover.json` - `results/physical_bias/p9_grid_correlated_autozero_key_results.json` - `results/physical_bias/p8_spice_autozero_primitive.json` -- `results/figs/figure_physical_hardware_evidence.pdf` -- `results/physical_bias/p10_hardware_evidence_analysis.json` +- `results/figs/figure_physical_hardware_evidence_confirmation.pdf` +- `results/physical_bias/p12_hardware_evidence_analysis.json` The hardware claim is: the full update is simulated with published device equations and nonideal local sampling, and its primitive sample/subtract path diff --git a/experiments/plot_physical_hardware_evidence.py b/experiments/plot_physical_hardware_evidence.py index 6a38b60..2f57096 100644 --- a/experiments/plot_physical_hardware_evidence.py +++ b/experiments/plot_physical_hardware_evidence.py @@ -17,6 +17,7 @@ METHODS = ( ("clean", "Clean", "#222222"), ("raw", "Raw", "#D55E00"), ("constant", "Static\ncalibration", "#777777"), + ("overclamp_clean", "Clean\noverclamp", "#444444"), ("overclamp", "Overclamp", "#E69F00"), ("sdil", "SDIL", "#0072B2"), ("overclamp_sdil", "Overclamp\n+ SDIL", "#56B4E9"), @@ -39,7 +40,7 @@ def parse_args() -> argparse.Namespace: "--physical", type=Path, default=Path( - "results/physical_bias/p5_full_grid_bias_crossover.json"), + "results/physical_bias/p11_nonlinear_hardware_confirmation.json"), ) parser.add_argument( "--sampler", @@ -57,18 +58,19 @@ def parse_args() -> argparse.Namespace: "--output-analysis", type=Path, default=Path( - "results/physical_bias/p10_hardware_evidence_analysis.json"), + "results/physical_bias/p12_hardware_evidence_analysis.json"), ) parser.add_argument( "--output-csv", type=Path, default=Path( - "results/physical_bias/p10_hardware_evidence_source.csv"), + "results/physical_bias/p12_hardware_evidence_source.csv"), ) parser.add_argument( "--output-figure", type=Path, - default=Path("results/figs/figure_physical_hardware_evidence"), + default=Path( + "results/figs/figure_physical_hardware_evidence_confirmation"), ) parser.add_argument("--bootstrap-replicates", type=int, default=20000) parser.add_argument("--bootstrap-seed", type=int, default=20260829) @@ -180,8 +182,18 @@ def build_analysis( return { "analysis": "physical_clln_hardware_evidence_figure", "confirmatory": False, + "source_status": { + "nonlinear_method_comparison_confirmatory": bool( + physical["confirmatory"]), + "sampler_robustness_sweep_confirmatory": bool( + sampler["confirmatory"]), + "spice_primitive_publication_evidence": bool( + spice["publication_evidence"]), + }, "bootstrap": { - "unit": "task; four device draws averaged within task", + "unit": "task", + "nonlinear_confirmation_device_draws_per_task": 3, + "sampler_sweep_device_draws_per_task": 4, "task_clusters": 40, "replicates": replicates, "seed": seed, @@ -378,7 +390,7 @@ def plot(path: Path, analysis: dict) -> None: figure.text( 0.995, 0.005, - "40 tasks × 4 device draws; error bars are task-bootstrap 95% intervals", + "40 tasks; (a) 3 new device draws, (b–c) 4 development draws; task-bootstrap 95% intervals", ha="right", va="bottom", fontsize=7, diff --git a/results/figs/figure_physical_hardware_evidence_confirmation.pdf b/results/figs/figure_physical_hardware_evidence_confirmation.pdf new file mode 100644 index 0000000..9dec039 Binary files /dev/null and b/results/figs/figure_physical_hardware_evidence_confirmation.pdf differ diff --git a/results/figs/figure_physical_hardware_evidence_confirmation.png b/results/figs/figure_physical_hardware_evidence_confirmation.png new file mode 100644 index 0000000..72cf938 Binary files /dev/null and b/results/figs/figure_physical_hardware_evidence_confirmation.png differ diff --git a/results/figs/figure_physical_hardware_evidence_confirmation.svg b/results/figs/figure_physical_hardware_evidence_confirmation.svg new file mode 100644 index 0000000..1340257 --- /dev/null +++ b/results/figs/figure_physical_hardware_evidence_confirmation.svg @@ -0,0 +1,1105 @@ + + + + + + + + 2026-08-29T19:17:45.179658 + image/svg+xml + + + Matplotlib v3.10.8, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 10 + + + + + + + + + + + + + 20 + + + + + + + + + + + + + 30 + + + + Final classification error (%) + + + + + + + + + + + + + + Clean + + + + + + + + + + Raw + + + + + + + + + + Static calibration + + + + + + + + + + Clean overclamp + + + + + + + + + + Overclamp + + + + + + + + + + SDIL + + + + + + + + + + Overclamp + SDIL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + (a) Nonlinear CLLN with component errors + + + + + + + + + + + + + + + + + + 1 + 0 + + 2 + + + + + + + + + + + + + + + 1 + 0 + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Residual sampling error (V/s, RMSE) + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 5 + + + + + + + + + + + + + 10 + + + + + + + + + + + + + 15 + + + + + + + + + + + + + 20 + + + + + + + + + + + + + 25 + + + + + + + + + + + + + 30 + + + + Final classification error (%) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + (b) Local sample-path mismatch + + + + + + + + + + + + + + + + + + + + + + + + + Pedestal mismatch + + + + + + + + + + + + + + + + + + + + + + + + Gain mismatch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + 10 + + + + + + + + + + + + + 20 + + + + + + + + + + + + + 30 + + + + Final classification error (%) + + + + + + + + + + + Ideal CDS + + + + + + + + + + Common pedestal + + + + + + + + + + Sample noise + + + + + + + + + + Refresh every 4 + + + + + + + + + + Mild combined + + + + + + + + + + Strong combined + + + + + + + + + + Overclamp + mild + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + (c) Nonideal local sampling + + + + 40 tasks; (a) 3 new device draws, (b–c) 4 development draws; task-bootstrap 95% intervals + + + + + + + + + + + + + + diff --git a/results/physical_bias/p12_hardware_evidence_analysis.json b/results/physical_bias/p12_hardware_evidence_analysis.json new file mode 100644 index 0000000..f3906fe --- /dev/null +++ b/results/physical_bias/p12_hardware_evidence_analysis.json @@ -0,0 +1,324 @@ +{ + "analysis": "physical_clln_hardware_evidence_figure", + "confirmatory": false, + "source_status": { + "nonlinear_method_comparison_confirmatory": true, + "sampler_robustness_sweep_confirmatory": false, + "spice_primitive_publication_evidence": false + }, + "bootstrap": { + "unit": "task", + "nonlinear_confirmation_device_draws_per_task": 3, + "sampler_sweep_device_draws_per_task": 4, + "task_clusters": 40, + "replicates": 20000, + "seed": 20260829, + "interval": "percentile 95%" + }, + "physical_methods": { + "clean": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 120 + }, + "raw": { + "mean": 0.2541666666666667, + "task_bootstrap_95ci": [ + 0.21666666666666665, + 0.29375 + ], + "task_clusters": 40, + "trials": 120 + }, + "constant": { + "mean": 0.013541666666666669, + "task_bootstrap_95ci": [ + 0.004166666666666667, + 0.02395833333333333 + ], + "task_clusters": 40, + "trials": 120 + }, + "overclamp_clean": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 120 + }, + "overclamp": { + "mean": 0.054166666666666675, + "task_bootstrap_95ci": [ + 0.021875000000000002, + 0.09062500000000001 + ], + "task_clusters": 40, + "trials": 120 + }, + "sdil": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 120 + }, + "overclamp_sdil": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 120 + } + }, + "sampler_conditions": { + "combined_mild_refresh4": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 1.0, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 0.46660538253621064 + }, + "combined_strong": { + "mean": 0.00546875, + "task_bootstrap_95ci": [ + 0.00078125, + 0.01171875 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 0.96875, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 0.36811707519239995 + }, + "common_pedestal_10": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 1.0, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 7.092845963015098e-16 + }, + "gain_mismatch_0.001": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 1.0, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 0.0021327524546310593 + }, + "gain_mismatch_0.005": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 1.0, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 0.010662411888727154 + }, + "gain_mismatch_0.01": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 1.0, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 0.021335094097404632 + }, + "gain_mismatch_0.025": { + "mean": 0.0015625, + "task_bootstrap_95ci": [ + 0.0, + 0.00390625 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 0.9875, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 0.05337234986008901 + }, + "gain_mismatch_0.05": { + "mean": 0.00625, + "task_bootstrap_95ci": [ + 0.00078125, + 0.01328125 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 0.9625, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 0.10745724630761008 + }, + "ideal_cds": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 1.0, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 0.0 + }, + "overclamp_plus_combined_mild": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 1.0, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 0.14562285807356745 + }, + "pedestal_mismatch_0.01": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 1.0, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 0.010003519663837685 + }, + "pedestal_mismatch_0.025": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 1.0, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 0.02500879915959358 + }, + "pedestal_mismatch_0.05": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 1.0, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 0.05001759831918712 + }, + "pedestal_mismatch_0.1": { + "mean": 0.00625, + "task_bootstrap_95ci": [ + 0.0015625, + 0.0125 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 0.95625, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 0.10003519663837424 + }, + "pedestal_mismatch_0.25": { + "mean": 0.04453125, + "task_bootstrap_95ci": [ + 0.0203125, + 0.07421875 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 0.825, + "solver_failure_fraction": 0.00625, + "median_applied_rate_rmse_v_per_s": 0.25008799159594736 + }, + "pedestal_mismatch_0.5": { + "mean": 0.096875, + "task_bootstrap_95ci": [ + 0.059375, + 0.13828125 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 0.70625, + "solver_failure_fraction": 0.0125, + "median_applied_rate_rmse_v_per_s": 0.5001759831918947 + }, + "refresh_every_4": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 1.0, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 0.4399296286060528 + }, + "sample_noise_1": { + "mean": 0.0, + "task_bootstrap_95ci": [ + 0.0, + 0.0 + ], + "task_clusters": 40, + "trials": 160, + "zero_error_fraction": 1.0, + "solver_failure_fraction": 0.0, + "median_applied_rate_rmse_v_per_s": 1.4156351463196133 + } + }, + "spice_primitive": { + "publication_evidence": false, + "scope": "Generic switch-capacitor acquisition and droop sanity check; this is not the complete CLLN edge circuit.", + "configuration_count": 48, + "fraction_below_1_percent_error_at_start": 0.4166666666666667, + "fraction_below_1_percent_error_at_end": 0.4166666666666667, + "reference_configuration": { + "acquisition_seconds": 1e-06, + "switch_resistance_ohm": 200.0, + "hold_capacitance_f": 1e-09, + "leakage_resistance_ohm": 1000000000.0, + "held_at_switch_open_v": 0.004966396, + "residual_at_learning_start_v": 0.001033604, + "residual_at_learning_end_v": 0.001034101, + "start_relative_error": 0.03360400000000001, + "end_relative_error": 0.03410099999999992 + } + }, + "sources": [ + "results/physical_bias/p11_nonlinear_hardware_confirmation.json", + "results/physical_bias/p9_grid_correlated_autozero.json", + "results/physical_bias/p8_spice_autozero_primitive.json" + ] +} diff --git a/results/physical_bias/p12_hardware_evidence_source.csv b/results/physical_bias/p12_hardware_evidence_source.csv new file mode 100644 index 0000000..b6f2b06 --- /dev/null +++ b/results/physical_bias/p12_hardware_evidence_source.csv @@ -0,0 +1,26 @@ +panel,series,condition,x,x_unit,mean_error,ci_low,ci_high,zero_error_fraction +a,physical_method,Clean,,,0.0,0.0,0.0, +a,physical_method,Raw,,,0.2541666666666667,0.21666666666666665,0.29375, +a,physical_method,Static calibration,,,0.013541666666666669,0.004166666666666667,0.02395833333333333, +a,physical_method,Clean overclamp,,,0.0,0.0,0.0, +a,physical_method,Overclamp,,,0.054166666666666675,0.021875000000000002,0.09062500000000001, +a,physical_method,SDIL,,,0.0,0.0,0.0, +a,physical_method,Overclamp + SDIL,,,0.0,0.0,0.0, +b,pedestal mismatch,pedestal_mismatch_0.01,0.010003519663837685,V/s,0.0,0.0,0.0,1.0 +b,pedestal mismatch,pedestal_mismatch_0.025,0.02500879915959358,V/s,0.0,0.0,0.0,1.0 +b,pedestal mismatch,pedestal_mismatch_0.05,0.05001759831918712,V/s,0.0,0.0,0.0,1.0 +b,pedestal mismatch,pedestal_mismatch_0.1,0.10003519663837424,V/s,0.00625,0.0015625,0.0125,0.95625 +b,pedestal mismatch,pedestal_mismatch_0.25,0.25008799159594736,V/s,0.04453125,0.0203125,0.07421875,0.825 +b,pedestal mismatch,pedestal_mismatch_0.5,0.5001759831918947,V/s,0.096875,0.059375,0.13828125,0.70625 +b,gain mismatch,gain_mismatch_0.001,0.0021327524546310593,V/s,0.0,0.0,0.0,1.0 +b,gain mismatch,gain_mismatch_0.005,0.010662411888727154,V/s,0.0,0.0,0.0,1.0 +b,gain mismatch,gain_mismatch_0.01,0.021335094097404632,V/s,0.0,0.0,0.0,1.0 +b,gain mismatch,gain_mismatch_0.025,0.05337234986008901,V/s,0.0015625,0.0,0.00390625,0.9875 +b,gain mismatch,gain_mismatch_0.05,0.10745724630761008,V/s,0.00625,0.00078125,0.01328125,0.9625 +c,sampling condition,Ideal CDS,,,0.0,0.0,0.0,1.0 +c,sampling condition,Common pedestal,,,0.0,0.0,0.0,1.0 +c,sampling condition,Sample noise,,,0.0,0.0,0.0,1.0 +c,sampling condition,Refresh every 4,,,0.0,0.0,0.0,1.0 +c,sampling condition,Mild combined,,,0.0,0.0,0.0,1.0 +c,sampling condition,Strong combined,,,0.00546875,0.00078125,0.01171875,0.96875 +c,sampling condition,Overclamp + mild,,,0.0,0.0,0.0,1.0 diff --git a/visual-composer/physical-hardware-evidence.md b/visual-composer/physical-hardware-evidence.md index b271127..566133c 100644 --- a/visual-composer/physical-hardware-evidence.md +++ b/visual-composer/physical-hardware-evidence.md @@ -9,16 +9,18 @@ mismatch, noise, stale refresh, and their combination at the task endpoint? - **Evidence layer:** hardware-realistic simulation; no fabricated-chip claim. - **Source data:** - `results/physical_bias/p5_full_grid_bias_crossover.json`, + `results/physical_bias/p11_nonlinear_hardware_confirmation.json`, `results/physical_bias/p9_grid_correlated_autozero.json`, and `results/physical_bias/p8_spice_autozero_primitive.json`. - **Statistics / uncertainty:** four device draws are averaged within each of - 40 tasks; tasks are resampled for percentile 95% bootstrap intervals. + 40 tasks in the sampler sweep, while three new device draws are averaged in + the nonlinear confirmation. Tasks are resampled for percentile 95% + bootstrap intervals. - **Figure prototype:** horizontal method comparison, mismatch response curves, and horizontal nonideality comparison. - **Panel map:** - - (a) nonlinear CLLN final error across clean, raw, calibration, - overclamping, SDIL, and their combination; + - (a) untouched nonlinear CLLN confirmation across clean, raw, calibration, + clean overclamping, imperfect overclamping, SDIL, and their combination; - (b) final error against measured local sampling-error RMSE for pedestal and gain mismatch sweeps; - (c) final error under common pedestal, sampling noise, stale neutral diff --git a/visual-composer/qa-ledger.md b/visual-composer/qa-ledger.md index ecb7660..a94c9ef 100644 --- a/visual-composer/qa-ledger.md +++ b/visual-composer/qa-ledger.md @@ -22,6 +22,7 @@ changing the plot grammar. | Different mismatch units were not directly comparable | Panel (b) | High | Used measured residual local-rate RMSE as the common x-axis and retained mismatch family as series | Resolved | | Zero-error conditions were visually ambiguous | Panels (a) and (c) | Low | Kept a small x-axis margin below zero so zero-valued error bars remain visible | Resolved | | Generic SPICE primitive could be read as a full-circuit simulation | Figure scope | High | Excluded it from the main plotted panels and recorded its limited scope in the analysis and visual contract | Resolved | +| Main method panel originally used development component draws | Panel (a) | High | Replaced it with the untouched 40-task by 3-new-device confirmation and retained sampler sweeps as labelled development evidence | Resolved | | Color-only distinctions could fail in print | Panel (b) | Medium | Added distinct circle and diamond markers | Resolved | Rendered inspection: no clipped labels, tick-label collision, legend overlap, -- cgit v1.2.3