BSV_Tutorial_cn icon indicating copy to clipboard operation
BSV_Tutorial_cn copied to clipboard

用户定义的模块,其方法可以写调度注解吗

Open zck15 opened this issue 3 years ago • 1 comments

官方预定义的模块,其method是有调度注解来约束的。rule也可以用调度Attribute来约束。

但是我在定义一个模块时,不知道如何来表示对其method的约束: 比如我定义了一个模块,有两个method,我期望这两个method不能在同一周期调用(类似调度注解中的C); 或者两个method,我期望同时有rules想要调用时,其中一个的urgency更高(类似rule的descending_urgency); 或者我想规定某个method的urgency永远高于模块内的某个rule。

我发现好像没有办法在定义模块的时候就定义这些约束,好像只能在更高层模块实例化时,规定调用这些method的rule的约束。 但是这样没法在模块定义package中表现出想要的约束,并且每次调用都要写一个attribute。

想请教一下,有没有什么好的解决方法?或者我的理解和使用方式是否有误?

zck15 avatar May 22 '22 09:05 zck15

你好,有一个我也觉得不太优雅的方法:在模块内部署一些没有数据含义、只起到调度控制作用的子模块。

比如你想让 method1 和 method2 冲突(可能本来你想用调度注解 preempt,但发现用不了),那么你可以在模块内定义一个 mkWire ,让 method1 和 method2 都去写这个 Wire ,这样可能能达到让它俩 conflict 的效果。

WangXuan95 avatar May 23 '22 03:05 WangXuan95