#system-verilog
#system-verilog
Вопрос:
У меня есть модуль с многоразрядным сигналом:
output logic [2:0] tuser,
В модуле, создающем его, у меня есть только однобитовый сигнал, и это должно быть сокращение ИЛИ * модпорта.
- Есть ли способ выполнить сокращение-ИЛИ (
|sig
) непосредственно с помощью оператора потоковой{>>{}}
передачи или любой другой техники?
Пример: (очевидно, неверно)
logic single_bit;
.tuser ({>>{|single_bit}})
.tuser ({|>>{single_bit}})
.tuser (|single_bit)
Здесь я пытаюсь использовать возможности языка вместо того, чтобы использовать отдельный сигнал только для уменьшения.
Ответ №1:
К сожалению, SystemVerilog не имеет синтаксиса, который выражает то, что вы хотите сделать. Единственными операторами, определенными для работы в качестве цели присваивания (известными как lvalue), являются операторы конкатенации и потоковой передачи. Они отображают только позиционные битовые ассоциации. Вы должны определить дополнительный сигнал для чего-либо, кроме этого.