Если я не ошибаюсь, после того, как пакет был проанализирован, его видимость становится глобальной (например, видимость модуля).
Если каждая из команд разработки и проверки имеет свой собственный "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", которые могут конфликтовать с другими областями?