模块(module), 程序块(program)的区别

news/2024/5/19 17:25:49 标签: 学习, 开发语言, systemverilog

文章目录

    • module
    • program
      • 注意点
    • 区别

module

在verilog中,模块可以用来描述从简单的门元件到复杂的系统 (例如一个微处理器)的任何一种硬件电路。模块除了可以为硬件建模外,也可以用来封装验证平台,在模块内部,我们可以例化采用模块定义的DUT和采用 program或者class封装的验证平台。

program

程序块可以被看作是一个具有特殊执行语义的模块。相当于软件领域。一旦被声明,一个程序块可以在需要的层次位置 (典型情况是顶层)中被实例化,并且它的端口可以像任何其他模块一样。程序块内的类型和数据声明对于程序块的作用范围来讲是本地的,并具有静态的生命周期。当然,我们也可以通过 automatic将程序块声明为自动存储的。

注意点

  1. 在程序块中要采用非阻塞赋值语句 (<=)对时钟(clocking_block)中的信号做驱动。
  2. 在程序块中的本地变量进行赋值要采用阻塞赋值语句 (=)。
  3. 程序块中可以有任务、函数、类和 initial块,但不能有always块。
  4. 对封装验证程序的程序块采用 automatic来定义。
  5. 程序块可以消除验证平台和设计之间的竞争。

区别

  1. module里可以定义program,而program里不能定义module。
  2. module里不能调用program里定义的task, function,而program可以调用module里定义的task和function;
  3. program里不能例化module,interface以及其它program
  4. program是在Ractive时域执行的,而module在active时域执行的,所以program在module后执行,可以解决竞争冒险现象
  5. 若program中有always块,则无法结束运行,可使用 $exit 强行结束

http://www.niftyadmin.cn/n/1788004.html

相关文章

IC笔试常见问题

文章目录什么是建立时间与保持时间?什么是竞争和冒险什么是亚稳态摩尔状态机和米勒状态机的区别什么是建立时间与保持时间? 建立时间(Setup Time)是指触发器的时钟信号上升沿到来以前,数据能够保持稳定不变的时间。输入数据信号应提前时钟上…

常见的idea问题记录

Information:java: javacTask: 源发行版 8 需要目标发行版 1.8 diamond types are not supported language level 5 按照如图设置即可解决问题 转载于:https://www.cnblogs.com/angleshoot/p/10976266.html

入门CMOS门电路

文章目录CMOS定义PMOS与NMOS两种MOS管的定义CMOS反相器用CMOS搭建逻辑门与非门或非门三态门CMOS定义 在CMOS集成电路中,以金属-氧化物-半导体场效应晶体管作为开关器件。这种器件简称MOS管。作为CMOS电路,具有功耗低,抗干扰能力强&#xff0…

jQuery内容

jQuery内容: 选择器筛选器样式操作文本操作属性操作文档处理事件动画效果插件each、data、AjaxjQuery对象 jQuery对象就是通过jQuery包装DOM对象后产生的对象。jQuery对象是 jQuery独有的。如果一个对象是 jQuery对象,那么它就可以使用jQuery里的方法&am…

dvt软件使用问题记录

首先将安装包解压缩到C:\dvt_eclipse(或自定义路径,我解压缩到D:\dvt_eclipse),然后复制license.dat到刚刚定义的路径中设置环境变量: DVT_HOMEC:\dvt_eclipse DVT_LICENSE_FILEFLEXLM DVTLMD_LICENSE_FILE…

【不重叠序列检测-状态机方法实现】

文章目录题目描述解题思路:状态转移图dut和tb代码:波形图题目描述 编写一个序列检测模块,检测输入信号(a)是否满足011100序列, 要求以每六个输入为一组,不检测重复序列,例如第一位数…

第二阶段冲刺10

1、整个项目的预期任务量(任务量所有工作的预期时间)和目前已经花的时间(所有记录的‘已经花费的时间’),还剩余的时间(所有工作的‘剩余时间’)。 第二阶段工作预期任务:完成整个Ap…

XSS Challenges

Stage #1 无过滤&#xff0c;</b><script>alert(document.domain)</script><b> Stage #2 注入点在input标签内&#xff0c;前后闭合标签中间加script语句 "><script>alert(document.domain)</script>< Stage #3 传递了两个参数…