Iverilog源码分析 -- VPI scope的实现

本文深入探讨了Verilog语言中scope的概念及其在IVerilog编译器中的实现方式,包括module、task、function等不同类型的scope,并详细介绍了这些scope在代码中的作用及其实现细节。

在Verilog里面采用module/endmodule 来组成整个design的hierarchy结构, 比如, 如下的代码:
在这里插入图片描述
会产生如下的hierarchy结构:
在这里插入图片描述
目前在Verilog的LRM, 有如下几种scope类型:

  • Module
  • Task
  • Funcion
  • Named block

在IVerilog 里面, 定义了如下6中scope以及相关的定义如下:

  • vpiModule

  • vpiTask

  • vpiFunction
    上述3中, 比较常见, 忽略例子;

  • vpiNamedBegin
    begin … end之间的语句是串行执行的;

         begin:  scope_name
              declaration;
              state1
              state2
              ...
              stateN
         end
    
  • vpiNamedFork
    fork … join之间的语句是并行执行的;

         fork:  scope_name
              declaration;
              state1
              state2
              ...
              stateN
         join
    
  • vpiGenScope

    1 、generate-for语句必需用genvar关键字定义for的索引变量;
    2、 for的内容必须用begin…end块包起来,哪怕只有一句;
    3、 begin…end块必须起个名字;

    module gray2bin1 (bin, gray);
    parameter SIZE = 8; // this module is parameterizable
    output [SIZE-1:0] bin;
    input [SIZE-1:0] gray;
    genvar i;generate
    for(i=0; i<SIZE; i=i+1)
         begin:bit
                assig
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值