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

Миграция кода SystemVerilog из Questasim в Xcelium

Здравствуйте, коллеги

Возникла проблема при миграции с 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?

Изменено пользователем kirill70674

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


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

Если есть UVM, то пользуйтесь type_name, примитивно, понятно, работет.

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


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

1 минуту назад, one_eight_seven сказал:

Если есть UVM, то пользуйтесь type_name, примитивно, понятно, работет.

Можно подробнее?

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


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

Конечно можно.
UVM - библиотека для верификации на SystemVerilog. Стандарт в верификации. https://www.accellera.org/downloads/standards/uvm

В
их классах реализован метод type_name() - возвращает имя типа в виде строки. Кстати, это open source - если не хотите тащить всю библиотеку (а лучше -тащить, это всё-таки стандарт), то можете посмотреть как сделано.

Изменено пользователем one_eight_seven

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


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

15 минут назад, one_eight_seven сказал:

Конечно можно.
UVM - библиотека для верификации на SystemVerilog. Стандарт в верификации. https://www.accellera.org/downloads/standards/uvm

В
их классах реализован метод type_name() - возвращает имя типа в виде строки. Кстати, это open source - если не хотите тащить всю библиотеку (а лучше -тащить, это всё-таки стандарт), то можете посмотреть как сделано.

 

Но работает ли данный метод со встроенными типами? Насколько я вижу, этот метод только для объектов, наследованных от uvm_object.

Изменено пользователем kirill70674
пунктуация

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


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

 А зачем вам что-то другое? Если у вас важен базовый тип сам по себе, без его применения, без какой-либо транзакции, или компонента, то это синтетическая задача, не имеющая практической ценности, и решать её  просто не нужно.

P.S. но даже в этом случае, она становится решаемой - засуньте сепульку в класс-контейнер, унаследованный от `uvm_object`, и ваша проблема решена

Изменено пользователем one_eight_seven

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


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

Из занятного – 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

По идее, результат не должен зависеть от симулятора. 

 

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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