Task #5122
closed
[parser][backend] elaborate non-blocking assignments
Added by Sergey Smolov over 10 years ago.
Updated over 9 years ago.
Published in build:
20150307
Description
Пусть имеется путь basic_block_1 -> switch -> basic_block_2 в графе потока управления, и оба базовых блока содержат concurrent-присваивания.
Необходимо корректным образом объединять такие базовые блоки после выполнения "подъема" условного оператора
- Subject changed from [cfg][transformer][cgaa] to [cfg][transformer][cgaa] Объединение concurrent-присваиваний после подъема условных выражений
- Target version changed from 0.1 to 0.2
- Status changed from New to Open
- Subject changed from [cfg][transformer][cgaa] Объединение concurrent-присваиваний после подъема условных выражений to [parser][backend] transform non-blocking assignments into separate processes
Implement and HDL parser backend, that transforms non-blocking (concurrent, continuous) basic blocks (i.e. containing assignments of the defined type) into separate processes with the specific sensitivity lists. To that sensitivity list the events from parent process and signals from assignments's right part should be merged. Also some switch/case nodes should be put into the separate process if they are one the same CFG path. The backend should throw an exception when it identifies both blocking and non-blocking statements in the same CFG path (and they do not separated by "switch/merge" braces).
- Subject changed from [parser][backend] transform non-blocking assignments into separate processes to [parser][backend] elaborate non-blocking assignments
Task redetection:
Mark basic blocks as concurrent/non-concurrent. All the internal assignments are treated as concurrent/non-concurrent. It should be used, for example, while backward substitution.
Assignments do not have concurrent/non-concurrent flag.
- % Done changed from 0 to 80
Almost done in r1448, multi-assignments support should be implemented as the last step.
- % Done changed from 80 to 90
Multi-assigments support is added but not finished. The method for Fortress array element size calculation is needed for this feature to be finished.
- Status changed from Open to Resolved
- % Done changed from 90 to 100
- Published in build set to r1456
- Status changed from Resolved to Verified
- Status changed from Verified to Closed
- Published in build changed from r1456 to 20150307
Also available in: Atom
PDF