Merge pull request #2263 from whitequark/cxxrtl-capi-eval-commit

cxxrtl: expose eval() and commit() via the C API
This commit is contained in:
whitequark 2020-07-13 02:44:36 +00:00 committed by GitHub
commit 38b814b525
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 0 deletions

View File

@ -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();
}

View File

@ -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.