System Verilog 语法

上一篇 / 下一篇  2017-10-27 19:02:37 / 个人分类:语言

最近看到一篇介绍syssim verilog的文章,比较简短,花个把小时简单学习一下。

数据类型:
1. logic
2. 双状态数据类型:byte,shortint,int,longint
3. 定宽数组
越界读取时,logic返回X,双状态返回0,线网未驱动输出Z。
4. 数据常量
数组操作:
1. for / foreach: foreach 自动遍历数组中元素
2. 数组复制和比较
3.合并数组
    [3:0][7:0]bytes;//4个字节组装成32bits
    ->bytes(7~0,7~0..,7~0)
4. 动态数组
     申明使用空下标[]。调用时使用new[]分配空间。
5. 队列
     申明需要使用带有$的下标:[$].
6. 数组排序
    x.reverse ; x.sort ; x.rsort ; x.shuffle
7. typedef创建新类型
    typedef reg[7:0] opreg_t;
    opreg_t op_a,op_b;
8. 枚举类型
    只能用于本模块。
9. 过程语句和子程序
    1)begin .. end
    2) continue:表示跳过本轮循环剩下的语句直接进入下一轮循环
    3)Break:用于终止并跳出循环
    4)task. function, void(ignore return value)
    5) ref & const 传递数组 :const ref 定义的数组不能被子程序修改
10. 接口中的logic和wire
       接口中过程赋值语句驱动异步信号,则必须用logic类,wire只能被连续赋值语句驱动.
11. 接口中的双向信号: wire[7:0] data; or inout data.

下面是面向对象的基础知识:
1.class
2.object
3.handle
4.property
5.method
6.prototype

1)new[] & new() : new[]建立含有多个元素的数组。new()使用参数设置对象的值,比如 class transaction, transaction t; t=new().//创建一个handle,并分配一个新的t。
2)使用new 复制一个对象:data =  new; dst = new data;

条件约束:
“->” == if true begin else begin

线程:
1)begin...end 顺序执行
2)fork...join并行执行

systemVerilog 与 C:
SV支持直接编程接口(DPI),只要使用import语句将c语言子程序导入,即可当作SV子程序调用。

只是简单概念的摘录,慢慢积累。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

我的栏目

日历

« 2017-11-23  
   1234
567891011
12131415161718
19202122232425
2627282930  

数据统计

  • 访问量: 449
  • 日志数: 8
  • 建立时间: 2017-09-24
  • 更新时间: 2017-11-16

RSS订阅

Open Toolbar