system verilog语法
几乎通用的数据类型——logic
是4态数据类型的变量,只允许使用一个驱动源,或者来自于一个或者多个过程快的过程赋值。
位宽可变,logic类型可以替代所有其他类型,包括reg类型。
wire数据类型仍旧使用的原因:多驱动源总线,如多路总线交换器;双向总线(两个驱动源)。
bit是两态数据类型。
system verilog对端口的定义没有限制。
typedefine——用户定义的类型,允许生成用户定义的或者容易改变的类型定义,好的命名规则用“_t”做后缀。
aaa@qq.com*
begin
next=’x;
…….
//*表示对语句进行“填满”的操作。’x等价于’bx,’z等价于’bz,’1所有位赋为1,’0所有位赋为0。
特定逻辑过程
always_comb 组合逻辑过程 ,与aaa@qq.com*差别不大
always_latch 生成锁存器
always_ff 时序逻辑
void函数——与task不同
1、不能等待
2、不能包括延迟
3、不能包括事件触发
4、被always_comb搜寻到的信号自动加入敏感列表
module comb(output bit_t [2:1]y,input bit_t a,b,c);
always_comb//等价于aaa@qq.com(a,b,c).如果是aaa@qq.com*,则等价于aaa@qq.com(a).
orf1(a);
function void orf1;
input a;
y[1]=a|b|c;
endfunction
always_comb//等价于aaa@qq.com(a)
ort1(a);
task ort1;
input a;
y[2]=a|b|c;
endtask
endmodule
priority和unique——设计意图
枚举类型 enum{ } 变量名
隐含的端口连接(sv新增的)
.name 例如:multiplier multiplier(.mult, .mop1, .data); 名称要求一致
.* 例如:multiplier multiplier(.*);//名称要求一致
说明:
1、在同一个实例引用中禁止混用.*和.name端口;
2、允许在同一个实例引用中使用.name和.name(signal)连接;
3、也允许在同一个实例引用中使用.*和.name(signal)的连接;
4、必须使用.name(signal)的情况:
位宽不匹配 inst u1(…, .data(data[7:0]),…);
名称不匹配 inst u2(…,.data(pdata), …);
没有连接的端口 inst u3(…,.berr(),. …);
packed和unpacked的数组
未打包的位数组 bit a [3:0];
打包的位数组 bit [3:0] p; //打包的索引可以分块访问,可以对整个存储器进行操作。而未打包的只能按位访问。
数据的组织
struct 与c语法相似,这里分为struct packed
接口的使用
接口的详细使用见ppt80页。https://wenku.baidu.com/view/bb832e8f6529647d2728528b.html
上一篇: Oracle关联两张表批量修改某个字段
下一篇: Sql Server 常用的日期函数
推荐阅读
-
java应用性能调优之详解System的gc垃圾回收方法
-
In .net 4.8,calculate the time cost of serialization in BinaryFormatter,NewtonSoft.json,and System.Text.Json.JsonSerializer.Serialize
-
什么是静态内部(Static Inner)类,语法要注意什么?
-
什么是实例内部类 Instance inner class有什么语法?
-
详解JS中遍历语法的比较
-
JSP入门教程之基本语法简析
-
VBS、ASP代码语法加亮显示的类
-
又一款MVVM组件 Vue基础语法和常用指令(1)
-
ORA-27300: OS system dependent operation:sendmsg failed with status: 105 ORA-27301: OS failure message: No buffer space available
-
[译]PEP 380--子生成器的语法