kirill70674 5 21 октября, 2023 Опубликовано 21 октября, 2023 (изменено) · Жалоба Здравствуйте, коллеги Возникла проблема при миграции с 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? Изменено 21 октября, 2023 пользователем kirill70674 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_eight_seven 6 21 октября, 2023 Опубликовано 21 октября, 2023 · Жалоба Если есть UVM, то пользуйтесь type_name, примитивно, понятно, работет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kirill70674 5 21 октября, 2023 Опубликовано 21 октября, 2023 · Жалоба 1 минуту назад, one_eight_seven сказал: Если есть UVM, то пользуйтесь type_name, примитивно, понятно, работет. Можно подробнее? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_eight_seven 6 21 октября, 2023 Опубликовано 21 октября, 2023 (изменено) · Жалоба Конечно можно. UVM - библиотека для верификации на SystemVerilog. Стандарт в верификации. https://www.accellera.org/downloads/standards/uvm В их классах реализован метод type_name() - возвращает имя типа в виде строки. Кстати, это open source - если не хотите тащить всю библиотеку (а лучше -тащить, это всё-таки стандарт), то можете посмотреть как сделано. Изменено 21 октября, 2023 пользователем one_eight_seven Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kirill70674 5 21 октября, 2023 Опубликовано 21 октября, 2023 (изменено) · Жалоба 15 минут назад, one_eight_seven сказал: Конечно можно. UVM - библиотека для верификации на SystemVerilog. Стандарт в верификации. https://www.accellera.org/downloads/standards/uvm В их классах реализован метод type_name() - возвращает имя типа в виде строки. Кстати, это open source - если не хотите тащить всю библиотеку (а лучше -тащить, это всё-таки стандарт), то можете посмотреть как сделано. Но работает ли данный метод со встроенными типами? Насколько я вижу, этот метод только для объектов, наследованных от uvm_object. Изменено 21 октября, 2023 пользователем kirill70674 пунктуация Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_eight_seven 6 21 октября, 2023 Опубликовано 21 октября, 2023 (изменено) · Жалоба А зачем вам что-то другое? Если у вас важен базовый тип сам по себе, без его применения, без какой-либо транзакции, или компонента, то это синтетическая задача, не имеющая практической ценности, и решать её просто не нужно. P.S. но даже в этом случае, она становится решаемой - засуньте сепульку в класс-контейнер, унаследованный от `uvm_object`, и ваша проблема решена Изменено 21 октября, 2023 пользователем one_eight_seven Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alperovich 1 18 мая Опубликовано 18 мая · Жалоба Из занятного – LRM в 23.2 Elaboration time typeof function предлагает вот так функцию typeof использовать для сравнения типов: bit [12:0] A_bus, B_bus; parameter type bus_t = $typeof(A_bus); generate case ($typeof(but_t)) $typeof(bit[12:0]): addfixed_int #(bus_t) (A_bus,B_bus); $typeof(real) : add_float #($typeof(A_bus)) (A_bus,B_bus); endcase endgenerate По идее, результат не должен зависеть от симулятора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться