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

SV package в Quartus 9.1 и ModelSim-AE 6.5b

В проекте использую простенький package (в принципе, неважно, какой, но показал):

package Definitions;
/* Unit Select */
  typedef enum {
    Status, _tmp1_, Relay, Power,
    TimerL, TimerH, PreCnt, Trig,
    S1ADC, S2ADC, S1Mem, S2Mem,
    Itpl, DAC, _tmp14_, _tmp15_
  } unit_sel;
endpackage

Совал его и в один из файлов проекта, и в отдельный файл. Все файлы проекта (в папке source) добавлены к проекту. В нужных модулях используется import Definitions::*;

Quartus нормально компилирует.

Запускаю ModelSim через NativeLink.

Для теста создал отдельную папку (simulation), и в ней файл _test.sv. Если package в отдельном файле, RTL симуляция проходит, а Gate симулятор не находит Definitions. Аналогично, если package в одном из файлов проекта.

Если задать только в файле теста, он не находится компилятором Quartus.

Если задать и в файле проекта, и в тесте, RTL симуляция не идет, жалуется ** Error: (vsim-13) Recompile work.Signal_m because work.Definitions has changed. Зато проходит Gate симуляция.

 

Как же тут всем угодить?

 

Выкрутился так - создал в файле теста:

package Definitions_;
/* Unit Select */
  typedef enum {
    Status, _tmp1_, Relay, Power,
    TimerL, TimerH, PreCnt, Trig,
    S1ADC, S2ADC, S1Mem, S2Mem,
    Itpl, DAC, _tmp14_, _tmp15_
  } unit_sel_;

То же самое, только под другим именем. И вызываю его в тестбенче:

import Definitions_::*;

Все компиляции и симуляции работают.

Странно, что имена в перечислениях не конфликтуют.

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


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

Может, кто подскажет заодно, почему в ModelSim в окне Wave в тексте формата переменной встречаются и маленькие z, и большие Z.

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


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

Может, кто подскажет заодно, почему в ModelSim в окне Wave в тексте формата переменной встречаются и маленькие z, и большие Z.

z и Z как-то связаны с языками Verilog и VHDL, соответственно. Хотя у меня один SV.

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


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

Вернулся к данной проблеме в последние дни. Крутил-вертел package, дубликатов понасоздавал, и в модули импортировал и в файлы (т.е. в область видимости $unit) - всё ерунда.

Package, импортируемый в модулях в одном файле, конфликтует с ним же, импортируемым в модулях в другом файле, при RTL симуляции в ModelSim. Подозреваю, недоработка ModelSim.

Убрал package. Перенес свои typedef в отдельный файл (и `define там создал нужных), обложил их

`ifndef DEFS
`define DEFS
...
`endif

и включаю свой файл, куда хочу.

Для теста, который находится в другой папке, использую путь (сначала наверх, потом, куда надо):

`include "../source/xxx_Defs.sv"

ШабАш.

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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