当前位置:   article > 正文

从传统设计到现代设计:SystemVerilog在RTL可综合设计中的优势_system verilog 优势

system verilog 优势

SV设计特性

1. 面向可综合设计的主要优化

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

2.SV中方便上手的可综合设计语法点

2.1过程语句块

  • SV添加了新的面向硬件的过程语句块,从而使得该语句块可以更清楚地表达设计者地意图。
  • always语句块被细分为了
    • 组合逻辑语句块:always_comb
    • 锁存逻辑语句块:always_latch
    • 时序逻辑语句块:always_ff
  • 通过以上细分地方式,降低了Verilog always语句块容易混淆方式,也使得仿真工具、综合工具、形式检查工具、于一检查工具和其它EDA软件工具可以更准确地检查设计地实现意图。

下面是各个语句的语法

  • always_comb 的用法:
always_comb begin 
 a <= b+1 ;
end
  • 1
  • 2
  • 3
    • 项目always_comb可以自动嵌入敏感列表
    • always_comb可以进制共享变量,即赋值左侧地变量无法被另一个过程块所赋值
    • 软件工具会检查该过程块,如果其所表示的不是组合逻辑,那么会发出警告
    • always_comb在仿真0时刻会自动触发一次,无论在0时刻是否有敏感信号列表中的信号发生变化,always不会,always只有在敏感信号列表发生变化时才会触发
  • always_ff 的用法
always_ff @(posedge clk, negedge r_set_n) begin
    if(!r_set_n) q <= 0;
	else q <= d;
end

  • 1
  • 2
  • 3
  • 4
  • 5
  • always_latch 的用法
always_latch begin
    if(!r_set_n)
        enable <= 0;
    else if(ready)
        enable <= 1;
    else
        enable <= 0;
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.2赋值操作符

对向量的快速赋值:
通过赋值 ‘1 , '0 , 'Z , 'X。来赋值全0、1、X、Z。

reg [63:0] date ;
date =64'hFFFF_FFFF_FFFF_FFFF; //verilog语言中进行全0/1赋值
date = '1; //SV语言中进行全0/1赋值
  • 1
  • 2
  • 3

2.3枚举类型

枚举类型主要用在状态机状态变量的定义时。

2.4接口

dac61402_drive u1(.* );

2.5结构体

未完待续

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/603040
推荐阅读
相关标签
  

闽ICP备14008679号