Task #5002
Тип переменной в блоке условия процесса
0%
Description
Когда в методе onDelayedStatementBegin прочитываем тип переменной из event.getExpression().getVariable(), полученной из node.getEventControl().getEvents(), то он оказывается unknown.
(там прочитывается условие на процесс, например "posedge rst"). Предлагаю сразу указывать корректный тип. Или он не указывается, т.к. под переменной, участвующей в блоке условия, может скрываться целое выражение и тип, соответственно, заранее не известен?
History
Updated by Alexander Kamkin over 6 years ago
Не все понял. В выражении не обязательно переменная: может быть, если не ошибаюсь, конкатенация (см. стандарт).
Updated by Mikhail Chupilko over 6 years ago
Собственно, рассматривались конструкции следующего типа: "always (posedge rst)" - вот у этого rst как раз и не будет определен тип. Насколько я понимаю, конструкция срез_сигнала+переменная имеет тип "Event" и конкатенацию выражений под срезом_сигнала не используют (что-то вроде "always
(posedge {rst,clk})" в стандарте не встречал)
Updated by Alexander Kamkin over 6 years ago
- Target version set to 0.1
- Синтаксически после
posedge
может быть любое выражение (не обязательно переменная), поэтому некорректно делать вызовevent.getExpression().getVariable()
- см. раздел "Event control":
event_control ::= ... | @(event_expression) ... event_expression ::= ... | posedge expression ...
- Если я не ошибаюсь, сейчас у всех переменных в AST тип не определен - так как нет привязки переменных к декларациям.
Для чего нужен тип?
Updated by Mikhail Chupilko over 6 years ago
- Status changed from New to Resolved
- Assignee changed from Alexander Kamkin to Mikhail Chupilko
Теперь вместо getVariable используется getVariables. А тип больше не нужен - он указывается при декларации переменной. r815