Как я могу привести к longint unsigned в systemverilog? - PullRequest
0 голосов
/ 28 февраля 2020

Я хочу преобразовать упакованный массив logi c в longint unsigned в systemverilog, а затем экспортировать его с помощью DPI- C в C ++ без знака long. Я использую симулятор Verilator. Проверьте пример ниже.

logic[31:0] v1;
logic[63:0] v2;

int a = signed'(v1); //cast to signed int
int b = int'(v1); //cast to signed int
int unsigned c = unsigned'(v1); //cast to unsigned int
longint d = longint'(v2); //cast to signed long
//longint unsigned e = longint unsigned'(v2); //This doesn't work. I need to cast to unsigned long.

Ответы [ 2 ]

4 голосов
/ 28 февраля 2020

Вам необходимо создать тип SystemVerilog без пробела, используя typedef. Вот пример:

// ..
typedef longint unsigned uint64_t;
uint64_t e = uint64_t'(v2);
1 голос
/ 28 февраля 2020

Нет необходимости в любом типе приведения, если не требуется расширение знака. Уже есть неявное приведение между типами с 4 состояниями и 2 состояниями.

Вы можете просто написать:

longint d = v2;
...