Hello,in process (A, B, C).... there is no wait statement, so time didn't advances
I am perplexed with VHDL behavior in the example I tried on EDA Playground. Here's the link so that you can simulate yourself.
https://www.edaplayground.com/x/Qx_J
My question is why doesn't the process enter when 'B' changes? The process seems to remain stuck at time 0 - with A, B, C values as Uninitialized.
Thanks
On 15/12/2021 23:28, A wrote:
Hello,
I am perplexed with VHDL behavior in the example I tried on EDA Playground. Here's the link so that you can simulate yourself.
https://www.edaplayground.com/x/Qx_J
My question is why doesn't the process enter when 'B' changes? The process seems to remain stuck at time 0 - with A, B, C values as Uninitialized.
Thanksin process (A, B, C).... there is no wait statement, so time didn't advances
HTH
--
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
On Thursday, December 16, 2021 at 2:50:49 AM UTC-8, Maurice SAAB wrote:Seems working with my (old) simulator:
On 15/12/2021 23:28, A wrote:
Hello,in process (A, B, C).... there is no wait statement, so time didn't advances >>
I am perplexed with VHDL behavior in the example I tried on EDA Playground. Here's the link so that you can simulate yourself.
https://www.edaplayground.com/x/Qx_J
My question is why doesn't the process enter when 'B' changes? The process seems to remain stuck at time 0 - with A, B, C values as Uninitialized.
Thanks
HTH
--
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Process is sensitive to A.B.C - so can't have wait statement in the process. No wait when there is sensitivity list - VHDL rule.
Hello,
I am perplexed with VHDL behavior in the example I tried on EDA Playground. Here's the link so that you can simulate yourself.
https://www.edaplayground.com/x/Qx_J
My question is why doesn't the process enter when 'B' changes? The process seems to remain stuck at time 0 - with A, B, C values as Uninitialized.
Thanks
On 16/12/2021 20:37, A wrote:Thanks Maurice. But the reason it worked for you is because I had changed the model (drive A first) to make it work. If you try it again, it'll show the behavior as I explained in my original post.
On Thursday, December 16, 2021 at 2:50:49 AM UTC-8, Maurice SAAB wrote:
On 15/12/2021 23:28, A wrote:
Hello,in process (A, B, C).... there is no wait statement, so time didn't advances
I am perplexed with VHDL behavior in the example I tried on EDA Playground. Here's the link so that you can simulate yourself.
https://www.edaplayground.com/x/Qx_J
My question is why doesn't the process enter when 'B' changes? The process seems to remain stuck at time 0 - with A, B, C values as Uninitialized.
Thanks
HTH
--
Cet email a fait l'objet d'une analyse antivirus par AVG.
http://www.avg.com
Process is sensitive to A.B.C - so can't have wait statement in the process. No wait when there is sensitivity list - VHDL rule.Seems working with my (old) simulator:
ENTER: At Time = 0 ns INPUT = 'U''U''U'
EXIT: At Time = 0 ns iOUT1 = 'U''U''U'
ENTER: At Time = 1 ns INPUT = '0''U''U'
EXIT: At Time = 1 ns iOUT1 = '0''U''U'
ENTER: At Time = 11 ns INPUT = '0''0''U'
EXIT: At Time = 11 ns iOUT1 = '0''0''U'
ENTER: At Time = 15 ns INPUT = '0''0''0'
EXIT: At Time = 15 ns iOUT1 = '0''0''0'
ENTER: At Time = 26 ns INPUT = '1''0''0'
EXIT: At Time = 26 ns iOUT1 = '1''0''0'
ENTER: At Time = 36 ns INPUT = '1''1''0'
EXIT: At Time = 36 ns iOUT1 = '1''1''0'
ENTER: At Time = 40 ns INPUT = '1''1''1'
EXIT: At Time = 40 ns iOUT1 = '1''1''1'
there is ENTER at 36ns when B changes
On 2021-12-15 15:28, A wrote:
Hello,
I am perplexed with VHDL behavior in the example I tried on EDA Playground. Here's the link so that you can simulate yourself.
https://www.edaplayground.com/x/Qx_J
My question is why doesn't the process enter when 'B' changes? The process seems to remain stuck at time 0 - with A, B, C values as Uninitialized.
Thanks
The main problem is that signals B and C are being driven by two
processes. Unless you are dealing with tri-state logic this is usually
a no-no. Remember that in VHDL a signal is not a variable in the sense
that you would think of a variable in a conventional programming
language. An assignment statement for a signal (<=) within a process or
in a stand-alone concurrent statement creates a driver for that signal.
So, in the example you pointed to, B and C have conflicting drivers.
Another problem is that signal B appears in the sensitivity list of the first process and also appears on the left-hand side of an assignment statement in that process. This is also usually a no-no since the
feedback can cause endless loops in some cases. (Trust me, over the
past few months I have been solving some simulator hang problems in
somebody else's logic caused by process feedback.)
Charles Bailey
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 296 |
Nodes: | 16 (2 / 14) |
Uptime: | 72:07:02 |
Calls: | 6,657 |
Calls today: | 3 |
Files: | 12,203 |
Messages: | 5,332,298 |
Posted today: | 1 |