A
alb
Guest
Dear all,
during P&R Actel Designer barfs this information (not a warning):
All gates except 'master_clock_routing' are defined in the following
code and they are the ones I'm interested into:
<code>
begin -- procedure autoread
case state_v is
when IDLE =>
cnt_v := 0;
state_v := SET_CLKRATE;
when READ_BGN =>
state_v := READ_END; -- this is one clock cycle
nRD_v := '0';
when READ_END =>
state_v := nstate_v;
nRD_v := '1';
DATA_v := DATA;
when WRITE_BGN =>
state_v := WRITE_END; -- this is one clock cycle
nWR_v := '0';
when WRITE_END =>
state_v := nstate_v;
nWR_v := '1';
DATA_v := (others => 'Z'); -- release the bus
</code>
and the procedure is called at each clock cycle in a template like this:
<code>
-------------------------------------------------------------------------------
procedure update_regs is
begin -- purpose: call the procedures above in the desired order
autoread;
end procedure update_regs;
-------------------------------------------------------------------------------
begin
if RST = '1' then
init_regs;
elsif rising_edge(CLK) then
update_regs;
end if;
update_ports;
end process main;
</code>
It sim'ed ok, both pre/post-synthesis and post-layout. STA does not
report timing violations. Why there're combinational loops???
Al
--
A: Because it fouls the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?
during P&R Actel Designer barfs this information (not a warning):
While analyzing gated clock network, ambiguities have been found on gates
temperature_1/tfsm_1/main.nwr_v_RNI3GSJ:Y, temperature_1/tfsm_1/main.nwr_v_RNIOVCF:Y,
master_clock_routing_RNO:Y, temperature_1/tfsm_1/main.nrd_v_RNI12QJ:Y.
The timing models of these gates have been simplified for Static Timing Analysis.
All gates except 'master_clock_routing' are defined in the following
code and they are the ones I'm interested into:
<code>
begin -- procedure autoread
case state_v is
when IDLE =>
cnt_v := 0;
state_v := SET_CLKRATE;
when READ_BGN =>
state_v := READ_END; -- this is one clock cycle
nRD_v := '0';
when READ_END =>
state_v := nstate_v;
nRD_v := '1';
DATA_v := DATA;
when WRITE_BGN =>
state_v := WRITE_END; -- this is one clock cycle
nWR_v := '0';
when WRITE_END =>
state_v := nstate_v;
nWR_v := '1';
DATA_v := (others => 'Z'); -- release the bus
</code>
and the procedure is called at each clock cycle in a template like this:
<code>
-------------------------------------------------------------------------------
procedure update_regs is
begin -- purpose: call the procedures above in the desired order
autoread;
end procedure update_regs;
-------------------------------------------------------------------------------
begin
if RST = '1' then
init_regs;
elsif rising_edge(CLK) then
update_regs;
end if;
update_ports;
end process main;
</code>
It sim'ed ok, both pre/post-synthesis and post-layout. STA does not
report timing violations. Why there're combinational loops???
Al
--
A: Because it fouls the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?