Actions
Task #5483
closed[vhdl][parser][cfg] Обработка условий на события при построении CFG
Start date:
12/10/2014
Due date:
% Done:
100%
Estimated time:
Detected in build:
svn
Published in build:
20141230
Description
В языке VHDL помимо списка чувствительности при описании процессов можно использовать условия вида clk'event
. При построении CFG такие условия нужно переносить в список чувствительности. Оставлять их в охранных условиях противопоказано. Предлагается следующий подход.
Накладываемые ограничения:
- Каждое условие содержит не более одного события; если условие содержит событие, оно имеют вид
x'event [&& x = v]
. - Каждое условие на событие (вершина типа
Switch
) содержит не более одного последователя (вершину типаCase
). - Условие на событие не может быть внутри цикла.
- На каждом пути от начальной вершины до конечной может присутствовать не более одного условия на событие (вершины типа
Switch
, выражение которой содержит переменную, входящую в список чувствительности, с маркеромevent
). - На каждом пути от начальной вершины до условия на событие могут присутствовать только условия (вершины типа
Switch
иCase
) - базовые блоки не допустимы.
Правила преобразования процесса P
:
- Для каждого условия на событие (
Switch: x'event [&& x = v]
), если оно не является первой вершиной послеSource
:- строится отдельный процесс
P_part[i]
со списком чувствительностиx
(возможно, с пометкойposedge
илиnegedge
); - CFG процесса
P_part[i]
- путь в CFG процессаP
от начальной вершины до соответствующегоSwitch
(все альтернативные ветви ведут вSink
) + продолжение (которое должно быть одно).
- строится отдельный процесс
- В CFG процесса
P
удаляются подграфы, начинающиеся с условий на события:- если в нем не остается действий, он удаляется.
- Условия на события либо удаляются, либо заменяются на
true
.
Actions