Последнее написанное вами утверждение не является шаблоном назначения; это конкатенация. Если sig_1
и sig_2
не являются однобитовыми переменными, у вас есть проблема. '
перед {}
имеет решающее значение.
Раздел 10.9.2 Шаблоны структурных назначений IEEE 1800-2017 LRM объясняет, что
assign foo_out = '{sig_1, sig_2};
является позиционным шаблон назначения элемента структуры, в котором первый аргумент присваивается первому элементу, второй аргумент присваивается второму элементу и т. д. Каждый аргумент тоже усекается или дополняется, чтобы соответствовать каждому элементу.
Другая форма с :
сопоставляется по имени, а не по позиции.
assign foo_out = '{foo_2:sig_2, foo_1:sig_1};