Gabor wrote:
> Weng Tianxiang wrote:
>> The following topic may be one of the longest debate in vhdl group:
>> http://groups.google.com/group/comp....torial&lnk=ol&
>>
>> The debute focus later turns to which is best way to use one
>> sequential process or two combinarotial process and sequential process.
>> The most important and strange thing is that I cannot even find the
>> word "combinarotial" in VHDL-2002 specification.
>> I want to grammarly define a combinatorial process which cannot have a
>> clock statement in one of my thinking.
>> process_statement_part ::= { sequential_statement }
>> sequential_statement ::= wait_statement | assertion_statement |
>> report_statement | signal_assignment_statement |
>> variable_assignment_statement | procedure_call_statement |
>> if_statement | case_statement | loop_statement | next_statement |
>> exit_statement | return_statement | null_statement
>> combinatorial_process_statement_part ::= {
>> combinatorial_sequential_statement }
>> combinatorial_sequential_statement ::= assertion_statement --
>> wait_statement is deleted here !!! | report_statement |
>> signal_assignment_statement | variable_assignment_statement |
>> procedure_call_statement | if_statement | case_statement |
>> loop_statement | next_statement | exit_statement | return_statement |
>> null_statement
>> Weng
>
> The traditional meaning of "combinatorial" is that the outputs only
> depend on the current state of the inputs. i.e. there can be no
> saved state within the process. This not only includes constructs
> such as edge dependencies or waits, but also any sort of feedback
> from the process outputs or internal signals / variables.
>
> -- Gabor
I forgot to add that feedback in the process isn't always obvious
just by looking at the RHS of the equations. Implicit feedback
occurs when you have incomplete state coverage, as in the latch
example. This makes it a bit tougher to prevent sequential logic
from being inferred just by excluding certain types of statements.
-- Gabor