Project

General

Profile

Task #5122

[parser][backend] elaborate non-blocking assignments

Added by Sergey Smolov about 6 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
-
Target version:
Start date:
07/22/2014
Due date:
% Done:

100%

Estimated time:
Detected in build:
svn
Published in build:
20150307

Description

Пусть имеется путь basic_block_1 -> switch -> basic_block_2 в графе потока управления, и оба базовых блока содержат concurrent-присваивания.
Необходимо корректным образом объединять такие базовые блоки после выполнения "подъема" условного оператора

History

#1

Updated by Sergey Smolov about 6 years ago

  • Subject changed from [cfg][transformer][cgaa] to [cfg][transformer][cgaa] Объединение concurrent-присваиваний после подъема условных выражений
#2

Updated by Sergey Smolov over 5 years ago

  • Target version changed from 0.1 to 0.2
#3

Updated by Sergey Smolov over 5 years ago

  • Status changed from New to Open
#4

Updated by Sergey Smolov over 5 years ago

  • 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).

#5

Updated by Sergey Smolov over 5 years ago

  • 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.

#6

Updated by Sergey Smolov over 5 years ago

  • % Done changed from 0 to 80

Almost done in r1448, multi-assignments support should be implemented as the last step.

#7

Updated by Sergey Smolov over 5 years ago

  • % 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.

#8

Updated by Sergey Smolov over 5 years ago

  • Status changed from Open to Resolved
  • % Done changed from 90 to 100
  • Published in build set to r1456
#9

Updated by Sergey Smolov over 5 years ago

  • Status changed from Resolved to Verified
#10

Updated by Sergey Smolov over 5 years ago

  • Status changed from Verified to Closed
  • Published in build changed from r1456 to 20150307

Also available in: Atom PDF