Closed odenj closed 1 year ago
Same issue for me.
Sigh.
This is what I get for using unsupported Verilator features to get access to signals and registers within my design. At present, it works just fine here using Verilator 5.005 devel rev v5.002-182-g1f58f48c0
. My guess is that some Verilator update changed how Verilator is naming its registers (again--this has now happened several times). I'm also a bit at a loss as for what the "right" answer is. If I "fix" this, I'll break it for users of older versions of Verilator.
Perhaps the "right" answer would be to make these various values full and proper outputs of the simulated design, so I don't have to depend upon undocumented features. This particular use case, however, is the only one that would need it, so these extra outputs would need to be enabled for this simulation only and then removed from all other projects that use the CPU. It's doable, but ... not pretty.
The problem is ... I love this demo, and don't really want to get rid of it. I mean, how often do you get to see and visualize the internals of how a CPU works?
Suggestions?
Dan
I just downloaded, built, and installed the current version of Verilator from git. It builds the simulations without problems. Let me assume you have something other than the most recent version from git. Here's how to go about debugging the issue:
rtl/obj_dir/Vzipsystem___024root.h
and rtl/obj_dir/Vzipbones___024root.h
files. These will tell you what the "correct" naming convention is for the symbols that Verilator can't find. Hopefully that will help. I can discuss more/further as necessary. I still need a "right" answer to the issue, though, as this is really little more than a bandaid to an underlying problem.
Dan
Thank you! Now it's compiling, and working. I've uninstalled the ubuntu stable verilator package (apt remove verilator), and follow the "Git Quick Install" from this guide here to install it (https://verilator.org/guide/latest/install.html) Next step, as you suggested in the linked post above, will be to run the CPU test_program. Hope to be able to use your CPU in one of my project.
I take the opportunity to ask you if it could works like so:
Regards.
Beware, this is a CPU not an SOC.
My point is ... there's a lot more to a system than just the CPU. This repository contains the CPU alone. Other repositories I have configure the CPU for particular pieces of hardware--such as Digilent's Arty, their CMod S6, their Nexys Video, Arrow's Max1000, the Black ICE board, TinyFPGA, XulaLX25, or even the iCO board. Don't forget, there's also the necessity of debugging any design you build. While the CPU has (optional) hooks for doing that, it requires external access to the bus.
Hope that helps,
Dan
Again... thanks. You clarify many of my doubts and save me lot of time. I mainly work on Xilinx, although I test small modules on Lattice or GoWIN cause their synth is much more faster to me. Because of the main works is on Xilinx I think I'll give a chance to one of the two ARM of the Zynq 7000 SoC. I've previously tested it, but then It comes to my mind that staying on the PL side of the Zynq was better. Or maybe a MicroBlaze which I've never try. You have to excuse my dumbness but It's just my first year of FPGA / HDL programming. I can now interface with ethernet (RAW and UDP), SPI, I2C, I2S and a few others, I've learn a few things on AXI stream, Wishbone, .. I've done some small works on FPGA and I appreciate the potential, but still I don't know so much.
This appears to be a closed issue.
I'm following this tutorial to build ZipCPU. After installing Verilator from source and the dependencies to build this project, I'm getting an error while building zipcpu_tb.cpp.
The last couple lines that show the error message are attached. error.txt