Task #5002
closedТип переменной в блоке условия процесса
0%
Description
Когда в методе onDelayedStatementBegin прочитываем тип переменной из event.getExpression().getVariable(), полученной из node.getEventControl().getEvents(), то он оказывается unknown.
(там прочитывается условие на процесс, например "posedge rst"). Предлагаю сразу указывать корректный тип. Или он не указывается, т.к. под переменной, участвующей в блоке условия, может скрываться целое выражение и тип, соответственно, заранее не известен?
Updated by Alexander Kamkin over 10 years ago
Не все понял. В выражении не обязательно переменная: может быть, если не ошибаюсь, конкатенация (см. стандарт).
Updated by Mikhail Chupilko over 10 years ago
Собственно, рассматривались конструкции следующего типа: "always (posedge rst)" - вот у этого rst как раз и не будет определен тип. Насколько я понимаю, конструкция срез_сигнала+переменная имеет тип "Event" и конкатенацию выражений под срезом_сигнала не используют (что-то вроде "always
(posedge {rst,clk})" в стандарте не встречал)
Updated by Alexander Kamkin over 10 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 10 years ago
- Status changed from New to Resolved
- Assignee changed from Alexander Kamkin to Mikhail Chupilko
Теперь вместо getVariable используется getVariables. А тип больше не нужен - он указывается при декларации переменной. r815
Updated by Alexander Kamkin over 10 years ago
- Status changed from Resolved to Closed