From 1d5ee12431b4f0de057ad2c58dda8754d24d6c79 Mon Sep 17 00:00:00 2001
From: Donald Sebastian Leung
Date: Wed, 11 Nov 2020 13:59:40 +0800
Subject: [PATCH] Measure completion time for each unbounded proof
---
README.md | 21 ++-------------------
rtio/test/sed/output_network.py | 7 +++++++
2 files changed, 9 insertions(+), 19 deletions(-)
diff --git a/README.md b/README.md
index 1050166..6c26eea 100644
--- a/README.md
+++ b/README.md
@@ -11,30 +11,13 @@ Formally verified implementation of the ARTIQ RTIO core in nMigen
## Running the verification tasks
-Currently, only the sorting network contains assertions to be verified. To run the verification tasks for the sorting network, change directory to the root of this project, set up the [Nix](https://nixos.org) environment by running `nix-shell` and do
+To run the verification tasks for the sorting network (unbounded proofs with variable numbers of lanes), change directory to the root of this project, set up the [Nix](https://nixos.org) environment by running `nix-shell` and do
```bash
$ python -m rtio.test.sed.output_network
```
-## Progress
-
-- Devise a suitable migration strategy for `artiq.gateware.rtio` from Migen to nMigen
-- [x] Implement the core in nMigen
-- - [x] `rtio.cri` (`Interface` and `CRIDecoder` only)
-- - [x] `rtio.rtlink`
-- - [x] `rtio.sed.layouts`
-- - [x] `rtio.sed.output_network`
-- - [x] `rtio.sed.output_driver`
-- [ ] Add suitable assertions for verification
-- - [ ] `rtio.cri` (`Interface` and `CRIDecoder` only)
-- - [x] `rtio.sed.output_network` - Sorting network (high priority)
-- - [ ] `rtio.sed.output_driver`
-- [x] Restructure to code to follow nMigen convention and re-validate existing assertions (if any)
-- - [x] `rtio.cri` (`Interface` and `CRIDecoder` only)
-- - [x] `rtio.sed.output_network`
-- - [x] `rtio.sed.output_driver`
-- [ ] Simulate RTIO command for switching TTL
+This should complete in under an hour. The time to complete each verification task (2 lanes, 4 lanes, 8 lanes) is printed to standard output.
## License
diff --git a/rtio/test/sed/output_network.py b/rtio/test/sed/output_network.py
index 9e61aa2..514830a 100644
--- a/rtio/test/sed/output_network.py
+++ b/rtio/test/sed/output_network.py
@@ -2,6 +2,7 @@ from nmigen import *
from nmigen.asserts import *
from nmigen.test.utils import *
from ...sed.output_network import *
+from datetime import datetime
"""
Verification tasks for OutputNetwork
@@ -107,14 +108,20 @@ class OutputNetworkSpec(Elaboratable):
class OutputNetworkTestCase(FHDLTestCase):
def verify(self):
+ startTime = datetime.now()
self.assertFormal(
OutputNetworkSpec(2, 2, [("data", 32), ("channel", 3)]),
mode="prove", depth=latency(2))
+ print("Verification of sorting network with 2 lanes completed in %f ms" % ((datetime.now() - startTime).total_seconds() * 1000))
+ startTime = datetime.now()
self.assertFormal(
OutputNetworkSpec(4, 2, [("data", 32), ("channel", 3)]),
mode="prove", depth=latency(4))
+ print("Verification of sorting network with 4 lanes completed in %f ms" % ((datetime.now() - startTime).total_seconds() * 1000))
+ startTime = datetime.now()
self.assertFormal(
OutputNetworkSpec(8, 2, [("data", 32), ("channel", 3)]),
mode="prove", depth=latency(8))
+ print("Verification of sorting network with 8 lanes completed in %f ms" % ((datetime.now() - startTime).total_seconds() * 1000))
OutputNetworkTestCase().verify()