Если вы не знакомы с фигурными скобками {}
, они являются операторами конкатенации.Вы можете прочитать о них в IEEE Std для Verilog (например, 1800-2009, раздел 11.4.12).
assign pc_plus_4 = {pc[31],pcinc};
Это объединяет MSB pc
со всеми битами pcinc
всобрать сигнал pc_plus_4
.Однако в этом случае, поскольку pcinc
и pc_plus_4
имеют ширину 32 бита, pc[31]
игнорируется.Хороший инструмент для распечатывания уведомит вас о том, что RHS составляет 33 бита, а LHS - 32 бита и что самый старший бит будет потерян.Строка может быть более просто закодирована как:
assign pc_plus_4 = pcinc;
Последняя строка - ошибка компиляции для одного симулятора, который я использую.Вы явно не объявляли ширину сигнала branch_aadr
, а ширина константы 0
не указана.