Перейти к содержанию
    

Иерархические имена в Verilog

Есть модуль U1, внутри которого существует сигнал ss. Когда я пытаюсь этот сигнал вытащить наружу:

wire aaa = U1.ss;

то синтезатор (LeonardoSpectrum) ругается:

Error, Hierarchical name reference not supported.

Можно ли каким либо образом вытащить сигнал из модуля, не внося изменений в описание его портов? (Переписывать очень не хочется, ибо это готовый модуль).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть модуль U1, внутри которого существует сигнал ss. Когда я пытаюсь этот сигнал вытащить наружу:

wire aaa = U1.ss;

то синтезатор (LeonardoSpectrum) ругается:

Error, Hierarchical name reference not supported.

Можно ли каким либо образом вытащить сигнал из модуля, не внося изменений в описание его портов? (Переписывать очень не хочется, ибо это готовый модуль).

 

Если я не ошибаюсь, то Verilog не поддерживает иерархические имена.

Выход один, как ты и сказал, добавить этот сигнал при описании нового модуля вроде:

 

wire aaa;

 

U1 U_new(

...

.ss(aaa)

...)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

согласен - придётся тянуть через порт или брать другую среду проектирования

(N.B. Verilog поддерживает иерархические имена.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Протянул через порты, на 3 уровня вверх. :(

А ведь симуляторы их поддерживают, похоже что все поголовно. Видит око, да зуб неймёт. :(

N.B. Verilog поддерживает иерархические имена.

Что есть "N.B. Verilog"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

согласен - придётся тянуть через порт или брать другую среду проектирования

(N.B. Verilog поддерживает иерархические имена.)

 

А можно тогда уточнить, какие САПР поймут это присвоение(по вашему опыту)

В FPGA Advantage 7.0 я не пробывал, а может стоит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Синтезаторы иерархические имена имхо не поддерживают, так что добавляйте их в список портов. Симулятор, естественно, поддерживает, т.е. Вы можете посмотреть сигнал не на верхнем уровне иерархии, а внутри любого модуля.

fpga advantage - это не отдельный продукт, а сборка из

-- ввод и упраление проектом: hdldesigner

-- симулятор: modelsim

-- синтезатор: precision или leonardo

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Синтезаторы иерархические имена имхо не поддерживают, так что добавляйте их в список портов. Симулятор, естественно, поддерживает, т.е. Вы можете посмотреть сигнал не на верхнем уровне иерархии, а внутри любого модуля.

fpga advantage - это не отдельный продукт, а сборка из

-- ввод и упраление проектом: hdldesigner

-- симулятор: modelsim

-- синтезатор: precision или leonardo

 

Я имел ввиду hdldesigner+precision.

Так кто-то может сказать без имхо, можно ли где-то также удобно как в AlteraHDL использовать иерархические имена в Verilog'e?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если я чего не попутал в своих воспоминаниях - то буквально неделю-две назад Симплифай ещё ;) поддерживал иерархические имена

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если я чего не попутал в своих воспоминаниях - то буквально неделю-две назад Симплифай ещё ;) поддерживал иерархические имена

В смысле? Можно из модуля вытащить наверх внутренний сигнал, не являющийся портом? В такой манере, как хочет Vitёk:

Есть модуль U1, внутри которого существует сигнал ss. Когда я пытаюсь этот сигнал вытащить наружу:

wire aaa = U1.ss;

то синтезатор (LeonardoSpectrum) ругается

Честно говоря, я такой возможностью никогда не пользовался за ненадобностью, но мне казалось, что так делать нельзя - пропадает смысл существования портов. Когда можно делать все, что хочешь, дело заканчивается бардаком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну да - мне нужно было быстренько перекинуть проект с симуляции на синтез, чтобы поглядеть на ресурсы - а так как модули-обёртки на симуляции и синтезе выглядят принципиально поразному - нужно было простое решение - ну я и воспользовался возможностями стандарта (хотя сам считаю такой подход немного варворским - на подобие оператора гоуту в программирование - но что делать - жизнь заставила) - к стати в принципе не вижу никакого криминала в упращение портов для синтеза - синтезатор все равно логику на границах модулей по умолчанию упрощает - так что порты в этом плане нужны для стройности языковой модели (инкапсуляция) а в моделирование это вообще "white-box" чистый получается (это ВХДЛ - другое дело - вот у него впринципе иерархические имена не поддерживаются)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CaPpuCcino, а не могли бы Вы привести пример кода. Я только что проверил, конструкцию вида <module>.<signal> синплифай не принял, а в документации я ничего не нашел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CaPpuCcino, а не могли бы Вы привести пример кода. Я только что проверил, конструкцию вида <module>.<signal> синплифай не принял, а в документации я ничего не нашел.

сорри - сейчас сам сидел проверял - обошёлся я похоже дело без иерархических имён - по крайней мере - посмотрел в коде - они у меня закоментированы (и на старуху бывает проруха ) - сейчас проверил на простеньком примере - действительно не распознаёт Synplify составного имени (погляжу ещё)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Иерархические имена в Verilog относятся к поведенческой части языка, и синтезаторы их по определению не поддерживают.

Хотя, задача протаскивания новых сигналов между модулями сквозь иерархию встречается нередко, почему-то ни один CAD, с которым мне доводилось работать, не предлагает инструмента для автоматизации этой операции, или мне просто нигде не удалось такого инструмента разглядеть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...