2017-05-23 11 views
1
class generator(options: Map[String, Any]) { 
    trait for_module extends abstractModule { 
    //generates trait with params 
    } 
    class my_module extends abstractModule with for_module 
    def exec = { 
    ... 
    Driver.execute(Array("-tn", "SomeName", "-td", "SomePath"),() => new my_module) 
    ... 

    } 
} 
object generator { 
    def main(args: Array[String]) = { 
    ... 
    val a = generator(someopts) 
    a.exec 
    } 
} 

이 코드에서 -tn은 최상위 레벨 회로의 이름을 변경해야하지만 최상위 파일 이름 만 변경해야합니다. 상위 모듈 이름은 "module generatormy_module"과 비슷하지만 params에서 이름을 동적으로 생성하려고합니다.치즐 3의 최상위 이름 지정

데이터 버그입니까? 또는 최상위 모듈 이름을 어떻게 변경할 수 있습니까?

PS : suggestName 메서드도 작동하지 않습니다!

답변

0

플래그 -tn은 최상위 레벨 회로를 변경하기 위해서만 지정하고 파일 이름에 기본값으로 사용하기위한 것이 아닙니다. Chisel 모듈의 이름을 지정하는 방법은 desiredName 메서드를 재정의하는 것입니다. 모듈 생성자에 대한 인수로이를 재정 의하여 더 프로그래밍 가능하게 만들 수 있습니다. 위의 예를 수정 :

class generator(options: Map[String, Any]) { 
    trait for_module extends abstractModule { 
    //generates trait with params 
    } 
    class my_module(name: String) extends abstractModule with for_module { 
    override def desiredName = name 
    } 
    def exec = { 
    val topName = "SomeName" 
    Driver.execute(Array("-tn", topName, "-td", "SomePath"),() => new my_module(topName)) 
    ... 

    } 
} 
object generator { 
    def main(args: Array[String]) = { 
    ... 
    val a = generator(someopts) 
    a.exec 
    } 
} 
+0

작동합니다! 감사 –