This question is very basic, but I just started learning VHDL, and I can't figure out the error.So, I'm using Quartus Prime Lite, and getting errorerror (10500): vhdl syntax error at package_42.vhd(30) near text "when"; expecting ";" when compiling the following piece of code.Any ideas what could be wrong? Thanks!
library ieee; use ieee.std_logic_1164.all; package Package_42 is subtype StepType is std_logic_vector(3 downto 0); function Problem_42(a : in std_logic; b :in std_logic; j : in StepType; k : in StepType) return StepType; end; package body Package_42 is function Problem_42(a : in std_logic; b : in std_logic; j : in StepType; k : in StepType) return StepType is variable Step : StepType := "----"; begin Step :="0100" when a = '1' and b = '0' else -- ERROR is HERE!!! j when a = '1'else k when b = '1' else "----"; return Step; end; end package body;
"when" can only be used in procedural code in VHDL 2008. Otherwise it is limited to architecture bodies outside of processes only.Dont cares are perfectly synthesisable, it tells the compiler you really dont care, and allows it to chose what value to take.