设为首页 加入收藏

TOP

可综合的SystemVerilog:参数化函数/任务
2017-10-10 12:26:46 】 浏览:8814
Tags:综合 SystemVerilog 参数 函数 任务

在Verilog中,参数化模块被广泛应用。参数可重新定义保证模块的可配置性及可复用性。但是,函数及任务并无法像模块一样被参数化,减弱了Verilog的描述化能力。

SystemVerilog提供了一种方式解决上述限制,在参数化的类(class)中使用静态(static)函数/任务。调用函数/任务时,重新定义类的参数,例程如下:

virtual class Functions #(parameter SIZE=32);
	static function [SIZE-1:0] adder (input [SIZE-1:0] a, b);
		return a+b;
	endfunction
endclass

module top (input  logic [63:0] a, b,
			output logic [63:0] y);
	always_comb
		y = Functions #(64)::adder(a, b);
endmodule

参数化使我们只需要维护一个版本的函数/任务,而不是像原先因不同的数据类型,数据大小产生多个代码版本。该功能有两个使用限制:

  • 类必须被声明为**虚拟(virtual)**类
  • 类必须定义在**$unit**命名空间中

上述代码在Vivado 2014.3中可综合通过,但是Synplify-Pro 2013.03不支持virtual class关键字声明。


**下篇预告:**可综合的SystemVerilog:命名空间

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇视频图像处理项目伊始 下一篇USB2.0学习笔记连载(一):CY7C6..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目