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
-
- 项目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
- always_latch 的用法
always_latch begin
if(!r_set_n)
enable <= 0;
else if(ready)
enable <= 1;
else
enable <= 0;
end
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赋值
2.3枚举类型
枚举类型主要用在状态机状态变量的定义时。
2.4接口
dac61402_drive u1(.* );
2.5结构体
未完待续