系统与设计
的意见

访问寄存器与UVM-RAL

从testbench直接访问寄存器的名字,不知道他们在哪里。

受欢迎程度

作为数字设计或验证工程师你知道某些特性或配置的设备可以通过编程来实现一些寄存器设置值。例如,一个32位的寄存器内可以有几个字段,每个字段可以代表一个特定的功能,可以配置。设备登记然后读取和使用这些信息来更改设置或模式。

然而,这是说起来容易做起来难。例如,当我作为一个数字设计师工作,我工作在一个设计中几个模式可以定义软件。所以,当我需要改变一个控制寄存器,我会找出内存寄存器居住,然后使用CPU读高水平操作命令(控制直接存储器存取控制器)来访问和写入内存。这种方法在一天工作,今天仍然有效的小项目。但是如果有几个数百个这样的注册?这是这样的安排的寄存器,寄存器组。

一个正常的SoC拥有一个或多个核心,外围设备和总线接口。每个模块都有自己的寄存器组。现在你可以看到,只有一些模块,你看着成千上万的寄存器可能需要访问。注册模块的组合称为内存映射。现在想象一下,试图从一个更高的水平写指令来访问这些寄存器。第一个问题是大量的寄存器。其次,并不是所有的寄存器都是相同的长度。第三,一个特别具有挑战性的问题,并非所有的寄存器都可以访问相同的协议。每个外围设备都有自己的协议来访问这些寄存器。

这就是为什么我们有一个UVM注册抽象层(UVM-RAL)。它试图镜子testbench设计寄存器的值,所以你可以很容易地使用寄存器模型访问这些寄存器。、,在更高层次的抽象,不需要知道协议或注册您试图访问的类型。从testbench,您可以直接访问寄存器的名字,不知道他们在哪里。所有的信息都存储在寄存器模型,其中包含的细节,所有的寄存器和寄存器的类型和位置。如果你想了解更多的文化、你可以阅读这个博客:UVM注册层:结构

现在,如果你还没有听说过UVM-RAL之前,你可能会想:“嘿,等一下;你只是说,有成千上万的寄存器,可以设计的一部分。我要怎么写,许多寄存器的模型?”

这就是注册模型生成器功能Riviera-PRO方便。使用最新的2018.02版本的Riviera-PRO现在可以生成注册模型从csv或IPXACT-based xml文件。

register_generator命令需要这样的csv文件并生成一个模型,您可以使用注册为你露珊testbench的一部分。

正如你所看到的,发电机将生成注册模型文件,您可以纳入UVM环境使用、UVM。这消除了冗余的工作需要创建这些寄存器模型和创建一个格式化代码,你可以很容易地导入testbench。如果你还没有试过,继续尝试register_generator命令Riviera-PRO 2018.02版本的,让我们知道你的想法。



留下一个回复


(注意:这个名字会显示公开)

Baidu