Skip to content

Commit 948265e

Browse files
authored
[NO-MERGE] evidence: independently reproduce ULX3S LSC-1 bitstream (#117)
* evidence: add independent ULX3S reproduction receipt * checksums: index ULX3S reproduction receipt * evidence: preserve and bind clean ULX3S builds * fix: keep ULX3S evidence valid after squash * fix: close ULX3S manifest verification gaps * test: materialize partial clone fixtures * test: serialize partial-clone materialization * fix: harden ULX3S reproduction certification * test: materialize historical promised blobs * chore: refresh reproduction test checksum
1 parent 5610ea2 commit 948265e

31 files changed

Lines changed: 1163481 additions & 8 deletions

‎Makefile‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ workflow-check:
1616
PYTHONDONTWRITEBYTECODE=1 $(PYTHON) test/test_lsc1_scalar_status_workflow.py -v
1717
PYTHONDONTWRITEBYTECODE=1 $(PYTHON) test/test_oss_cad_suite_workflow.py -v
1818
PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=. $(PYTHON) test/test_lsc1_fpga_packet_evidence.py -v
19+
PYTHONDONTWRITEBYTECODE=1 $(PYTHON) tools/verify_lsc1_ulx3s_reproduction.py
20+
PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=. $(PYTHON) test/test_lsc1_ulx3s_reproduction.py -v
1921

2022
fabrication-bundle:
2123
PYTHONDONTWRITEBYTECODE=1 $(PYTHON) tools/verify_fabrication_bundle.py

‎SHA256SUMS‎

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ dc4fd27671dc6184c8106cac4193bada03706186206784f4cd872ca183592494 ./.github/work
1010
dab1b175b7de029e4bc85180f261d26d4c63850f0bc1f28477bb3e91a5e3d4f0 ./.gitignore
1111
cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 ./LICENSE
1212
6e3ce8bd9c03e8a089c469de50450f30806ccec946f47e383ad335efca7d6192 ./MANIFEST.md
13-
93d5e04cad47ee11b1c70bcb2402f0d5de7aeb9293d7da327fdaef41d2465e7f ./Makefile
13+
1c2f541cbf84c338848b0c8de068191bc513670e15a673a7dd1f3ef9ce5c4b98 ./Makefile
1414
80e228fef99ac1908d50b416073df9f555fa693ad4e3ee59fa88c76028fc2232 ./README.md
1515
de4c0f6adf6ff1356bf9d7599ab52aef93a00b50c5a77c727ec0ce036ff2d1a2 ./RESULTS.md
1616
baa38ad5792511470f4cc9d2344d46f0c7af8a365d5b5e178dca88634b288bff ./VALIDATION.txt
@@ -124,6 +124,31 @@ ec7683d9bc6ce928175024df6c7c33dd23bcddd4cf57d7f93596cbd513c194f2 ./evidence/lsc
124124
61d7c90b7ce7cd3a602b33ba9ae4b220d398caa3fc13ba2b09fa9197047258e5 ./evidence/lsc1-08-s9/receipt.json
125125
9e62743a486d333d23e958d5a19612a9df0ac1ebf35a876e3b07144e82b6ae46 ./evidence/lsc1-08-s9/receipt.json.sha256
126126
39f80a1f105ab1a1031fa74a1c232a1e4c8f196e2329f20947768b199c86b4b6 ./evidence/lsc1-08-s9/request_validator_equiv_miter.sv
127+
cfe3dd6c384c54aedef2221263aa7b401ccf677e874e320b567a0359aaa515cf ./evidence/lsc1-09-cleanroom/clean-build-1/SHA256SUMS
128+
0bc16e2f0a9ac2898397b294ee8598bab14d2e3e365b639ed14e3a2d3406dab8 ./evidence/lsc1-09-cleanroom/clean-build-1/SOURCE_MANIFEST.txt
129+
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./evidence/lsc1-09-cleanroom/clean-build-1/build.stderr
130+
6f7d74f3be9705e033495da9fb32f471f94f96dea3aba12186e9439840155e18 ./evidence/lsc1-09-cleanroom/clean-build-1/build.stdout
131+
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./evidence/lsc1-09-cleanroom/clean-build-1/ecppack.log
132+
07b91105557953e74ad07c1abcd79b644580301eddb470bbfa1a9c2f3a9fcf17 ./evidence/lsc1-09-cleanroom/clean-build-1/nextpnr.log
133+
47341676d69dd768b09e816679652101ec997dca651dfacdb90a3da8cad2c9ba ./evidence/lsc1-09-cleanroom/clean-build-1/timing.txt
134+
e026fa9460991757e1d8f6a077ae81a6e36607c93887d8b17979b3e0edf38f26 ./evidence/lsc1-09-cleanroom/clean-build-1/tool_versions.txt
135+
226514183384b875821426b8c4d338508d8cff08cd12cb8e39c9162db37e3b9e ./evidence/lsc1-09-cleanroom/clean-build-1/ulx3s_lsc1_packet.bit
136+
0737bbafae6704139ad9de2669a4e43f64d02644ce7cb9fc7bef336b28b7bf6b ./evidence/lsc1-09-cleanroom/clean-build-1/ulx3s_lsc1_packet.config
137+
0ad6510adeb1afbc3b20bdbc96528211a2d2e38ebcee398fdeb82acb3b1ad0ee ./evidence/lsc1-09-cleanroom/clean-build-1/ulx3s_lsc1_packet.svf
138+
bbfbb242f6bc0f3b02f1b105c1b3f7c981cab7be08deb71a995e69fe09acfdd7 ./evidence/lsc1-09-cleanroom/clean-build-1/yosys.log
139+
cfe3dd6c384c54aedef2221263aa7b401ccf677e874e320b567a0359aaa515cf ./evidence/lsc1-09-cleanroom/clean-build-2/SHA256SUMS
140+
0bc16e2f0a9ac2898397b294ee8598bab14d2e3e365b639ed14e3a2d3406dab8 ./evidence/lsc1-09-cleanroom/clean-build-2/SOURCE_MANIFEST.txt
141+
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./evidence/lsc1-09-cleanroom/clean-build-2/build.stderr
142+
667c264f5ceb3a207c1e0b8deda6020d700963c2d60f7f50385acb8c2d5db38b ./evidence/lsc1-09-cleanroom/clean-build-2/build.stdout
143+
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 ./evidence/lsc1-09-cleanroom/clean-build-2/ecppack.log
144+
3dc26a9f8dca3b968e034728fd453eb5234b148b8f039792f844d0395d4f6139 ./evidence/lsc1-09-cleanroom/clean-build-2/nextpnr.log
145+
47341676d69dd768b09e816679652101ec997dca651dfacdb90a3da8cad2c9ba ./evidence/lsc1-09-cleanroom/clean-build-2/timing.txt
146+
e026fa9460991757e1d8f6a077ae81a6e36607c93887d8b17979b3e0edf38f26 ./evidence/lsc1-09-cleanroom/clean-build-2/tool_versions.txt
147+
226514183384b875821426b8c4d338508d8cff08cd12cb8e39c9162db37e3b9e ./evidence/lsc1-09-cleanroom/clean-build-2/ulx3s_lsc1_packet.bit
148+
0737bbafae6704139ad9de2669a4e43f64d02644ce7cb9fc7bef336b28b7bf6b ./evidence/lsc1-09-cleanroom/clean-build-2/ulx3s_lsc1_packet.config
149+
0ad6510adeb1afbc3b20bdbc96528211a2d2e38ebcee398fdeb82acb3b1ad0ee ./evidence/lsc1-09-cleanroom/clean-build-2/ulx3s_lsc1_packet.svf
150+
189e5d6c46bacdc04b208684042a95ce8f4f8887daece94e58bfdf7f71148b10 ./evidence/lsc1-09-cleanroom/clean-build-2/yosys.log
151+
9c3c153138a30efdee397ddca8c50991fd30e960f626ecd242c9d61e6aa776a3 ./evidence/lsc1-09-cleanroom/reproduction-receipt.json
127152
386956c565ea8a78d5ad39ed988dab49aeeff7c7f901f7ec166c89b4d039455d ./formal/LSC1U_COMPOSITIONAL_REFINEMENT.md
128153
ff660d3e6022c71f3dad4ad9f61565f137a9130c7c48d45fed892bd572beafc2 ./formal/LSC1U_XOR_REFINEMENT.md
129154
05401a99f2d5ec82dba92a60a54c11a697174566aff9aa9a19bd8092d059615d ./formal/README.md
@@ -558,9 +583,10 @@ b78b938f396ae20d1fdccde99281430778a879808e60a35788b6fe044151329c ./test/tb_stre
558583
35973f5dec33bee955394cc0e7d4d3ca6d28b972bccdca968ec4152ecb6c99fb ./test/test_lsc1_05_v2_adversarial_regressions.py
559584
e9e334081265e38bcb8112537430c0f479725d93ef8add7aa21fc272a1ff6be0 ./test/test_lsc1_authored_rtl_contract.py
560585
d8346b848aa30f16f29eb236f502c61aa356b44d3a43cb274606e16821d4bb7d ./test/test_lsc1_blake3_status_workflow.py
561-
739d601ff16a130bbe53d758dd3bbfd9c57a2edfa87c9fd25d215cbc43f0919d ./test/test_lsc1_fpga_packet_evidence.py
586+
d6c7dd33771eb5386c9fc00e1003edce1d90b4a25625400eb8f0eccc57efc7e9 ./test/test_lsc1_fpga_packet_evidence.py
562587
2dd4a7cbfcb2cf765e3068526fd1f68c5ab738d752ff6b60c0fa4260cab87219 ./test/test_lsc1_host_authored_rtl_boundary.py
563588
e482475415e3a56c90db896fac31f7faff94a4a36f344fe6630222da88bcf07c ./test/test_lsc1_scalar_status_workflow.py
589+
16417a203b31e19b4c4d3c84a75a26c6ac271c15c1b48ceb13e016ab254296a1 ./test/test_lsc1_ulx3s_reproduction.py
564590
7220320ea36a1436e5f982e6af56444dbf21768be2b38ad3f01e90fde2820cc6 ./test/test_oss_cad_suite_workflow.py
565591
1a047bd2d21b30021b0f958b913f0a67a8740fc0732f4e1efaf3d56bc6de2ad5 ./test/test_select_exact_gds_run.py
566592
d32b66a8f2b5961f686b478f19f1b1a14bb638e2031c23cafb86575b68d5c8ea ./test/test_tt.py
@@ -601,7 +627,8 @@ d39b590b15a494a1e62ff7605ca3b8c8ffec122e0f10f6dce7f997fcecceef1b ./tools/rtl_st
601627
a2b4b3a985df1ecde148745dcc94684c77364cf9a4fa22735f2f4754aa0489db ./tools/source_provenance.py
602628
77760424b9ccaea9dfca5b3ac0412cce74db801bf583f4b7d32eb6d9b80b255d ./tools/sv_smoke_check.py
603629
6f6d2f97d96aeddd39e3bae8c4ea9193bec8a5a4237d5a17a93057e1d2c38f26 ./tools/verify_fabrication_bundle.py
604-
c8043064d4d9ef0e6f9b2d5035a1a569c88d6f56bb16abef58cccef96c1617cc ./tools/verify_lsc1_fpga_packet_evidence.py
630+
28bb061b2dee67ca8768a54a7d216762b601fc700606f52c076e894939dd12ba ./tools/verify_lsc1_fpga_packet_evidence.py
631+
11496eff27eae96804bfcc30351a92fe950f9e0d6f0e92b1877672deb4162ac9 ./tools/verify_lsc1_ulx3s_reproduction.py
605632
650919f4b3f0d2a94022d4de230f16afca36fc5c3eee45b77571cb0ec5c52994 ./tools/verify_lsc1u_release_equivalence.py
606633
4af566c345d8108c6b409f0c622fe132bdfc3b3a2b3eddee28f778e378d71254 ./tools/workload_validation.py
607634
d930b3a00795450bad3cfa1941fcc3028e03b5cf9724dab32c7f07d0678f38b4 ./workloads/blake3_stack.program.json
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
226514183384b875821426b8c4d338508d8cff08cd12cb8e39c9162db37e3b9e ulx3s_lsc1_packet.bit
2+
0737bbafae6704139ad9de2669a4e43f64d02644ce7cb9fc7bef336b28b7bf6b ulx3s_lsc1_packet.config
3+
0ad6510adeb1afbc3b20bdbc96528211a2d2e38ebcee398fdeb82acb3b1ad0ee ulx3s_lsc1_packet.svf
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
=== SOURCE PROVENANCE ===
2+
revision: adc3e2c5b86fb08e1b0225573486ae08af4ac194
3+
inputs-match-revision: yes
4+
d8e83531981677f629877cbeff643e07e169f8f6e8cf3ecd7c1b0c417a79b614 asic_core/rtl/gf128_mul_bitstream.sv
5+
4aa363edd4a6b2797191599d838f3d5f81cc97aa5fc8d88f2f0050420ccf6396 asic_core/rtl/gf2n_mul_bitstream.sv
6+
192eddc1727d8976ea48db9a532f44893d06bdec7651c65a1b1b99502b5e70c5 asic_core/rtl/lean_silicon_lsc1.sv
7+
774b239a6221619559c57f0e00aad4000b507fd7c941dc9da204c1e357d6ad90 asic_core/rtl/lean_silicon_lsc1_mincore.sv
8+
bf844b461def08fbf5b69093f95f792fd9302b26098351d192e32c76583f001b asic_core/rtl/leanvm_b_stream_alu.sv
9+
37a01a30bfa5dd52e05854ec4f9c0cb11c0959d95d610d0fb383e5fdd08af4f9 asic_core/rtl/lsc1_blake3_alias_check.sv
10+
af51a2f56073aee7ef95c183e06d0e7c0e0613a0c7193d9f883ed26b026986a8 asic_core/rtl/lsc1_blake3_lifecycle.sv
11+
d89d5cef0c529810a8a456892aaf13134e3b7ce34894f4c45da43ba81c7e066d asic_core/rtl/lsc1_cell_alias_check.sv
12+
5fafb0f5fe81ac5aaf32d0d9974d7d7d2e2b66dde05cdb707e2067ab516f5e05 asic_core/rtl/lsc1_field_encoder.sv
13+
bbf7b0d27ccfb371b45a5b9627f1eb10257056ac7c4b1ba3ca1be1bdbeadac4d asic_core/rtl/lsc1_packet_frontend.sv
14+
311d30b3bfb4603c6b722183fd289a62cc48ccad72adb792100cfd435397cff3 asic_core/rtl/lsc1_packet_rx.sv
15+
8a9a1c80b85fbeb253f955e618dc1521aff6fb432698c8bb5eef743e1eefcb2e asic_core/rtl/lsc1_packet_tx.sv
16+
0d0cee24aea05b1a2ae2691a1cc46518af79b79e6228b8bb41031394c15b8d4f asic_core/rtl/lsc1_request_validator.sv
17+
8adab68bd187db1d8fee337e6c4487304d4ad61f57d62d63ce1173bbe9ae1a2a asic_core/rtl/lsc1_response_payload_mux.sv
18+
41b68a8068f417ff8f0d33f0408405f4fae5a7b5e2fd60b482d11148e541e6c7 asic_core/rtl/lsc1_stream_adapter.sv
19+
737518912d916251885645517f2d5cabf3c786b47c71cb9f725cf3ae2c985326 tools/portable_build_support.py
20+
e401ecd06a20a3f1e54de6e47ff6e12f61064bd2b9278517fe3d0db97933bd8a tools/atomic_publish.py
21+
a2b4b3a985df1ecde148745dcc94684c77364cf9a4fa22735f2f4754aa0489db tools/source_provenance.py
22+
5a4a26710548d8bc7908cbfc33d611fad6de8f825cf5585bc94aed9ae6cfb804 fpga/ulx3s/build_packet_uart.sh
23+
31f67a30da28cd68594e3e84ee9b44af08759a57990312c20a09d7a950569c97 fpga/ulx3s/uart_bridge.sv
24+
042f81e94f1e7e45ca810b85ca90e3d8f11fd5d670718ccd0ae65db33cfccaf1 fpga/ulx3s/uart_rx.sv
25+
27def7ca1fefd66a510371aa1e7be55a6671ad195a94c1215f962028de6adcc9 fpga/ulx3s/uart_tx.sv
26+
0d0d1e9821163e7289883bca7b9e16e81fa454079e1942f198ed9688d30576f3 fpga/ulx3s/ulx3s_core_pll.sv
27+
89cbe328d101570ec2c8e874f61134d6cd293c5b39c47e53f34cef0e56d9089a fpga/ulx3s/ulx3s_packet_top.sv
28+
1b2982830abbaaf932c48f8df3d0163e450e9cab6d065998f25984b677d415f2 fpga/ulx3s/ulx3s_v318_smoke.lpf

‎evidence/lsc1-09-cleanroom/clean-build-1/build.stderr‎

Whitespace-only changes.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
=== TOOL VERSIONS (LSC-1 PACKET UART) ===
2+
Yosys 0.33 (git sha1 2584903a060)
3+
"nextpnr-ecp5" -- Next Generation Place and Route (Version nextpnr-0.11.1)
4+
Project Trellis ecppack Version 1.4-2build4
5+
date: 2026-09-06T00:58:29Z
6+
=== SOURCE PROVENANCE ===
7+
revision: adc3e2c5b86fb08e1b0225573486ae08af4ac194
8+
inputs-match-revision: yes
9+
d8e83531981677f629877cbeff643e07e169f8f6e8cf3ecd7c1b0c417a79b614 asic_core/rtl/gf128_mul_bitstream.sv
10+
4aa363edd4a6b2797191599d838f3d5f81cc97aa5fc8d88f2f0050420ccf6396 asic_core/rtl/gf2n_mul_bitstream.sv
11+
192eddc1727d8976ea48db9a532f44893d06bdec7651c65a1b1b99502b5e70c5 asic_core/rtl/lean_silicon_lsc1.sv
12+
774b239a6221619559c57f0e00aad4000b507fd7c941dc9da204c1e357d6ad90 asic_core/rtl/lean_silicon_lsc1_mincore.sv
13+
bf844b461def08fbf5b69093f95f792fd9302b26098351d192e32c76583f001b asic_core/rtl/leanvm_b_stream_alu.sv
14+
37a01a30bfa5dd52e05854ec4f9c0cb11c0959d95d610d0fb383e5fdd08af4f9 asic_core/rtl/lsc1_blake3_alias_check.sv
15+
af51a2f56073aee7ef95c183e06d0e7c0e0613a0c7193d9f883ed26b026986a8 asic_core/rtl/lsc1_blake3_lifecycle.sv
16+
d89d5cef0c529810a8a456892aaf13134e3b7ce34894f4c45da43ba81c7e066d asic_core/rtl/lsc1_cell_alias_check.sv
17+
5fafb0f5fe81ac5aaf32d0d9974d7d7d2e2b66dde05cdb707e2067ab516f5e05 asic_core/rtl/lsc1_field_encoder.sv
18+
bbf7b0d27ccfb371b45a5b9627f1eb10257056ac7c4b1ba3ca1be1bdbeadac4d asic_core/rtl/lsc1_packet_frontend.sv
19+
311d30b3bfb4603c6b722183fd289a62cc48ccad72adb792100cfd435397cff3 asic_core/rtl/lsc1_packet_rx.sv
20+
8a9a1c80b85fbeb253f955e618dc1521aff6fb432698c8bb5eef743e1eefcb2e asic_core/rtl/lsc1_packet_tx.sv
21+
0d0cee24aea05b1a2ae2691a1cc46518af79b79e6228b8bb41031394c15b8d4f asic_core/rtl/lsc1_request_validator.sv
22+
8adab68bd187db1d8fee337e6c4487304d4ad61f57d62d63ce1173bbe9ae1a2a asic_core/rtl/lsc1_response_payload_mux.sv
23+
41b68a8068f417ff8f0d33f0408405f4fae5a7b5e2fd60b482d11148e541e6c7 asic_core/rtl/lsc1_stream_adapter.sv
24+
737518912d916251885645517f2d5cabf3c786b47c71cb9f725cf3ae2c985326 tools/portable_build_support.py
25+
e401ecd06a20a3f1e54de6e47ff6e12f61064bd2b9278517fe3d0db97933bd8a tools/atomic_publish.py
26+
a2b4b3a985df1ecde148745dcc94684c77364cf9a4fa22735f2f4754aa0489db tools/source_provenance.py
27+
5a4a26710548d8bc7908cbfc33d611fad6de8f825cf5585bc94aed9ae6cfb804 fpga/ulx3s/build_packet_uart.sh
28+
31f67a30da28cd68594e3e84ee9b44af08759a57990312c20a09d7a950569c97 fpga/ulx3s/uart_bridge.sv
29+
042f81e94f1e7e45ca810b85ca90e3d8f11fd5d670718ccd0ae65db33cfccaf1 fpga/ulx3s/uart_rx.sv
30+
27def7ca1fefd66a510371aa1e7be55a6671ad195a94c1215f962028de6adcc9 fpga/ulx3s/uart_tx.sv
31+
0d0d1e9821163e7289883bca7b9e16e81fa454079e1942f198ed9688d30576f3 fpga/ulx3s/ulx3s_core_pll.sv
32+
89cbe328d101570ec2c8e874f61134d6cd293c5b39c47e53f34cef0e56d9089a fpga/ulx3s/ulx3s_packet_top.sv
33+
1b2982830abbaaf932c48f8df3d0163e450e9cab6d065998f25984b677d415f2 fpga/ulx3s/ulx3s_v318_smoke.lpf
34+
ulx3s_lsc1_packet.bit: OK
35+
ulx3s_lsc1_packet.config: OK
36+
ulx3s_lsc1_packet.svf: OK
37+
Info: Input frequency of PLL 'core_pll.pll_i' is constrained to 25.0 MHz
38+
Info: Derived frequency constraint of 10.0 MHz for net core_clk
39+
Info: Max frequency for clock '$glbnet$core_clk': 13.43 MHz (PASS at 10.00 MHz)
40+
Info: Slack histogram:
41+
Info: Max frequency for clock '$glbnet$core_clk': 15.32 MHz (PASS at 10.00 MHz)
42+
Info: Slack histogram:
43+
bitstream: /tmp/lean-silicon-lsc1-repair.qocLpF/run-1/results/ulx3s-lsc1-packet-20260726/ulx3s_lsc1_packet.bit
44+
sha256: 226514183384b875821426b8c4d338508d8cff08cd12cb8e39c9162db37e3b9e

‎evidence/lsc1-09-cleanroom/clean-build-1/ecppack.log‎

Whitespace-only changes.

0 commit comments

Comments
 (0)