Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
17258 Discussions

VHDL sensitivity list - synthesis

Altera_Forum
Honored Contributor II
3,744 Views

Hello, 

 

Is it fairly confirmed that Quartus ignores the sensitivity list of a process for synthesis, like many other tools?  

 

Sources online and in books are ambiguous on this subject, but it appears that tools usually just check the sensitivity list for missing signals and issue warnings, but otherwise the sensitivity list affects synthesis in no way.  

 

VHDL 2008 even introduced the all keyword inside sensitivity lists to "brush away" this issue altogether, it seems. 

 

Thanks in advance
0 Kudos
6 Replies
Altera_Forum
Honored Contributor II
2,463 Views

Quartus ignores sensitivity lists for synthesis. The logic produced is defined by the code signals used within the process. 

 

From memory I cannot remember whether Quartus even produces a warning.  

 

Modelsim on the other hand does make use of sensitivity lists so missing signals in the list can produce different behaviour between simulation and synthesis.
0 Kudos
Altera_Forum
Honored Contributor II
2,463 Views

Sensitivity lists are there purely for simulation - they let the simulator know when a process needs to be executed. This saves alot of processor time because it doesnt need to re-evaluate every process whenever a signal changs. 

 

Synthesis however, just creates logic from the code you have written following template guidelines, so sensitivity is ignored completely. Quartus WILL give a warning when a sensitity is incomplete. the code describes actualy hardware, so if you write something like this: 

 

process(a) 

begin 

b <= c; 

end process; 

 

in VHDL this actually means b is only updated when a changes, but that isnt really possible in hardware.
0 Kudos
Altera_Forum
Honored Contributor II
2,463 Views

Yes, for the same reason, having an incomplete sensitivity list might cause behavior to differ from what you see in simulation. Because of this, it is always a good idea to specify a properly defined sensitivity list. A combinational logic process should be made sensitive to every signal you have on the right side of an assignment inside the process. By making this change, you will avoid simulation-synthesis mismatches.

0 Kudos
Altera_Forum
Honored Contributor II
2,463 Views

Also it's a big assumption that all synthesis tools will always ignore the sensitivity list. Some may ignore it; some may instantiate a latch.

0 Kudos
Altera_Forum
Honored Contributor II
2,463 Views

Can you give an example, where you either experienced or suspect different behaviour of synthesized code depending on sensitivity lists?

0 Kudos
Altera_Forum
Honored Contributor II
2,463 Views

Hi batfink, 

 

I always thought so, but can you provide a counter-example? 

 

Thanks,
0 Kudos
Reply