Better_WD的个人空间 https://blog.eetop.cn/1645454 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

System Verilog 语法

已有 1694 次阅读| 2017-10-27 19:02 |个人分类:语言|系统分类:硬件设计

最近看到一篇介绍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子程序调用。

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


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 1

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 0

    评论
  • 743

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-27 10:14 , Processed in 0.022542 second(s), 15 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部