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

tech2024-08-16  50

自我学习记录——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)