System Verilog学习笔记(六)——SV设计特性

本文概述了SystemVerilog学习中的关键点,包括接口设计、数据类型扩展(如int、枚举和结构体)、类型转换、包的使用以及always_comb、always_latch和always_ff等过程语句的特性。重点介绍了赋值操作符、向量填充和case语句的unique和priority版本。
摘要由CSDN通过智能技术生成

System Verilog学习笔记(六)——设计特性

可综合设计的主要优化

  • 添加接口(interface)从而将通信和协议检查进一步封装
  • 添加类似C语言的数据类型,例如int、byte
  • 添加用户类型自定义类型,枚举类型和结构体类型
  • 添加类型转换($cast(T,S)或’())
  • 添加包(package)从而使得多个设计之间可以共享公共类型和方法
  • 添加方便的赋值操作符和运算操作符,例如++、+=、===
  • 添加priority和unique case 语句
  • 添加组合逻辑always_comb、锁存逻辑always_latch和时序逻辑always_ff过程语句块

过程语句块

  1. always_comb
    always_comb可以自动嵌入敏感列表;
    可以禁止共享变量,即赋值左侧的变量无法被另一个过程块赋值;
    若其表示的不是组合逻辑,会发出警告;
    always_comb在仿真0时刻会自动触发一次,无论在0时刻是否有敏感信号列表中的信号发生变化。always不会在仿真0时刻触发。
  2. always_latch
    always_latch表示锁存逻辑,且自动插入敏感列表;
  3. always_ff
    always_ff用来表示时序逻辑
always_ff @(posedge clock, negedge resetN)

敏感列表必须指明posedge或者negedge,从而使得EDA工具实现同步或者异步的复位逻辑。

赋值操作符

赋值操作符

Verilog没有简单的方法可以对向量填充1。
SV可以通过’0,'1,'z,'x来分别填充0,1,z和x。这样代码可以根据向量的宽度自动填充。

case语句

SV提供了unique和priority的声明,结合case,casex和casez来实现case对应的硬件电路。
unique case要求每次case选择必须只能满足一条case选项;
unique case不能有重叠的选项,即多个满足条件的选项。
unique case可以并行执行。
priority case表示至少有一个case选项满足要求;如果有多个case选项满足时,第一个满足的分支会优先执行;priority case的逻辑与if…else的逻辑一致;

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值