diff options
Diffstat (limited to 'VexRiscv/src/test/cpp/murax')
-rw-r--r-- | VexRiscv/src/test/cpp/murax/main.cpp | 64 | ||||
-rw-r--r-- | VexRiscv/src/test/cpp/murax/makefile | 42 | ||||
-rw-r--r-- | VexRiscv/src/test/cpp/murax/murax.gtkw | 51 |
3 files changed, 157 insertions, 0 deletions
diff --git a/VexRiscv/src/test/cpp/murax/main.cpp b/VexRiscv/src/test/cpp/murax/main.cpp new file mode 100644 index 0000000..735875f --- /dev/null +++ b/VexRiscv/src/test/cpp/murax/main.cpp @@ -0,0 +1,64 @@ +#include "VMurax.h" +#include "VMurax_Murax.h" +#include "verilated.h" +#include "verilated_vcd_c.h" + +#include "../common/framework.h" +#include "../common/jtag.h" +#include "../common/uart.h" + +class MuraxWorkspace : public Workspace<VMurax>{ +public: + MuraxWorkspace() : Workspace("Murax"){ + ClockDomain *mainClk = new ClockDomain(&top->io_mainClk,NULL,83333,300000); + AsyncReset *asyncReset = new AsyncReset(&top->io_asyncReset,50000); + UartRx *uartRx = new UartRx(&top->io_uart_txd,1.0e12/115200); + UartTx *uartTx = new UartTx(&top->io_uart_rxd,1.0e12/115200); + + timeProcesses.push_back(mainClk); + timeProcesses.push_back(asyncReset); + timeProcesses.push_back(uartRx); + timeProcesses.push_back(uartTx); + + Jtag *jtag = new Jtag(&top->io_jtag_tms,&top->io_jtag_tdi,&top->io_jtag_tdo,&top->io_jtag_tck,83333*4); + timeProcesses.push_back(jtag); + + #ifdef TRACE + //speedFactor = 10e-3; + //cout << "Simulation caped to " << speedFactor << " of real time"<< endl; + #endif + } +}; + + +struct timespec timer_start(){ + struct timespec start_time; + clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start_time); + return start_time; +} + +long timer_end(struct timespec start_time){ + struct timespec end_time; + clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &end_time); + uint64_t diffInNanos = end_time.tv_sec*1e9 + end_time.tv_nsec - start_time.tv_sec*1e9 - start_time.tv_nsec; + return diffInNanos; +} + + + +int main(int argc, char **argv, char **env) { + + Verilated::randReset(2); + Verilated::commandArgs(argc, argv); + + printf("BOOT\n"); + timespec startedAt = timer_start(); + + MuraxWorkspace().run(1e9); + + uint64_t duration = timer_end(startedAt); + cout << endl << "****************************************************************" << endl; + + + exit(0); +} diff --git a/VexRiscv/src/test/cpp/murax/makefile b/VexRiscv/src/test/cpp/murax/makefile new file mode 100644 index 0000000..7c946ae --- /dev/null +++ b/VexRiscv/src/test/cpp/murax/makefile @@ -0,0 +1,42 @@ +DEBUG?=no +TRACE?=no +PRINT_PERF?=no +TRACE_START=0 +ADDCFLAGS += -CFLAGS -pthread -LDFLAGS -pthread + + +ifeq ($(TRACE),yes) + VERILATOR_ARGS += --trace + ADDCFLAGS += -CFLAGS -DTRACE --trace-fst +endif +ifeq ($(DEBUG),yes) + ADDCFLAGS += -CFLAGS "-g3 -O0" +endif +ifneq ($(DEBUG),yes) + ADDCFLAGS += -CFLAGS "-O3" +endif +ifeq ($(PRINT_PERF),yes) + ADDCFLAGS += -CFLAGS -DPRINT_PERF +endif + +ADDCFLAGS += -CFLAGS -DTRACE_START=${TRACE_START} + + + +all: clean compile + +run: compile + ./obj_dir/VMurax + +verilate: ../../../../Murax.v + rm -f Murax.v*.bin + cp ../../../../Murax.v*.bin . | true + verilator -I../../../.. -cc ../../../../Murax.v -CFLAGS -std=c++11 ${ADDCFLAGS} --gdbbt ${VERILATOR_ARGS} -Wno-WIDTH -Wno-UNOPTFLAT --x-assign unique --exe main.cpp + +compile: verilate + make -j -C obj_dir/ -f VMurax.mk VMurax + +clean: + rm -rf obj_dir + rm -f Murax.v*.bin + diff --git a/VexRiscv/src/test/cpp/murax/murax.gtkw b/VexRiscv/src/test/cpp/murax/murax.gtkw new file mode 100644 index 0000000..5fa869b --- /dev/null +++ b/VexRiscv/src/test/cpp/murax/murax.gtkw @@ -0,0 +1,51 @@ +[*] +[*] GTKWave Analyzer v3.3.58 (w)1999-2014 BSI +[*] Mon Jul 31 17:03:11 2017 +[*] +[dumpfile] "/home/spinalvm/Spinal/VexRiscv/src/test/cpp/murax/Murax.vcd" +[dumpfile_mtime] "Mon Jul 31 17:03:01 2017" +[dumpfile_size] 1539276802 +[savefile] "/home/spinalvm/Spinal/VexRiscv/src/test/cpp/murax/murax.gtkw" +[timestart] 300964770000 +[size] 1776 953 +[pos] -1 -353 +*-23.000000 300989600000 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 +[treeopen] TOP. +[treeopen] TOP.Murax. +[treeopen] TOP.Murax.system_uartCtrl. +[treeopen] TOP.Murax.system_uartCtrl.uartCtrl_1. +[sst_width] 454 +[signals_width] 327 +[sst_expanded] 1 +[sst_vpaned_height] 279 +@28 +TOP.Murax.system_uartCtrl.io_uart_rxd +TOP.Murax.system_uartCtrl.io_uart_txd +TOP.Murax.system_uartCtrl.io_interrupt +TOP.Murax.system_cpu.CsrPlugin_mstatus_MIE +@22 +TOP.Murax.system_uartCtrl.streamFifo_2.io_push_payload[7:0] +@28 +TOP.Murax.system_uartCtrl.streamFifo_2.io_push_valid +TOP.Murax.system_uartCtrl.streamFifo_2.io_pop_valid +TOP.Murax.system_uartCtrl.streamFifo_2.io_pop_ready +@22 +TOP.Murax.system_uartCtrl.streamFifo_2.io_pop_payload[7:0] +TOP.Murax.system_uartCtrl.uartCtrl_1.rx.io_read_payload[7:0] +@28 +TOP.Murax.system_uartCtrl.uartCtrl_1.rx.io_read_valid +TOP.Murax.system_uartCtrl.uartCtrl_1.rx.stateMachine_state[2:0] +@22 +TOP.Murax.system_uartCtrl.uartCtrl_1.rx.stateMachine_shifter[7:0] +@28 +TOP.Murax.system_uartCtrl.uartCtrl_1.rx.bitTimer_tick +TOP.Murax.system_uartCtrl.uartCtrl_1.rx.bitTimer_counter[2:0] +@29 +TOP.Murax.system_uartCtrl.uartCtrl_1.rx.io_rxd +@28 +TOP.Murax.system_uartCtrl.uartCtrl_1.rx.sampler_value +TOP.Murax.system_uartCtrl.uartCtrl_1.rx.sampler_tick +TOP.Murax.system_uartCtrl.uartCtrl_1.rx.sampler_samples_1 +TOP.Murax.system_uartCtrl.uartCtrl_1.rx.sampler_samples_2 +[pattern_trace] 1 +[pattern_trace] 0 |