相关文章推荐
纯真的冲锋衣  ·  python数据可视化 - ...·  5 月前    · 
礼貌的凉面  ·  Create SVG / XML ...·  1 年前    · 
  • 约束随机(constrained random)
  • 线程控制通信(process control and communication)
  • 功能覆盖率(function coverage)
  • 外部语言编程接口(Direct Programming Interface)
  • 断言(assertion)
  • UVM的类可以按照类库地图大致分为以下几类:

  • 工厂(factory)类
  • 事物(transaction)和序列(sequence)类
  • 结构创建(structure creation)类
  • 环境组件(environment component) 类
  • 通信通道(channel)类
  • 信息报告(message report)类
  • 寄存器模型(register model)类
  • 线程同步(thread synchronization )类
  • 事物接口(transaction interface)类
  • Verilog的数据类型

  • Verilog 语言提供两种基本的数据类型,即变量类型(variables)和线网类型(nets),这两种类型都是四值逻辑,即可表示0,1,X和Z值
  • 例如 reg,integer 和time 等变量类型可以用来存储组合逻辑或者时序逻辑的值
  • 例如wire,wor,wand 和其它线网类型用来连接硬件模块,以及提供特殊的线网驱动解决方案
  • Verilog 线网类型
  • 线网用于建模硬件设计中的连接线路,而线网的值由线网驱动器所决定。
  • 驱动器可以是门或模块的实例,或者连续赋值的输出。
  • 变量类型保存在initial、always、task和function内赋的值。
  • 变量只能用过程赋值来完成
  • 类型是integer或time的变量一般像有相同数量位数的reg 一样运转。
  • 在表达式中integer的值作为有符号数处理,而reg或time的值作为无符号数处理
  • 用reg描述逻辑,integer描述循环变量和计算,real在系统模型中使用,time和realtime 保存测试装置的仿真时间。
  • Verilog中的变量和线网类型均是 四值逻辑
  • SV添加了新的数据类型来帮助设计和验证工程师
  • SV将硬件信号区分为“类型”和“数据类型”。
  • 类型即表示该信号为 变量(var) 或者线网类型(wire)
  • 数据类型则表示该数据是四值逻辑(logic)或者二值逻辑(bit)
  • 在Verilog中,reg经常用来表示存储组合逻辑或者时序逻辑的变量,不过初学者容易混淆其综合后的硬件单元。实际上,reg并不一定会被综合为register,而它只是用来与线网类型相对,表示存储数据的变量
  • 在SV中,我们可以直接使用logic(数据类型)来实现通用的存储硬件数据:
    logic resetN;// 1位宽的四值逻辑
    logic [63:0] data;// 64位宽的变量
    logic [0:7] array [0:225]; // 由8位向量元素构成的数组【256个8位的数组】
  • logic 虽然只是表示数据类型,而在声明时,它默认会表示变量类型(variable),用户也可以显示声明其类型:
    var logic [63:0] addr;// 64位宽的变量类型
    wire logic [63:0] data; // 64位宽的线网类型
  • 二值逻辑类型

  • SV 添加了二值逻辑类型,帮助更高抽象级的建模,例如事物级模型。这些二值逻辑数据类型包括:
  • bit: 1位二值逻辑变量
  • byte: 8位二值逻辑,类似于C语言的char类型
  • shortint:16位二值逻辑,类似于C语言的short类型
  • int: 32位二值逻辑,类似于C语言int类型
  • longint: 64位二值逻辑,类似于C语言longlong类型
  • 在RTL级别,X值用来捕捉设计错误,例如寄存器未初始化,Z值用来表示未连接或者三态设计逻辑,但是在系统级或者事物级,Z和X很少被使用
  • 类似于logic类型默认为变量类型,bit类型默认也为变量类型。
  • 有符号类型和无符号类型

  • logic 或者bit 构成的向量(vector)是无符号类型
  • integer、byte、shortint、int、longint 为有符号类型。
  • 可以在有符号类型后添加unsigned来表示无符号类型,例如:
    byte 有符号类型,表示的数值范围是[-128,127]。
    byte unsigned 表示的是无符号类型,等同于bit[7:0],表示的数值范围是[0,255]
  • 在构建验证驱动组件时,无需关注硬件底层逻辑(X或者Z值),所以可使用二值逻辑实现。
  • SV和C在发生交互时,也可以使用二值逻辑来使得两种语言的函数接口参数类型传输更为简单。
  • 四值逻辑变量例如reg、logic或者integer等,在仿真开始时的初值为X。
  • 二值逻辑变量例如bit等,在仿真开始时的初值为0。
  •