A
alb
Hi everyone,
I generally use the vcom to analyze and build libraries and units for
presynth simulation and only after I'm happy with it I proceed with
synthesis. Yesterday, though, I tried to compile the following code [1]
with synplify_pro without success (while vcom happily went through):
Synplify Pro AE (integrated in LiberoSoC) barf something like this:
@E: CD242
:"/home/pol/polar_svn/firmware/obox/frontend_alb/firmware/hdl/tfsm.vhd":116:21:116:24|Expecting
;
@E: CD204
:"/home/pol/polar_svn/firmware/obox/frontend_alb/firmware/hdl/tfsm.vhd":116:21:116:24|Expecting
sequential statement
Being the procedure defined in a process I may understand why it
'expects a sequential statement', but is this something related to
synthesis only?
Why vcom does not complain?
It looks like I cannot have a concurrent signal assignment in a process
(which makes sense since signal assignment is 'scheduled').
Moreover I'm quite confused when it comes to the various steps involved
in synthesis. It seems the tool is failing during 'parsing' which is
something I expected to be part of the 'analysis', therefore equivalent
to the 'vcom' result.
Anyway I changed the conditional signal assignment statement with a
sequential one (if/then/else) and everything works fine. Still I'd
appreciate if someone can enlighten me on this topic.
Al
[1] some of you may have recognized Mike Treseler's template.
I generally use the vcom to analyze and build libraries and units for
presynth simulation and only after I'm happy with it I proceed with
synthesis. Yesterday, though, I tried to compile the following code [1]
with synplify_pro without success (while vcom happily went through):
architecture tfsm_arch of tfsm is
-- Note: No signal declarations.
begin -- tfsm_arch
main : process (CLK, RST) is
-- control wires
subtype ctr_t is std_ulogic;
variable nrd_v : ctr_t;
variable nwr_v : ctr_t;
variable auto : boolean;
-------------------------------------------------------------------------------
procedure update_ports is
begin -- purpose: synthesize a wire from the register to the port
nRD_o <= nrd_v when auto = true else nrd_i; -- ***Synplify Pro AE Error
nWR_o <= nwr_v when auto = true else nwr_i;
add_o <= add_v when auto = true else add_i;
end procedure update_ports;
-------------------------------------------------------------------------------
-- some more procedures here...
-------------------------------------------------------------------------------
begin -- process main
case template_g is
when a_rst => template_a_rst;
when s_rst => template_s_rst;
when so_rst => template_so_rst;
when others => template_v_rst;
end case;
end process main;
Synplify Pro AE (integrated in LiberoSoC) barf something like this:
@E: CD242
:"/home/pol/polar_svn/firmware/obox/frontend_alb/firmware/hdl/tfsm.vhd":116:21:116:24|Expecting
;
@E: CD204
:"/home/pol/polar_svn/firmware/obox/frontend_alb/firmware/hdl/tfsm.vhd":116:21:116:24|Expecting
sequential statement
Being the procedure defined in a process I may understand why it
'expects a sequential statement', but is this something related to
synthesis only?
Why vcom does not complain?
It looks like I cannot have a concurrent signal assignment in a process
(which makes sense since signal assignment is 'scheduled').
Moreover I'm quite confused when it comes to the various steps involved
in synthesis. It seems the tool is failing during 'parsing' which is
something I expected to be part of the 'analysis', therefore equivalent
to the 'vcom' result.
Anyway I changed the conditional signal assignment statement with a
sequential one (if/then/else) and everything works fine. Still I'd
appreciate if someone can enlighten me on this topic.
Al
[1] some of you may have recognized Mike Treseler's template.