ModelSim & Signal Spy

D

Dan NITA

Hello,

Please, someone can tell me if the ModelSim Signal Spy work on the post
route timing simulation?

Thanks,

Dan.
 
D

Dan NITA

Ajeetha said:
AFAIK it does - you may have some escaped names that may cause some
trouble - can you show what problem you face?

Ajeetha
www.noveldv.com


Thanks,

Is always the same old problem when all signals name disappear on the post
route timing simulation.

I prefer to use Altera FPGA's and Quartus because the post-fitting registers
are more legible and vectors don't split up.

Now I'm very interested by the Lattice XP family on a very complex design
with a 80MHz clock processor with double port memory, registers, pipelining
and a lot of peripherals.

Because getting maximum MIPS is crucial, each instruction is time-variable.
For example a jump will take 3 clocks, a read or write from memory 4 clocks,
and a 16-bit multiplication will need 6 clocks.

After synthesis, the estimated frequency is only 27.4MHz, because I don't
now how "to inform" the synthesizer that I'll wait 6 clock until the
multiplication is done.

This means that timing report is useless for me and I need to "see" what
happened inside the FPGA.

I hope I was clear enough.
Dan.
 
M

Mike Treseler

Dan said:
After synthesis, the estimated frequency is only 27.4MHz, because I don't
now how "to inform" the synthesizer that I'll wait 6 clock until the
multiplication is done.

One way is to describe a synchronous strobe
that clock enables the output registers after
6 ticks.

-- Mike Treseler
 
D

Dan NITA

Mike Treseler said:
One way is to describe a synchronous strobe
that clock enables the output registers after
6 ticks.

-- Mike Treseler



Here is my actual code. Please, Can you confirm that "sigEndInstruction" do the clock enables like you say?





-- reset

if (RST = '1') then



----




elsif (rising_edge(CLK)) then



----



if (sigEndInstruction = '1') then



sigEndInstruction <= '0' after kHoldTime;



-- Test OpCode

case sigProgramDRD(15 downto 10) is



-- Load Data

when "000001" =>

sigAccumulator <= sigRamDRD after kHoldTime;



-- Add

when "000011" =>

sigAccumulator <= sigAddSubResult after kHoldTime;

sigRegAddSubOverflow <= sigAddSubOverflow after kHoldTime;



-- Sub

when "000100" =>

sigAccumulator <= sigAddSubResult after kHoldTime;

sigRegAddSubOverflow <= sigAddSubOverflow after kHoldTime;



-- Mult

when "000101" =>

sigAccumulator <= sigMultResult after kHoldTime;



----------



end case;



end if;
 
M

Mike Treseler

Dan said:
Here is my actual code. Please, Can you confirm that “sigEndInstruction”
do the clock enables like you say?

No, *after* is ignored for synthesis.
I would decode a 3 bit counter.

-- Mike Treseler
 
D

Dan NITA

Mike Treseler said:
No, *after* is ignored for synthesis.
I would decode a 3 bit counter.

-- Mike Treseler


Oh no! I forget to say that «sigEndInstruction » is set 1 clock after the
instruction counter carry is set.



I use “after” statement only for functional simulation purpose.



I think that the best way to test this idea, is to start a new shorten
project.



Dan.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,764
Messages
2,569,566
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top