Ох навозился в своё время с этим... Перенимайте опыт

(пока не перешли на нормальные симуляторы)
Способ "в лоб" - найти нужный сигнал в отсинтезированном проекте и добавить в waveforms. Искать либо просто по иерархии (точно не помню уже - где-то там есть раскрывающееся дерево) , либо через RTL Viewer / TechMap Viewer. Начиная с какой-то свежей версии они поддержвали добавление в waveforms по контекстному меню и даже просто drag-n-drop в окно.
Теперь, самое интересное: часто "результат на "промежуточных" шинах" просмотреть таким образом не удаётся, потому что они оказываются искажены / выброшены в ходе оптимизаций. В этом случае обычно использовался специальный модуль, состоящий из регистра параметризованной разрядности, со входами (тактовый и шина данных), без выхода, и записанным с директивой
(* noprune *) (не выбрасывать при синтезе даже при нулевом fan-out); после чего в waveform цепляется содержимое этого регистра.
- Да, значение при этом отстаёт на такт (либо на пол-такта, если работать по спаду)
- Да, это изменяет схему (может сбить времянку)
но, похоже, это единственный способ посмотреть промежуточные сигналы, обойдя оптимизации.
Код
//-?---- Модуль-щуп - просмотр значений сигналов без протяжки через иерархию -
module d_watch7 #(parameter W = 0) (//Debug Watch for Quartus II 7.0 and later.
//Наблюдение значения входа, задержанного на пол-такта.
input [W-1:0] d, //Целевой информационный вход.
input clk);
(* noprune *) reg [W-1:0] r;
always @(negedge clk)
r <= d;
endmodule