Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
zck15 opened this issue May 22, 2022 · 1 comment
Open

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

zck15 opened this issue May 22, 2022 · 1 comment

Comments

@zck15
Copy link

zck15 commented May 22, 2022

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

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

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

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

@WangXuan95
Copy link
Owner

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants