Как я могу уменьшить шину lvalue без дополнительного сигнала?

#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), являются операторы конкатенации и потоковой передачи. Они отображают только позиционные битовые ассоциации. Вы должны определить дополнительный сигнал для чего-либо, кроме этого.