Sequantial componets evalultion order fix #88
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR is to solve the problem that arises from evaluation order of sequential components by adding the constraint that there can't be any sequential to sequential connections
an example, let r_n be registers, a sequential component, and gc a group of combinatorial logic components. Suppose we have an network as described below
where default for registers are 0, and for gc its 10
currently syncrim could order the evaluation as shown below (note that sequential always are evaluated first)
when evaluating:
In this example the value passed through 2 registers in one cycle which is not the intended behavior.
By adding the constraint that there should be no sequential to sequential connections we ensure that the evaluation of an sequential component can’t directly affect another sequential component. This leads to the order of sequential component evaluation doesn't matter.
A pass through component were also added to that can be used between sequential components