aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwhitequark <whitequark@whitequark.org>2020-07-13 02:44:36 +0000
committerGitHub <noreply@github.com>2020-07-13 02:44:36 +0000
commit38b814b525d9d3abbfea060a8156b64b15aa7cf3 (patch)
tree1a42771df6e31dd31ec94884097568f8a9024e24
parent347dd01c2f7dff6e8222c5f9d360f84a17c937b5 (diff)
parent5349a922e4943313b322889e4bbc05b05ef48610 (diff)
downloadyosys-38b814b525d9d3abbfea060a8156b64b15aa7cf3.tar.gz
yosys-38b814b525d9d3abbfea060a8156b64b15aa7cf3.tar.bz2
yosys-38b814b525d9d3abbfea060a8156b64b15aa7cf3.zip
Merge pull request #2263 from whitequark/cxxrtl-capi-eval-commit
cxxrtl: expose eval() and commit() via the C API
-rw-r--r--backends/cxxrtl/cxxrtl_capi.cc8
-rw-r--r--backends/cxxrtl/cxxrtl_capi.h12
2 files changed, 20 insertions, 0 deletions
diff --git a/backends/cxxrtl/cxxrtl_capi.cc b/backends/cxxrtl/cxxrtl_capi.cc
index e0566e152..b77e4c491 100644
--- a/backends/cxxrtl/cxxrtl_capi.cc
+++ b/backends/cxxrtl/cxxrtl_capi.cc
@@ -43,6 +43,14 @@ void cxxrtl_destroy(cxxrtl_handle handle) {
delete handle;
}
+int cxxrtl_eval(cxxrtl_handle handle) {
+ return handle->module->eval();
+}
+
+int cxxrtl_commit(cxxrtl_handle handle) {
+ return handle->module->commit();
+}
+
size_t cxxrtl_step(cxxrtl_handle handle) {
return handle->module->step();
}
diff --git a/backends/cxxrtl/cxxrtl_capi.h b/backends/cxxrtl/cxxrtl_capi.h
index 599284898..74257f0da 100644
--- a/backends/cxxrtl/cxxrtl_capi.h
+++ b/backends/cxxrtl/cxxrtl_capi.h
@@ -55,6 +55,18 @@ cxxrtl_handle cxxrtl_create(cxxrtl_toplevel design);
// Release all resources used by a design and its handle.
void cxxrtl_destroy(cxxrtl_handle handle);
+// Evaluate the design, propagating changes on inputs to the `next` value of internal state and
+// output wires.
+//
+// Returns 1 if the design is known to immediately converge, 0 otherwise.
+int cxxrtl_eval(cxxrtl_handle handle);
+
+// Commit the design, replacing the `curr` value of internal state and output wires with the `next`
+// value.
+//
+// Return 1 if any of the `curr` values, 0 otherwise.
+int cxxrtl_commit(cxxrtl_handle handle);
+
// Simulate the design to a fixed point.
//
// Returns the number of delta cycles.