Signaltap - Finding Nodes - FSM state register

I am trying to find the state register which is called state in my code, but of course it can not be found with the node finder. Does anyone have any suggestions on how to find the signals using the RTL viewer, equations,

*.map.rpt, or *.fit.rpt. My code is written in VHDL and I am using Quartus II 4.1. I am doing synthisis in Quartus II.

Thanks in Advance, Doug

Reply to
Douglas Sykora
Loading thread data ...

Douglas Sykora a écrit :

Hello Look at the compilation report, in the "analysis & synthesis/state machines" section. There you'll find how your states are encoded and the associated FF names

--
  ____  _  __  ___
|  _  \_)/ _|/ _ \   Adresse de retour invalide: retirez le -
 Click to see the full signature
Reply to
Nicolas Matringe

the

To add to Nicolas's reply here are the details.

The Analysis & Synthesis report has a section on state machines that lists the encoding chosen for each state machine and the names of the FFs that implement the state machine. In Quartus II 4.1 the state machine bits will be named based on the name of the state register in the VHDL design, with a suffix ~ for each bit. For example, you might have a VHDL state machine coded using an enumerated type such as this:

TYPE STATE_TYPE IS (s0, s1, s2); SIGNAL state : STATE_TYPE;

The Analysis & Synthesis report from your design (the .map.rpt file) will look something like this:

+-------------------------------------------+ ; State Machine - state ; +----------+----------+----------+----------+ ; Name ; state~18 ; state~17 ; state~16 ; +----------+----------+----------+----------+ ; state.s0 ; 0 ; 0 ; 0 ; ; state.s1 ; 0 ; 1 ; 1 ; ; state.s2 ; 1 ; 0 ; 1 ; +----------+----------+----------+----------+

This tells you that the state machine has been implemented with three FFs, state~18, state~17 and state~16, and the state machine is in state s0 when (state~18, state~17, state~16) has the value (0,0,0). Another way of explaining this is that the state machine is implemented using a one-hot encoding with the reset bit inverted: the state machine is in state s0 when state~16 is 0; in state s1 when state~17 is high, and in state s2 when state~18 is high.

The suffix numbers (~18, ~17, ~16) can change when other logic in your design changes, which can cause SignalTap to lose the connection to the states. In Quartus II 4.2 the state names are improved for one-hot state machines: the state name will be used as a suffix. So Quartus II

4.2 would name the same FFs state.s2, state.s1, state.s0, with the state machine being in state s0 when FF state.s0 is low. Hope this helps,

Subroto Datta Altera Corp.

Reply to
Subroto Datta

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.