Компиляция пакетов systemverilog с тем же именем - PullRequest
0 голосов
/ 19 октября 2018

Если я не ошибаюсь, после того, как пакет был проанализирован, его видимость становится глобальной (например, видимость модуля).

Если каждая из команд разработки и проверки имеет свой собственный "common_pkg"пакет, возможно ли как-то скомпилировать их оба и использовать common_pkg проекта для проверки и common_pkg проверки для проверки?

Моя идея заключалась в том, чтобы ограничить их область применения, заключив их в пакеты проектирования / проверки, например:

package design_pkg;
  package common_pkg;
    typedef enum {<something>} my_type;
  endpackage : common_pkg
endpackage : design_pkg

package verification_pkg;
  package common_pkg;
    typedef enum {<something_else>} my_type;
  endpackage : common_pkg
endpackage : design_pkg

// In design:
design_pkg::common_pkg::my_type my_design_var;
// In verification:
verification_pkg::common_pkg::my_type my_verification_var;

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

Есть ли решение для этой проблемы, кроме переименования пакетов и их исключения"широкие" имена, такие как "common_pkg", которые могут конфликтовать с другими областями?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Добро пожаловать в системный verilog :-(. К сожалению, SV не предоставляет ни одного решения для коллизий имен пакетов, ни какого-либо хорошего способа для любого другого типа коллизий именования в глобальной области видимости.

Вот почему вы можете услышатьтермин «унификация» от некоторых компаний. Это действительно означает автоматическое изменение исходного кода для уникального именования элементов глобальной области действия, таких как пакеты, модули, макросы, ... для строительных блоков verilog, поступающих из нескольких команд (IP).

Итак, лучшее решение для ваших команд - поговорить друг с другом и договориться об использовании имен.

0 голосов
/ 19 октября 2018

Не было бы замечательно, если бы инженерные команды могли работать вместе, а common_pkg действительно означало общий пакет общий для всех?

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

Некоторые инструменты могут позволить вам скомпилировать и оптимизировать проект с его пакетом, а затем связать модуль дизайнав целом.

...