Add a simple verilator simulator for module_wrap128_fromMem
This commit is contained in:
13
CMakeLists.txt
Normal file
13
CMakeLists.txt
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
project(cap-lib-verilated)
|
||||||
|
set(CMAKE_CXX_STANDARD 14)
|
||||||
|
find_package(verilator HINTS $ENV{VERILATOR_ROOT})
|
||||||
|
if (NOT verilator_FOUND)
|
||||||
|
message(FATAL_ERROR "Verilator was not found. Either install it, or set the VERILATOR_ROOT environment variable")
|
||||||
|
endif()
|
||||||
|
add_executable(cap128_fromMem sim_main.cpp)
|
||||||
|
if (APPLE)
|
||||||
|
# verilate() complains about --compiler appleclang otherwise
|
||||||
|
set(CMAKE_CXX_COMPILER_ID clang FORCE)
|
||||||
|
endif()
|
||||||
|
verilate(cap128_fromMem SOURCES module_wrap128_fromMem.v VERILATOR_ARGS --compiler clang)
|
||||||
27
sim_main.cpp
Normal file
27
sim_main.cpp
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#include "Vmodule_wrap128_fromMem.h"
|
||||||
|
#include "verilated.h"
|
||||||
|
#include "verilated_vpi.h" // Required to get definitions
|
||||||
|
|
||||||
|
vluint64_t main_time = 0; // See comments in first example
|
||||||
|
double sc_time_stamp() { return main_time; }
|
||||||
|
|
||||||
|
template <class T, size_t N> constexpr size_t array_size(T (&)[N]) { return N; }
|
||||||
|
|
||||||
|
int main(int argc, char** argv, char** env) {
|
||||||
|
Verilated::commandArgs(argc, argv);
|
||||||
|
Vmodule_wrap128_fromMem* top = new Vmodule_wrap128_fromMem;
|
||||||
|
Verilated::internalsDump(); // See scopes to help debug
|
||||||
|
for (int i = 0; i < array_size(top->wrap128_fromMem_mem_cap); i++) {
|
||||||
|
top->wrap128_fromMem_mem_cap[i] = 0;
|
||||||
|
printf("Input[%d]=%d\n", i, top->wrap128_fromMem_mem_cap[i]);
|
||||||
|
}
|
||||||
|
printf("Eval:\n");
|
||||||
|
// while (!Verilated::gotFinish()) {
|
||||||
|
top->eval();
|
||||||
|
//}
|
||||||
|
for (int i = 0; i < array_size(top->wrap128_fromMem); i++) {
|
||||||
|
printf("Output[%d]=%d\n", i, top->wrap128_fromMem[i]);
|
||||||
|
}
|
||||||
|
delete top;
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user