1
\$\begingroup\$

This question is rather specific which makes it rather hard to answer.

I'm using Quartus Prime software from Altera to do an FPGA design in VHDL. Quartus exports to Modelsim for the simulation. I'm writing individual VHDL modules then linking them together in the Quartus Prime schematic editor. I realize the "pro" way is to structures/hierarchies in VHDL directly so it's more portable, but I'd rather shoot myself in the face than have to do that.

I can run testbenches for individual modules or for the hierarchy as a whole.

The Question: When running a testbench/simulation for the hierarchy as a whole, I'd like to be able to view the signal connections between modules and even more ideal the internal signals of each module to debug. As of now I'm having to manually add extra output ports for debugging, which is annoying and requires me to modify everything.

Here is a picture of the schematic: Schematic in Quartus Prime

As you can see, the two signals running between the output of the RX_UART VHDL module and the RX_Data_Controller VHDL module have two output pins declared "DB_DATA_PARALLEL" and "DB_DATA_VALID". Optimally I'd like to not have to add these so I can find problems happening between modules.

When a gate-level simulation is run to simulate their interaction, it looks as follows in Modelsim: Modelsim

So is anyone aware of how to accomplish what I'm looking to do? I think it will be very hard to scale up to simulating larger designs if I can't see between or inside modules. Both modules are state machines, so it'd be nice to be able to view which state each module is in during the Simulation.

Thank you very much in advance and I appreciate your time.

\$\endgroup\$

2 Answers 2

4
\$\begingroup\$

enter image description here

From Modelsim, you should easily be able to click on the module that you want (Circle 1) and in Objects window (Circle 2) you will be able to see the signals within that module and you can then easily drag the signals you want to the Wave window. You shouldn't have to create IO ports just to view the signals on Modelsim.

\$\endgroup\$
1
  • \$\begingroup\$ In addition, next step to @bFig8's answer, you can copy add wave/* cmd's generated in transcript to say easy_wave.do file and run it after the quartus invokes the modelsim. This one time activity makes life easy than every time loading the signals of interest. Bcoz modifying source files, compiling & simulating only loads UUT signals mentioned in tb to wave window of modelsim. \$\endgroup\$ Commented Dec 28, 2017 at 18:52
1
\$\begingroup\$

I would have just commented on @bFig8's answer (But I haven't got enough credits).

So, since we dragged the variables as shown in above answer, they are shown as -No Data-. To get these new wave information, we'll restart the simulation! This can be done from the ModelSim interface itself.

Read this, to find out how to restart the simulation: https://www.intel.com/content/www/us/en/programmable/documentation/aym1499789502823.html#xat1498170642540

P.S. : I did so much idiotic stuff, trying to bring the inner variables as waves in output. Stuff such as keeping a new (useless, other than logging) outpin for the entity.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.