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

相关文章

Redis的Zset类型及相关命令详细讲解

《Redis的Zset类型及相关命令详细讲解》:本文主要介绍Redis的Zset类型及相关命令的相关资料,有序集合Zset是一种Redis数据结构,它类似于集合Set,但每个元素都有一个关联的分数... 目录Zset简介ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZ

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

关于Maven生命周期相关命令演示

《关于Maven生命周期相关命令演示》Maven的生命周期分为Clean、Default和Site三个主要阶段,每个阶段包含多个关键步骤,如清理、编译、测试、打包等,通过执行相应的Maven命令,可以... 目录1. Maven 生命周期概述1.1 Clean Lifecycle1.2 Default Li

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

PHP执行php.exe -v命令报错的解决方案

《PHP执行php.exe-v命令报错的解决方案》:本文主要介绍PHP执行php.exe-v命令报错的解决方案,文中通过图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录执行phpandroid.exe -v命令报错解决方案执行php.exe -v命令报错-PHP War