VCS的ralgen命令产生UVM寄存器模型

2024-02-13 09:32

本文主要是介绍VCS的ralgen命令产生UVM寄存器模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、寄存器描述表格
  • 二、生成 .ralf 寄存器文件
    • 2.1 field
    • 2.2 register
    • 2.3 register block
    • 2.4 system
  • 三、产生UVM寄存器模型

前言

    在验证时,寄存器模型是必不可少的一个环境,且在项目中可能面临着需要不断更新迭代的需求。那么如何快速建立 UVM寄存器模型 呢?采用VCS ralgen脚本的主要步骤如下:

  1. 中心化的寄存器描述文件,如 ods、CSV、XML等;
  2. 根据寄存器描述文件产生ralgen需要的 .ralf 格式的寄存器文件;
  3. vcs的ralgen 命令生成 UVM register modle;

    我们通过脚本来解析表格,直接生成寄存器模型,也可以生成 ralf 文件,然后通过 VCS 工具中的 ralgen 产生寄存器模型。但是VCS工具提供了更可供选择的option,提供了更强大的机制,所以不妨可以试试用ralgen的方式来构建寄存器模型。下面将逐一介绍。

一、寄存器描述表格

    寄存器模型应该是中心化管理的,因为不同的部门都需要一份严格的寄存器描述文档来开展工作。这里以下图路科验证提供的寄存器列表为例。

二、生成 .ralf 寄存器文件

    首先我们先介绍ralf文件的内容格式。先以VCS提供的例子为参考,如下就是ralf文件中的一个register block的描述形式。

在这里插入图片描述
解释上图:

linecodedescription
1b1此register block的名称;
2bytes 11)指定这个register block的位宽;
2)如果所有register位宽之和大于此bytes生成ralf文件时会报错;
3register r此register的名称;
4bytes 11)指定这个register的位宽;
2)如果所有field位宽之和大于此1bytes,则会报错;
3)如果没有添加bytes,那么系统会自动计算所有bits之和,然后找到 最小正整数*8 >= 所有域位宽之和。例如所有域的位宽之和是12bit,那么系统会用16bit来存储这个寄存器数据。
5field WDT_EN@'h51)域名为WDT_EN;
6bits 1指定这个域的位宽;
7reset 'h0复位值为’h0;
8access rw该域的访问属性是RW;
9enum{ …}在这个域的UVM代码中会声明一个enum

在这里插入图片描述
在这里插入图片描述
    下面介绍一下它们基本语法规则:

2.1 field

    field 对应生成 UVM 寄存器模型中的 uvm_reg_field,如下:
在这里插入图片描述
对应的uvm_reg,如下:
在这里插入图片描述

2.2 register

ralgen支持 register 中的 field 为数组的形式,如下:
在这里插入图片描述

2.3 register block

类似field,ralgen 也支持 register block 中的 register 为数组的形式,如下:
在这里插入图片描述

2.4 system

在这里插入图片描述
在这里插入图片描述

三、产生UVM寄存器模型

    有了.ralf 的寄存器描述文件后,我们通过以下命令来产生UVM寄存器模型,如下:

ralgen [option] -t topname -I dir -uvm filename.ralf
optiondescription
-t topname指定 ralf 文件中一个top_level的register block 或者 system 的名称;
-uvm生成UVM寄存器模型;
-o ral_model_name指定输出文件的名称,生成的register model文件名为ral_model_name.sv
-I dir指定ralgen去搜索文件的路径;
注意:这里的 -I 是大写的 i ;
filename.ralf指定 ralgen 脚本吃进去的.ralf格式的寄存器描述文件;
-b为寄存器和memory指定后门访问方式,生成后门访问的代码
-B寄存器的地址以 Byte 为单位;
-c b即coverage bits,生成register bits(寄存器比特位)功能覆盖率模型;
-c f即coverage field,生成“Field Value”(域段值)功能覆盖率模型
-c acoverage address,生成“ADDRESS MAP”(地址映射)功能覆盖率模型;
注:几种覆盖率模型也可以同时存在,如 -c af;

👉注:这里对 ralgen 只做了最简单的介绍,ralgen还有许多的功能没有提及,待以后用到时,会继续更新…

这篇关于VCS的ralgen命令产生UVM寄存器模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/705153

相关文章

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

Linux grep 命令的使用指南

《Linuxgrep命令的使用指南》本文给大家介绍Linuxgrep命令的使用指南,包括基础搜索语法、实践指南,感兴趣的朋友跟随小编一起看看吧... 目录linux grep 命令全面使用指南一、基础搜索语法1. 基本文本搜索2. 多文件搜索二、常用选项详解1. 输出控制选项2. 上下文控制选项三、正则表达

DNS查询的利器! linux的dig命令基本用法详解

《DNS查询的利器!linux的dig命令基本用法详解》dig命令可以查询各种类型DNS记录信息,下面我们将通过实际示例和dig命令常用参数来详细说明如何使用dig实用程序... dig(Domain Information Groper)是一款功能强大的 linux 命令行实用程序,通过查询名称服务器并输

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应