我正在嘗試根據布爾引數實體化兩個鑿子模塊之一。
val useLib = true
val myModule = if(useLib) Module(new MyModule1()) else Module (new MyModule2())
但這不起作用。Chisel 無法識別io介面:
[error] /path/to/source/mysource.scala:59:13: value io is not a member of Any
[error] myModule.io.pdm <> io.pdm
[error] ^
當然,MyModule1()并且MyModule2()具有相同的 io 介面。
是否可以像我們在 C 或 C 中使用前處理器那樣有條件地實體化 Module() ?
uj5u.com熱心網友回復:
我寫了一篇關于從 Chisel 3.4 升級到 3.5 的新檔案來解決這個問題。它尚未在網站上發布,但會在 Chisel 3.5.0-RC2 發布后發布。這是檔案的鏈接:https : //gist.github.com/jackkoenig/4949f6a455ae74923bbcce10dbf846b5#value-io-is-not-a-member-of-chisel3module
在排序,從Scala的角度看,MyModule1與MyModule2居然不具有相同的介面,即使它們在結構上相同。訣竅是將該介面分解為一個命名Bundle類,然后在每個模塊中使用它。然后讓每個具有該介面的Module擴展 a trait,然后 Scala 就會知道這些介面是相同的。
有關更多資訊和示例,請參閱上面鏈接的檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/384757.html
上一篇:如何在SparkSQL中分配非唯一遞增索引(索引標記),在加入來自另一個資料幀的特定值時設定回0
下一篇:Log4J漏洞是否會影響Snowflake的Snowpark庫?SLF4J是否在Snowparkapi中的任何一點充當Log4J的外觀?
