2017-07-05 4 views
1

definiert. Sagen, es gibt ein B Modul, in dem A eine Instanz ist.Port-Name Problem von denen sind in der BlackBox

class B extends Module { 
    … 
    val u_A = Module(new A) 
    // the way to hook u_A’s port is the issue 
} 

Die Beschreibung A Modul:

class A extends Module { 
    val io = IO(new Bundle{ 
    val a = Output(Bool()) 
    }) 
    io.a := true.B 
} 

Die Erklärung von A BlackBox:

class A extends BlackBox { 
    val io = IO(new Bundle{ 
    val io_a = Output(Bool()) // HAVE to define port name with io_* prefix otherwise ... 
    }) 
} 

Sie MÜSSEN den Portnamen in BlackBox mit Präfix IO_ definieren sonst die erzeugte Portliste in B RTL wird nicht mit dem A Modul übereinstimmen. für das Modul Instanziierung, die Art und Weise U_A- Hafen Haken

u_A.io.a 

für die BlackBox Instanziierung ist, die Art und Weise U_A- Hafen zu Haken ist

u_A.io.io_a 

Können Sie mir über Enlight, ob es eine weitere convinience Weg?

Antwort

1

Der Unterschied zwischen BlackBox und Module io emission ist eine Legacy-API für eine bessere Integration mit Verilog IP, bei der der Chisel-Designer wenig oder gar keine Kontrolle über den Verilog hat. Wir denken über eine klarere und strukturierte Art nach, mit solchen "unsichtbaren" Bündeln umzugehen, die ihre Präfixe fallen lassen, da es andere Fälle gibt, in denen sie nützlich wären.

Um Ihre Frage zu beantworten, gibt es einen bequemeren Weg. Wir experimentieren mit sogenannten "Multi-IO-Modulen", in denen Sie mehrere Ports innerhalb eines Moduls IO(...) verwenden können. Sie brauchen diese Funktion hier eigentlich nicht, aber sie gibt uns chisel3.experimental.ExtModule - eine Alternative zu BlackBox. ExtModule wird das Präfix nicht automatisch gelöscht. Wenn Sie es also anstelle von BlackBox erweitern, erhalten Sie das gewünschte Verhalten.

+0

darf ich fragen, dass misel3.experimental das Paket für diese neuen Experimente ist? –

+0

Ja, wir fügen neue Funktionen in 'misel3.experimental' hinzu, um klarzustellen, dass wir eine neue API einführen, die sich ändern kann. Wir beabsichtigen nicht, diese APIs zu ändern, wir wollen nur klarstellen, dass wir – jkoenig

Verwandte Themen