task与function

task和function主要是有助于代码的可重用性,都可以在module-endmodule之外声明

1.function

        1.1.function逻辑的综合

                function:一个只有1个wire型输出值、全是组合逻辑的函数,且函数名即输出信号名,小括号中按顺序例化输入信号。

                由于function中没有任何时序结构,function只能综合出组合逻辑。

        1.2.function的使用

                ①因function全为组合逻辑,即if-else、case等分支应定义完全,避免生成latch。

                ②fucntion只用于综合成组合逻辑。但是,fucntion的最终结果可以用作D触发器的输入。

                ③fucntion不应包括延迟(#)或事件控制(@,wait)语句。

                ④fucntion可以调用其他fucntion,但不能调用task。

                ⑤fucntion在调用时会返回一个值。

                ⑥fucntion内声明的parameters,作用范围仅在本地,并且不能在fucntion之外使用。

2.task

        2.1.task逻辑的综合

                虽然在task中可以有@等时序控制结构中,它仅适用于仿真。综合工具会忽略所有task中的时序结构。因此,如果task中存在时序控制结构,可能会存在仿真和综合不匹配的现象。

                因此,在可综合verilog中一般只会使用task综合基本的组合逻辑,在testbench中调用带有时序控制结构的task具有较好的通用性。

                以下是组合逻辑task的示例,即comb_task,执行输入in1的位或(OR)。 注意int_out1和int_out2的声明是reg型,因为task的输出只能通过reg而不是wire接收:

        2.2.task和module的区别

                ①不能在task中例化module,可以在module中调用task。

                ②Task中的逻辑不能够在floorplan中定义为block进行pre_place布局,只是sea-of-gates;而Module可以在floorplan中定义为block,进行pre_place。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值