О синтаксисе Chisel

Я новичок в этом.

У меня есть вопросы по коду.

Чем отличаются эти коды:

val myVec = Vec (5) {Fix (width = 23)}

и

val myVec = Vec.fill (5) {SInt (ширина = 23)}

что значит "заполнить"?

Благодарность


person jjlin    schedule 24.10.2016    source источник


Ответы (1)


«Fill» - это Scala-ism, для инициализации таких вещей, как списки с элементами:

scala> val x = List.fill(3)("foo")
x: List[java.lang.String] = List(foo, foo, foo)

Точно так же Vec.fill(5){SInt(width=23)} возвращает Chisel Vec, где каждый из 5 элементов установлен на целочисленный провод со знаком 23b.


Однако, если вы используете Chisel, вам следует перейти на Chisel3 (https://github.com/ucb-bar/chisel3/wiki), в котором новый синтаксис:

val myVec = Wire(Vec(5, SInt(width=23)))

Это создает Wire из 5-элементного вектора, состоящего из 23b целых чисел со знаком. (В Chisel3 любые провода должны быть явно намотаны).

person Chris    schedule 26.10.2016
comment
спасибо за ответ, хочу задать еще один вопрос. Могу ли я указать один элемент или ряд элементов этих векторов? например, пятый бит третьего вектора или биты с 4-го по 10-й третьего вектора. - person jjlin; 31.10.2016
comment
Не уверен, что понимаю, что вы имеете в виду, но все элементы заливки должны быть одного типа. Позже вы можете переопределить отдельные элементы. - person Chris; 01.11.2016
comment
Итак, если я хочу назначить или проверить один бит (или диапазон бит) этих векторов, как мне это сделать, чтобы я мог это сделать? Не могли бы вы дать мне простой код для объяснения? Я не знаком с Chisel и Scala, спасибо за терпение - person jjlin; 01.11.2016
comment
Я рекомендую вам просмотреть базу кода, такую ​​как rocket-chip, и поискать Vecs, и найти сценарий, который соответствует вашим потребностям. - person Chris; 02.11.2016