微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog任务的问题~

verilog任务的问题~

时间:10-02 整理:3721RD 点击:
发现任务有点类似与模块。请问为什么还要任务啊?调用另外一个模块不可以吗?是不是两者在综合的时候有所不同啊?还是仅仅跟高级语言那样为了语言的灵活?

verilog任务的问题~
task与module绝对是两个不同的概念,而且建议初学者别在设计代码中使用task。
task会被综合为组合逻辑,建议看看verilog的golden rule。

verilog任务的问题~
task并不都是组合逻辑的。
你也可以在task里用FlipFlop(寄存器),同样function也可以。

verilog任务的问题~
task里用FF是可综合的吗?stanley能否给出示例?实话说我很少在设计中用task,一般只在testbench中使用。

verilog任务的问题~
module一般用来做可以综合的代码,
task主要用在testbench,好像还没看见谁在综合代码中用task,要实现组合电路,用function更合适。但仿真时,task功能强得多,也结构化的多,好的testbench绝对离不开大量的task。

verilog任务的问题~
iamchine:
     或者你说得是对的,我也从来没在design(可综合的)里用过task,也没有试过。
"好的testbench绝对离不开大量的task", 这句却不是很认同。太多的task有时并不是好事,只有功能相对独立的,才建议用task. 例如CPU写,CPU读等.

verilog任务的问题~
1、从执行方面看,function和task是顺序执行,非并发执行,即只能用于always或intial块中;
2、从功能方面看,function表示组合逻辑,task表示组合逻辑或时序逻辑逻辑;
3、从c语言的对应来看,function基本上相当于c语言中的表达式宏,而task相当于c语言中的内联函数;
   在verilog中引入function和task可以极大提高结构化描述能力,增强可读性,但由于verilog是非强类型语言,使用task作时序描述时需非常小心,否则容易出错;至于module和task,从1可以看到两者的明显区别,module可看作并发语句,而task只能看作为顺序语句。

verilog任务的问题~
更正:
1应为:
1、从执行方面看,task是顺序执行,非并发执行,即只能用于always或intial块中,function可以用于并发或顺序语句中;

请教task
请问各位高人,在task中可以并行使用initial语句吗?

task主要用在testbench中,在initial中例化task

设计中尽量少用吧
tb随便写

学习中。

受益匪浅啊



    task 是顺序执行,initial是并发执行,多以task中不能用initial语句还有always语句!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top