Как получить сигналы иерархии с похожим именем?

предположим, на моем испытательном стенде у меня были следующие сигналы

top.module0.expect
top.module1.expect

да, мы создаем экземпляр module0/1 с тем же модулем теперь в функции get_expect_sig(int module_idx) (module_idx может быть 0 или 1) я хочу получить сигнал в соответствии с module_idx

то, что я сейчас делаю, выглядит следующим образом:

if (module_idx == 0) return top.module0.expect;
else if (module_idx == 1) return top.module1.expect;

это решение довольно уродливо. есть ли какой-нибудь блестящий метод, который поможет мне в этом? потому что у меня 32 модуля, а не 2 модуля

Спасибо!

это module_idxпеременный? параметр?

Serge 22.03.2019 16:38

module_idx - это переменная, а не константа

Jingbo Zhang 27.03.2019 03:18

то вы мало что можете сделать в данном конкретном случае. Вы можете попробовать переписать свою программу и использовать generatefor циклы или виртуальные интерфейсы. Также возможен доступ через черный ход со строками в кавычках. если оно того стоит.

Serge 27.03.2019 03:31
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
136
2

Ответы 2

Заявление case было бы немного менее уродливым. Поскольку в вашем проекте выбрано создание экземпляров модулей с уникальными именами вместо массива экземпляров, нет возможности перебирать их.

Некоторые инструменты позволяют вам искать значение сигнала, используя имя строки. Затем вы можете отформатировать строку, используя значение индекса. Вам нужно будет прочитать руководство по эксплуатации вашего инструмента.

Если это код тестового стенда (не синтезируемый), если модуль 0 и модуль 1 являются экземплярами одного и того же модуля, вы можете привязать к нему интерфейс. Оператор bind заставит этот интерфейс создаваться во всех экземплярах модуля. Затем вы можете поместить в этот интерфейс некоторый вспомогательный код, чтобы «зарегистрироваться» в классе конфигурации. В UVM это может быть база данных конфигурации, но в SystemVerilog вы можете использовать статический или одноэлементный класс.

Пример: https://www.edaplayground.com/x/5ZUG

Здесь используется несколько концепций (абстрактно-конкретные полиморфные интерфейсы), о которых вам может понадобиться прочитать. Но, надеюсь, пример достаточно ясен.

к сожалению, module0/1 - это экземпляры DUT, которые я не буду изменять.

Jingbo Zhang 27.03.2019 03:18

Я не уверен, что понимаю. Вам не нужно ничего изменять.

Arun D'souza 27.03.2019 18:17

модуль 0/1 - это экземпляры DUT, которые я не могу добавить в модуль кода привязки интерфейса

Jingbo Zhang 28.03.2019 04:28

Оператор привязки происходит вне DUT, в коде тестового стенда. См. главу 23.11 Systemverilog 1800-2012 LRM.

Arun D'souza 28.03.2019 20:25

Другие вопросы по теме