verilog中如何调用另一个module里面的task?include有用吗?我试了没成功,望高人解答

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog中如何调用另一个module里面的task?include有用吗?我试了没成功,望高人解答相关的知识,希望对你有一定的参考价值。

晕死,task啊,我敢拿它当信号用么?Reserved!
现在我试了下只能将task单独提出来是可以include的,但不会直接在模块外调用它

参考技术A 用<module>.<task>的方式,module就是包含task的模块名,task就是任务名。
例如你的模块名是comp,里面有个任务叫sum(a,b,c);
在当前的模块下先例化comp my_comp();
使用任务就用my_comp.sum(a,b,c);
参考技术B task是信号?还是一个模块?
1.如果是信号,a,要用的模块是被调用的上层,则在被调用的头定义中加入 out task;如果不是在一起的则在他们共同的顶层中加wire task; 同时要在各自中 加 in 和out task;
2,如果是模块,则在要用的模块中直接调用就可以了,自动会添加的。

verilog模块例化

我在电路中设计了2个子模块,2个子模块中用到了1个相同的输出端口dir(245芯片数据流向控制)
module md1(
....
output dir;
...
);
module md2(
....
output dir;
...
);

module top(
....
output dir;
...
);
顶层模块例化时提示,
which fans out to "dir",cannot be assigned more than one value
是不是我这种方法是错误?烦请各位高手指点,谢谢了!

不能用同一个输出端口,可以这么思考:你在顶层模块中要例化某个输出端口,而此输出端口是从属于两个不同模块的,所以无法区分到底是例化哪个模块。也就是出现了歧义。建议把两个模块的输出端口改成不同的名字。追问

把md1,md2的dir输出端口名字分别改为dir1,dir2还是有这个错误!

追答

这个应该是和你的设计细节有关了,因为你给的信息不多,所以暂时分析不了太多的原因。

参考技术A 顶层模块也要改成两个输出啊
如果是共用要加个复用器

以上是关于verilog中如何调用另一个module里面的task?include有用吗?我试了没成功,望高人解答的主要内容,如果未能解决你的问题,请参考以下文章

Verilog中,如何实现一个module调用另一个module中的reg变量?

verilog的module中怎样循环调用另外几个module?

verilog 模块端口说明

如何编写一个基本的 Verilog Module(模块)

如何能将自己的verilog模块封装成像altera的IP核一样的呢?

怎样使用python的argv命令调用另一个文件里面定义的变量?