自我学习记录——SV环境的基础知识

自我学习记录——SV环境的基础知识

前言

记录秋招开始,自己的验证学习过程遇到的知识点,将每天的知识进行回顾,总结,本人现在所用教材是路桑的红宝书绿皮书,有着一颗想要学习验证的心,但是属于基础极其薄弱的新手小白。再次特意感谢路桑,感谢红宝书,绿皮书,感谢你们,此谨作为回顾每天学习内容的记录。
纵然缓慢,驰而不息!

一、数据类型基础知识
1.1数据类型按照二值逻辑与四值逻辑分类
二值逻辑:bit,int,longint,shortint,byte
四值逻辑:integer,reg,logic(only SV),net-type(wire,tri)
按照有无符号分类
有符号:byte,shortint,longint,int,integer
无符号:logic,bit,reg,net-type
1.2在有无符号方面,将有符号数转化为无符号数,需要类型转换操作unsigned’(signed_vec)
1.3转换分为显式转换与隐式转换
显式转换包括静态与动态转换
静态转换如上转换表达式前加上单引号;
动态转换需要引用对应函数等$cast(tgt,src)

二、模块定义
模块定义属于硬件的介绍,Verilog中在module中进行定义,input,output,inout(方向);端口名称的定义,两种方式,端口名与方向同时定义;先定义端口,再定义方向。

三、接口(interface)
接口属于接口与接口之间联系的桥梁
接口定义需要注意的地方:
(1)interface 可以定义input,output,inout端口
(2)建议使用logic,特殊情况(多驱动multi-drive的情况)除外,因为logic只允许单驱动
(3)interface与DUT连接时,注意收到的数据是四值逻辑的,simulator与DUT之间,硬件里面会出现X或Z的信号。
(4)接口里面可以出现过程语句(always,initial)和连续赋值语句(assign)
(5)注意接口信号的方向,使用modport进行声明,确定信号连接的方向,类似于插孔的作用
四、Program与module
(1)硬件放module,软件放program,软硬分开
program中不应该出现硬件行为相关的实例与语句,例如always,module,interface
(2)program语句由上而下,顺序执行
(3)program内部定义的内部定义的函数赋值方式:阻塞赋值;内部在外部接口的硬件信号使用非阻塞赋值
在此回顾阻塞赋值与非阻塞赋值的区别:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值