Replies: 2 comments 23 replies
-
Hey there!
The core has been synthesized for Xilinx, Intel and Lattice FPGAs (plus some additional FPGAs from smaller vendors) and has been simulated using commercial (e.g. Modelsim) and open source (e.g. GHDL) simulators. You can find some pre-configured (community-based) setups for different platforms and toolchains in neorv32-setups.
The software framework including the "drivers" / hardware abstraction layer is entirely based on C and documented using doxygen: https://stnolting.github.io/neorv32/sw/files.html For dumping data: there is a "simulation" mode provided by the processor's UART that allows to output application data right to the simulator's console (-> "Simulation mode" in https://stnolting.github.io/neorv32/#_primary_universal_asynchronous_receiver_and_transmitter_uart0). This also allows to dump plain application data by writing 32-bit values to a text file. For example, this feature is used by the RISCOF-based ISA compatibility check to output the test final results (-> neorv32-riscof). The VHDL rtl code (-> https://github.com/stnolting/neorv32/blob/main/rtl/core/neorv32_uart.vhd#L597) could be replicated inside the CPU to output "architectural state" data like pipeline buffers, ALU results and other intermediate signals.
The RISC-V spec. does not require n implementation to actually trap when - for example - an illegal/malformed instruction word gets executed. However, the NEORV32 was designed to ensure that all illegal instruction are identified as such and that all bus/memory accesses are checked for timeouts and proper acknowledges.
The project's user guide is the right place to get started. We have simplified system wrappers available (rtl/processor_templates) for creating small setups just to try things out. There is also a section about running a "quick" simulation: https://stnolting.github.io/neorv32/ug/#_hello_world |
Beta Was this translation helpful? Give feedback.
-
Hi DS-576,
The assembly instructions can be seen in different ways. You can have the
compiler generate the assembly LIST file, for example by adding
***@***.***"*
to your makefile, or to your command prompt when invoking GCC.
Another option is to disassemble the executable (.elf) file by using
objdump. You can use the *riscv32-elf-unknown-objdump -d* command to do
this.
Best regards,
Gideon
Message ID: ***@***.***
com>
… |
Beta Was this translation helpful? Give feedback.
-
Hi there
I am trying to select a RISC-V softcore CPU for our research project involving fault injection on embedded processors, and considering using this Neorv32 core. It seems to have great documentation and appears easy to use, but I have not tried it yet. I have a few questions if you have a chance to help me out.
Can this core be simulated/programmed for Xilinx and Intel devices using Vivado and Quartus ModelSim respectively? Has it been proved on both hardware/software platforms?
We require to be able to write C code for the core, run simulations to gather core data and write it to a file (i.e. reg values, PC values, ALU data). We then want to be able to inject faults into the HDL code and produce the same text file so we can compare how the core behaves under faulty conditions. Does this sound like something the Neorv32 is able to do easily?
It mentions that the core has been designed with safety in mind. Are these fault handlers that are in the core design typical of all RISC-V cores, or just this design? I.e. will this affect the data we gather from faults injected into just this core that won't be typical of RISC-V cores out there?
What is the simplest way for a beginner to set up a simulation of a basic neorv32 core doing something simple like the blink led?
Thanks in advance for any help.
Beta Was this translation helpful? Give feedback.
All reactions