SystemVerilog声明的位置(二)

本文介绍了Verilog中函数的局限性和SV中的包结构,包括全局参数、类型和任务函数定义,强调了包中变量的共享特性以及VCS和Vivado中包引用的位置差异。讲解了如何通过`include`引入条件编译以解决包导入问题,以及在不同编译域中的优先级规则。
  1. 在Verilog中不能定义全局的函数,如果多个设计中要用到,只能在每个设计文件中定义。SV中提供了包,可以定义公共或全局的参数(parameter,localparame和const),自定义类型,任务和函数(前面必须要加automatic,个人理解:非共享的,每次例化会单独分配一块电路资源),但是不要在在包中定义变量,因为包中变量为所有导入变量的文件所共享(可以理解为软件里的静态变量)。为了更容易识别出文件的类别,包文件最好以.pkg作为后缀名。定义好之后,在需要使用的module文件中import包就可以了。如果没有import包文件,那么直接在module中使用的时候,需要加上包名(如图2)。

图1:
在这里插入图片描述
图2:
在这里插入图片描述

  1. 如果每次引用的时候都需要加上包名太繁琐了,那么就需要在module的前面加上import。但是VCS和Vivado中引用package有一些区别,如果在模块端口列表中使用包中的成员,那么import的位置在两个编译工具中有所区别,请看下面代码。
// 这段代码在VCS中能编译通过,在Vivado中编译不通过
import package_name;
module module_name
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值