2016-02-04 4 views
1

Я оберточной блок Мем в довольно общий модуль под названием «банк» и инстанцировании его в Vec следующим образом:no cloneType for Mem?

VAL баранов = Vec.fill (100) {Module (новый банк) .io}

Пока все хорошо. У меня возникают проблемы при подключении сигналов. Если подключить вектор сигналов модулей непосредственно к векторам сигналов, например так:

rams(i).in := io.ins(i) 
io.outs(i) := rams(i).out 

... и так далее, я не получаю никаких ошибок.

Если подключить их в нетривиальной модели, однако, например, на перекладине, я начинаю получать странные ошибки, которые, как представляется, относятся к обертке Mem я называю «банк»:

«параметризованных Bundle class ascenium.bank $$ anon $ 1 нужен метод cloneType. "

Эта ошибка является ошибкой долота. Может ли кто-нибудь сказать мне, что это значит и как это исправить?

Я могу предоставить исходный код, если потребуется.

+0

Я попытался заменить Mem() с Vec (Reg()) и не получил никакой радости. Такая же ошибка. – Mykland

ответ

1

Ошибка, как это обычно может быть решена путем добавления методы cloneType к классам можно определить:

class MyModule extends Module 
{ 
    // Your class definition here 
    override def cloneType = new MyModule.asInstanceOf[this.type] 
} 
+0

Это вызывает ошибку «не найден: значение MyModule». Очевидно, вы не можете ссылаться на класс внутри себя. – Mykland

+0

Глядя на исходный код долота, я вижу: 1) этот синтаксис неверен и должен быть чем-то вроде: переопределить def cloneType: this.type = new MyModule.asInstanceOf [this.type]; 2) cloneTypes, по-видимому, связаны с пакетами, а не с модулями, поэтому в любом случае включение его в модуль было бы неправильным. – Mykland

Смежные вопросы