在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
endclassmodule top (input  logic [63:0] a, b,output logic [63:0] y);always_comby = Functions #(64)::adder(a, b);
endmodule

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

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

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


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

转载于:https://www.cnblogs.com/wind330/p/5041775.html

可综合的SystemVerilog:参数化函数/任务相关推荐

  1. Chapter 6 : 综合数据和分组函数

    Chapter 6 : 综合数据和分组函数 COUNT AVE SUM MAX MIN 分组函数必须要在group by 的情况下才可以使用奥 select count(*) from emp e; ...

  2. Jmeter之参数化函数助手_randomstring

    上次讲到的是CSVread函数来获取测试数据的参数化,这次使用randomstring 有的时候有些参数是不断变化的,我们如果利用csv去做,还是要准备很多不同的数据,但是我们如果用randomstr ...

  3. matlab 函数 向量参数,Scipy integrate(quad,quadration,nquad)不能集成向量参数化函数?等效函数(MATLAB works)...

    我正在将一些代码从MATLAB转换为python,并且正在努力获得一个函数,该函数以数组参数(作为参数)来使用Scipy进行集成.在 我已经将代码简化为一个在Scipy中产生相同错误的基本示例,而等效 ...

  4. jmeter参数化-函数助手—CSVRead

    使用场景:不同的测试数据,做批量并发请求时,可以使用. 利用函数从文件里面读取数据,我们这里只讲解csv的 步骤: 准备好csv格式的数据 准备好接口,还是注册接口:参数有 mobilephone以及 ...

  5. SystemVerilog——任务和函数(Tasks and Functions)[转]

    SystemVerilog从Verilog继承了任务和函数功能.任务和函数是两种用来定义子程序的方式.如果子程序需要消耗仿真时间,使用任务,否者子程序消耗仿真时间为0,则使用函数.另外,函数可以有返回 ...

  6. [文档].艾米电子 - 在综合中使用函数,Verilog

    对读者的假设 已经掌握: 可编程逻辑基础 Verilog HDL基础 使用Verilog设计的Quartus II入门指南 使用Verilog设计的ModelSIm入门指南 内容 1 概述 在Veri ...

  7. 用模板函数与函数指针完成行为参数化

    用模板函数与函数指针完成行为参数化 函数模板:参数类型.返回值类型不具体指定,用一个虚拟的类型代表,主要特点是通用性强. 函数指针:指向函数的指针. 行为参数化:功能函数作为参数,实现不同的功能只需要 ...

  8. SystemVerilog与功能验证

    目录 一.功能验证流程 二.验证手段.验证技术.验证方法学 三.数据类型与编程结构 四.并发进程与进程同步 五.面向对象编程 六.虚接口 七.随机测试 八.继承与多态 九.功能覆盖率 十.断言 一.功 ...

  9. pytest实战--参数化parametrize+前置fixture

    文章目录 参数化 parametrize 适用场景 一个典型的例子 前置fixture+参数化 适用场景 一个典型的例子 示例2 个人疑问? pytest既可以用来做单元测试,也可以用来做自动化接口测 ...

最新文章

  1. jdk12‘javac‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  2. HashTable和HashMap的区别详解
  3. 神策 2020 数据驱动用户大会:新愿景 + 新定位 + 新舰队正式亮相!
  4. string.Format出现异常输入的字符串格式有误的解决方法
  5. 安卓吸顶+下拉放大_Android自定义scrollView实现顶部图片下拉放大
  6. Qt的Xml操作QDomDocument
  7. BP神经网络python代码实现
  8. 修改UEditor编辑器上传图片大小限制
  9. PageOffice 安装使用说明
  10. Echarts示例大全 Demo合集网站
  11. 5214页PDF的进阶架构师学习笔记,阿里巴巴内部Jetpack宝典意外流出
  12. 小朋友排队问题(树状数组)
  13. 永远不能懈怠,要记住,黎明之前,最为黑暗
  14. 阿里云服务器安装jdk8版本
  15. 学好计算机的用途,学电脑的用途是什么
  16. 数据预处理之数据清洗
  17. 虚拟机Centos,登陆之后又弹回到登陆界面,无法进入系统
  18. You are trying to add a non-nullable field 'code' to business without a default; we can't do that...
  19. Camera | 2.MIPI、CSI基础
  20. 一个优秀的RPC框架需要考虑的问题

热门文章

  1. jquery ajax中使用jsonp的限制[转]
  2. MyBatis源码骨架分析
  3. Servlet——ServletConfig
  4. bootstrap ui
  5. 4698: Sdoi2008 Sandy的卡片
  6. Objective-C 内存管理retain和release
  7. 【BZOJ 3620】 3620: 似乎在梦中见过的样子 (KMP)
  8. ThinkPHP框架学习之使用数组进行查询
  9. 用STL给C++充电:第一部分
  10. sql server 2008手工修改表结构,表不能保存的问题与解决