Поиск
Показаны результаты для тегов 'xcelium'.
-
Здравствуйте, коллеги Ситуация: В package определена экспортируемая в C++ функция. На стороне C++ данная функция вызывается в случайный момент времени тредом, который к DPI не имеет отношения. Во время вызова функции из C++ симулятор Xcelium выдаёт следующие ошибки: "DPI Scope function call allowed only from context function" и "The C identifier "foo" representing an export task/function cannot be executed from a non-context area". Перед вызовом функции foo в стороннем треде я пробовал принудительно задавать контекст: svSetScope(svGetNameFromScope("foo_pkg")), но безуспешно. Я даже пробовал заранее сохранять переменную с контекстом (GLOBAL_SCOPE=svGetScope()) и перед вызовом устанавливать контекст: svSetScope(GLOBAL_SCOPE). Тоже безрезультатно. При вызове svSetScope(GLOBAL_SCOPE) DPI не видит контекста вообще и устанавливает его в NULL. На форуме Cadence нашёл заметку в которой автор решает описываемую проблему, используя функции __sync_lock_test_and_set и __sync_lock_release. Как и над какими переменными он их использует - не понятно. -- Сталкивался ли кто с подобной проблемой и как решил?
- 2 ответа
-
- systemverilog
- dpi
-
(и ещё 6 )
C тегом:
-
Растягиваем time-slot в Xcelium
kirill70674 опубликовал тема в Методы и средства верификации ПЛИС/ASIC
Здравствуйте, коллеги Слышал про возможность "растянуть" time-slot на временной диаграмме в симуляторе Xcelium. Насколько я понимаю, это наглядно отобразит действия во всех временных регионах внутри любого time-slot (удобно при отлавливании race-condition). Может ли кто подсказать алгоритм действий? -
Здравствуйте, коллеги Возникла проблема при миграции с QuestaSim в Xcelium Есть следующий код: T temp_numb; //... // Convert to actual number if (type(temp_numb) == type(int)) temp_numb = temp_numb_str.atoi(); else if(type(temp_numb) == type(int unsigned)) temp_numb = T'(temp_numb_str.atoi()); else if(type(temp_numb) == type(byte)) temp_numb = byte'(temp_numb_str.atoi()); else if(type(temp_numb) == type(real)) temp_numb = temp_numb_str.atoreal(); else if(type(temp_numb) == type(shortreal)) temp_numb = shortreal'(temp_numb_str.atoreal()); else `uvm_fatal("FILE READ", "Unsupported type of parameter") Здесь происходит парсинг входной строки в один из встроенных SV типов. Соль в том, что подобное сравнение типов спокойно компилируется в Questasim, а вот Xcelium при компиляции выдаёт ошибку. Пока пришлось закомментить данный блок и оставить конвертацию в один тип, но это костыль, а костыли - зло. Есть ли сравнение типов в Xcelium?
- 6 ответов
-
- systemverilog
- questasim
-
(и ещё 1 )
C тегом: