Post Synthesis, Post PAR, and real hardware behavior?

S

scott.yuan523

Hi all,

I just started in VHDL. I wrote the code and performed a functional
simulation (pre-synthesis). Output is what I expected. Performed a
post synthesis simulation, obtained similar results. Then the post
place-and-route (PAR) simulation gave me 'X' (don't care?) as part of
the output.

I then programed the device and the output is what I saw in the
functional and post synthesis simulation results.

My question is, what's the difference between these simulation models
(post synthesis and post PAR)? Given that the post PAR simulation
model is closest to hardware, how come the result is different from
the actual output?

Thanks in advance!
 
M

Mike Treseler

My question is, what's the difference between these simulation models
(post synthesis and post PAR)? Given that the post PAR simulation
model is closest to hardware, how come the result is different from
the actual output?

This is most likely a bug in the testbench
reset/clock synchronization, not the synthesis code.
If you pass static timing and it
works on the bench, I wouldn't
spend much time on it.

-- Mike Treseler
 
T

Thomas Stanka

I just started in VHDL. I wrote the code and performed a functional
simulation (pre-synthesis). Output is what I expected. Performed a
post synthesis simulation, obtained similar results. Then the post
place-and-route (PAR) simulation gave me 'X' (don't care?) as part of
the output.

Don't care is '-', 'X' means unknown. A X can be obtained by two
driver on the same signal, but also if there is no driver for a signal
or if your library throws 'X' after setup/hold violations.
A 'X' is not necessarily an error, but something you need to inspect
carefully.

bye Thomas
 
S

scott.yuan523

Thanks for the responses!

Don't care is '-', 'X' means unknown. A X can be obtained by two
driver on the same signal, but also if there is no driver for a signal
or if your library throws 'X' after setup/hold violations.
A 'X' is not necessarily an error, but something you need to inspect
carefully.

bye Thomas

I looked at both the RTL and technology schematic. There's only one
driver for the output.
 
A

Andy

Don't care is '-', 'X' means unknown. A X can be obtained by two
driver on the same signal, but also if there is no driver for a signal
or if your library throws 'X' after setup/hold violations.
A 'X' is not necessarily an error, but something you need to inspect
carefully.

bye Thomas

Typically the result of no driver for a std_logic signal is a
'U' (uninitialized), rather than an 'X', unless there is an explicit
initializer in the signal declaration.

Andy
 
T

Thomas Stanka

Typically the result of no driver for a std_logic signal is a
'U' (uninitialized), rather than an 'X', unless there is an explicit
initializer in the signal declaration.

You are right, I was a bit fast. A signal with no driver is a U in
first place. I thought about GTL-gates driving X when having no driver
(U at an Input). I see this sometimes especially when using Verilog
library elements.

bye Thomas
 

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,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top