#chisel
#chisel
Вопрос:
Я пытаюсь сохранить значение имени сигнала в сгенерированном Verilog. Значение Val является динамически выбираемым элементом из вектора chisel (Vec). Ниже приведен мой код тестового примера:
val myVec = Reg(Vec(10,UInt(32.W)))
val selected = myVec(io.sel).suggestedName("selected")
Я вижу в сгенерированном verilog мультиплексор, который принимает выбранный элемент из myVec. Однако у него есть случайное имя _T something . suggestName()
не помогло. Я также пробовал @chiselName
без каких-либо улучшений.
Причина, по которой я хочу, чтобы у этого сигнала было значимое имя, заключается в целях отладки (функционально это правильно)
Ответ №1:
Это известная ошибка, извините за путаницу / разочарование. Замалчивая некоторые детали, для Chisel сложно определить разницу между динамическим индексом как значением правой руки (чтение) и значением левой руки (запись), что затрудняет его определение.
Вы можете обойти это, подключив вывод динамического индекса к Wire
:
val myVec = Reg(Vec(10,UInt(32.W)))
val selected = WireInit(myVec(io.sel))
Имя Wire
будет присвоено с помощью обычных механизмов so @chiselName
, suggestName
или будет работать стандартное отражающее именование.
Исполняемый пример с использованием Chisel v3.3.2: https://scastie.scala-lang.org/UWYCtq37ReaVcRrNBxRlOA