返回介绍

8.1 简介(一般信息)

发布于 2020-09-09 22:55:47 字数 1137 浏览 1060 评论 0 收藏 0

过程语句通过下列语句引入:

initial   // 在仿真开始的时候使能这个语句,并且仅执行一次
final     // 在仿真结束的时候执行这个语句
always, always_comb, always_latch, always_ff
          // 永远循环执行(参见第九章有关进程的内容)
task      // 在任务被调用的时候执行这些语句
function  // 在函数被调用并返回一个值的时候执行这些语句

在一个进程内部,SystemVerilog具有下述类型的控制流:

  • 选择、循环及跳转
  • 任务与函数调用
  • 顺序和并行块
  • 时序控制

Verilog过程语句包含在initial或always块、任务或函数中。SystemVerilog加入了在仿真结束时执行的final块。

除了do...while、break、continue和goto语句外,Verilog包含了C语言的大多数语句类型。Verilog具有C语言所没有的repeat语句以及disable语句。使用Verilog dsiable语句来执行break和continue的功能要求用户说明块名字并引入了出错的机会。

SystemVerilog加入了类似于C语言的break、continue和return功能,它们并不要求使用块名字。

在外部检查的循环有时对于节省循环体的复制非常有用。为了具有这种能力,SystemVerilog加入了类似于C语言的do...while循环。

Verilog提供了两种重叠的方法来过程化地加入和移除变量的驱动:force/releas语句和assign/deassign语句。除了变量之外,force/releas语句还可以用来加入和移除线网的驱动。一条作用于当前是一个assign语句目标的变量的force语句应该过载那条赋值语句;然而,一旦force被释放,那么assign的效果又会重新可见。

基于某些相似而又完全不同的目的,assign关键字被普遍用来为线网定义永久的驱动值。

SystemVerilog的final块以一个任意但又确定的顺序执行。这是因为:final块被限制成允许在函数中使用的合法语句集。SystemVerilog没有指定语句的执行顺序,但实现工具应该定义一种规则来保持不同运行间的执行次序。由于final块主要用于显示统计信息,因此这种方法可以保证一个稳定的输出日志文件。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文