Cadence Vmanager vsif文件编写指南(持续更新...)

news2024/11/30 7:46:56

目录

1.NTF格式介绍

1.1.1 {属性:值}定义

1.1.2类别

1.1.3语法

2.vsif文件中有效的container

2.1 session {…}


1.NTF格式介绍

Cadence的Vmanager工具采用vsif类型的文件作为regression的输入文件,采用vplanx/csv类型的文件作为vplan的输入文件,vplanx、vsif文件采用标准的嵌套文本格式(NTF),NTF是一种元格式,类似于XML,本文有关于Vmanager采用的NTF格式的介绍如下:

  1. NTF的BNF(巴克斯范式)描述
  2. NTF的预处理(#include,环境变量)
  3. NTF的限制
  4. NTF的错误处理

1.1 NTF的BNF(巴克斯范式)描述

BNF可以理解为专门用于描述(定义)语言的元语言,就是用书面文字的方式来定义编程语言,多出现在各种语言的官方文档中,比如Python官方文档:

NTF的BNF格式如下:

  1. 容器(container)的标识符取决于文件类型,比如:
  • vsif files--session,group,test
  • vplan files--import,section,perspective,coverage,extend,instantiate,within
  1. 标识符不区分大小写;
  2. 可以在任何BNF元素之间自由使用空白。若要保留名称或属性值中的空格,需要将其放在双引号中;
  3. 使用“//”或者“--”可以注释掉该行;
  4. 容器(container)的关闭符号“}”后面的分号“;”是可选的;
  5. vManager在读取文件时从字符串中删除引号;
  6. 有关{属性(attribute): 值(value)}的完整说明,可以参阅attribute : value;
  7. NTF 中没有前向引用(需要按顺序定义属性)。例如,在 vplan 文件中,必须首先定义section属性,然后定义views属性,然后定义section的扩展属性 within 属性。

1.1.1 {属性:值}定义

使用“:”定义一个属性的具体值。

1.1.2类别

属于容器的成员变量(可以把容器理解为一个类,属性就是该类的成员变量,值就是成员变量的具体值)

1.1.3语法

attribute_name: attribute-value;

举例:

weight : 2

coverage : usb*.*.* ;

  • attribute_name 是仅包含字母数字字符和下划线字符的标识符。attribute_name中不允许有空格,但允许在attribute_name前后使用空格。attribute_name区分大小写。session属性的name必须与所有的test属性的name不同。换言之,不能在test和session中使用相同的attribute_name。
  • attribute_value可以为空或者按如下语法:
    1. 字符串,可选用引号括起来,如果attribute_value在引号中,则删除引号,保留引号中的内容。如果attribute_value不在引号中,则删除初始和最终空格,并将任何多个空格替换为一个空格。
    2. 注意(所有字符串属性(预定义和用户定义)限制为 32672 个字符。当尝试输入超过 32672 个字符时(在所有方法中 - vsif、edit、scanning),该值将被截断并以“ ..."代替.)
      1. vManager沿 $VMANAGER_PATH 搜索file的完整或部分路径名
      2. 多行文本,按如下方式括起来<text></text>,<text>必须是第一行中的第一个非空格标记,并且</text>必须是最后一行中的最后一个非空白标记。<text> 和</text>可能出现在同一行上,尽管这相当于在实际文本周围使用双引号。举例:如下2个dut_error含义相同。
  • 注意,后定义的容器内属性会覆盖以前的属性。

1.2 NTF的预处理(#include,环境变量获取)

#include语法如下:

  • 包含的文件必须用双引号括起来。
  • 每个 include 指令都必须写在仅包含自身的一行中。
  • 不允许在 include 指令的末尾使用分号。
  • include 指令中允许使用环境变量。使用类似 shell 的语法 $ENV_VAR 或 ${ENV_VAR}。
  • 不要在 #include 指令中使用 vsif 指令 $ENV()、$RUN_DIR、$DIR() 或 $ATTR()。

如果未将包含的文件指定为绝对路径,vManager 将搜索以下目录:

  • 包含文件的目录(包含 #include 指令或 import {} 的文件)。
  • 运行vManager 的目录。
  • $VMANAGER_PATH 环境变量指定的任何目录。

1.3 NTF的限制

  • 如果数据本身带<text>这个字符的话,vManager就不能编译在<text> </text>标识符之间的数据。
  • NTF 容器必须在打开它们的文件中关闭。如果在一个文件中打开容器,则无法在包含的文件中关闭它。例如,不支持以下内容:

1.4 NTF的错误处理

解析 NTF 文件时,可能有两种类型的错误

  • NTF 不兼容错误 -- 文件不是 NTF 格式。
  • 特定于应用程序的错误 -- 文件采用 NTF 格式,但根据正在读取的格式,其中的数据是错误的。例如,编写“seed: 123”是有效的 NTF 语法,把seed作为vsif中的container的{属性:值}是正确的,但seed放在vplan 中会产生错误。

2.vsif文件中有效的container

vsif 文件指定要在单个session中运行的一个或多个test。为了支持 vsif 文件的链接,一个 vsif 文件中允许有多个session容器。

vsif 文件还允许以下语法:

  • 标准 C++ 编译器指令,包括 #include、#define、#ifdef 和 #ifndef;
  • 属性值指令,包括 $ENV、$RUN_ENV、$ATTR 和 $DIR;

以下是 vsif 文件中的有效 NTF 容器:

对于上面每个容器,它可以容纳的用户定义属性数是有限制的。如下:

其中:

  • other types包括:path,duration,enum,long,double,boolen。
  • other containters包括:test,group,session,run,session_output。

2.1 session {…}

在session容器中可以定义如下属性:

属性描述语法归属
abort_dependent_jobs_on_nonzero_exit指定当job以非零退出代码退出时,是否必须中止job的从属job。abort_dependent_jobs_on_nonzero_exit : boolean(默认1)session
abort_dependent_runs_on_failure指定在test失败时是否必须中止test的依赖test。此属性的行为类似于abort_dependent_jobs_on_nonzero_exit属性,但当主test失败时,此处的依赖test将失败(在scan阶段发现错误)。abort_dependent_runs_on_failure : boolean(默认0)session
automation_file用于指定每个 vsif 的自动化。automation_file : path(path 是包含自动化命令的文件的路径,自动化命令文件中的指令和batch命令一致。)
(如/vsif/automation/ida.automation;)
session
create_debug_logs要求 vManager 创建日志文件以帮助调试 DRM 问题create_debug_logs : booleansession
create_optimized_coverage_data指定是否创建优化的覆盖率数据。create_optimized_coverage_data: <text>string</text>
(string可以为NONE,ALL,ALL_SESSION,其中NONE表示该session的优化覆盖率不会被收集,ALL表示该session下每个run的覆盖率都被单独收集,ALL_SESSION表示该session下的每个覆盖率都会被合并收集)
session
default_dispatch_parameters指定 DRM ExecCommand 的默认选项或参数default_dispatch_parameters:<text>string</text>
不建议在此字符串中使用环境变量。
session
description定义一个session的描述description: description
举例:description : <text>This session contains 10 tests run with random seeds generated by IntelliGen</text>;
session
drm指定要用于session、group或test的 DRMdrm:<text>string</text>
其中string可以为如下:
lsf-- Specifies the DPL-based integration with IBM Platform Load Sharing Facility (LSF).
sge--Specifies the DPL-based integration with the open source batch-queuing system, Sun Grid Engine (SGE), supported by Sun Microsystems.
openlava  --Specifies the DPL-based integration with OpenLava workload scheduler.
nc  -- Specifies the DPL-based integration with NetworkComputer based job.
loadleveler -- Specifies the DPL-based integration with IBM's LoadLeveler.
parallel local -- Specifies the DPL-based execution of runs in parallel on the local machine.
serial local -- Specifies the DPL-based execution of runs serially on the local machine.
user defined -- Specifies DRM that you created using the DRM API.
session
file_policy使用户能够选择每次运行时要在 NFS 上保留哪些文件。file_policy: Perl Boolean expression(采用perl语法)(默认值为1,默认NFS保留所有文件)
例如:要保留failed用例的全部信息,和passed用例的指定文件,可以仿照如下写法:
session sess{
    top_dir: $ENV(MY_TOP_DIR);
    output_mode: terminal;
    file_policy: <text> getStatus() eq "FAILED"</text>;
};
group g{
   
file_policy: <text> getFile() =~ /\.log/ and "$ATTR(test_name)" eq "t3" </text>;
    scan_script: true;

    test t1{
       
file_policy: <text> getFile() =~ /cov_work\/scope/ </text>;
        run_script: "xrun $ENV(WORK_AREA)/test.sv -coverage all -access r -svseed random";};

    test t2{
        run_script: "xrun $ENV(WORK_AREA)/test.sv -coverage all -access r -svseed random; exit 1";};

    test t3{
    run_script: "xrun $ENV(WORK_AREA)/test.sv -coverage all -access r -svseed random";
};
};
如果t1 PASSED,t2 FAILED,t3 PASSED,则会保留t1的覆盖率,t2的全部文件,t3的带.log的文件。
session
 max_runs_in_parallel指定DRM 并行执行的run的最大次数max_runs_in_parallel:integer
例如:max_runs_in_parallel:5
session
free_hosts需要 DRM 为后续run重新分配主机free_hosts:boolean(默认为1)
若为true,主机被释放,DRM 可以为任何剩余run重新分配此计算机(或其他计算机)。如果为 FALSE,则在session完成之前不会释放主机
session
group_automation_file指定每个 vsif 中的group自动化。group_automation_file__:<path for group automation file >
automation_file中的内容同automation_file命令
session
host_lock_timeout指定DRM 任务的timeout时间host_lock_timeout:time(时间以秒为单位) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1255982.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uniapp IOS从打包到上架流程(详细简单)

​ uniapp IOS从打包到上架流程&#xff08;详细简单&#xff09; 原创 1.登入苹果开发者网站&#xff0c;打开App Store Connect ​ 2.新App的创建 点击我的App可以进入App管理界面&#xff0c;在右上角点击➕新建App 即可创建新的App&#xff0c;如下图&#xff1a; ​ 3.…

数据结构——哈夫曼树结构总结

一直在找工作&#xff0c;没时间写博客&#xff0c;现在找到工作了&#xff0c;博客回归~ 哈夫曼树定义及构建教程

官网IDM下载和安装的详细步骤

目录 一、IDM是什么 二、下载安装 三、解决下载超时的问题 四、谷歌浏览器打开IDM插件 谷歌浏览器下载官网&#x1f447; 五、测试 六、资源包获取 一、IDM是什么 IDM&#xff08;internet download manager&#xff09;是一个互联网下载工具插件&#xff0c;常见于用…

NX二次开发UF_CURVE_ask_offset_curves 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_offset_curves Defined in: uf_curve.h int UF_CURVE_ask_offset_curves(tag_t offset_curve_object, int * num_curves, tag_t * * offset_curves ) overview 概述 …

双周赛118(模拟、分组循环、记忆化搜索==>动态规划、单调队列优化DP)

文章目录 双周赛118[100121. 查找包含给定字符的单词](https://leetcode.cn/problems/find-words-containing-character/)模拟 [100138. 最大化网格图中正方形空洞的面积](https://leetcode.cn/problems/maximize-area-of-square-hole-in-grid/)题意转换 分组循环 [100133. 购…

鸿蒙(HarmonyOS)应用开发——基础语法例子

前言 在前面几篇文章中&#xff0c;已经介绍了ArkTs中装饰器、声明式UI、自定义组件。知识都是很零散的&#xff0c;我们可以做一个Demo。现在我们一步一步完成下面这样的页面 创建ToDo项目 输入项目的名称&#xff0c;存放的位置&#xff0c;点击完成。IDE创建项目&#xf…

MySQL基本SQL语句(下)

MySQL基本SQL语句&#xff08;下&#xff09; 一、扩展常见的数据类型 1、回顾数据表的创建语法 基本语法&#xff1a; mysql> create table 数据表名称(字段名称1 字段类型 字段约束,字段名称2 字段类型 字段约束,...primary key(主键字段 > 不能为空、必须唯一) ) …

2018年11月8日 Go生态洞察:参与2018年Go用户调查

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

共享模型之无锁

目录 无锁实现线程安全 无锁与synchronized效率对比 原子整数 原子引用类型 ABA问题 原子数组 字段更新器 原子累加器LongAdder LongAdder源码分析 Unsafe cas修改对象属性值 案例 对于银行取钱来说&#xff0c;需要保证线程安全&#xff0c;一个1w的账户由1k个线程…

GEE 22:基于GEE实现物种分布模型(更新中。。。。。。)

物种分布模型 1. 数据点准备1.1 数据加载1.2 去除指定距离内的重复点1.3 定义研究区范围1.4 选择预测因子 1. 数据点准备 1.1 数据加载 首先需要将CSV文件导入到GEE平台中&#xff0c;同样也可以导入shp格式文件。 // 1.Loading and cleaning your species data *************…

【KubeSphere】基于AWS在 Linux 上以 All-in-One 模式安装 KubeSphere

文章目录 一、实验配置说明二、实验准备工作1.确认系统版本2. 修改网络DNS3. 关闭SELINUX4. 关闭防火墙 三、实验依赖项安装四、下载 KubeKey五、一键化安装部署六、验证安装结果七、登录KubeSphere管理控制台八、参考链接 一、实验配置说明 本实验基于AWS启动一台新实例&…

@Async注解的坑,小心

背景 前段时间&#xff0c;一个同事小姐姐跟我说她的项目起不来了&#xff0c;让我帮忙看一下&#xff0c;本着助人为乐的精神&#xff0c;这个忙肯定要去帮。 于是&#xff0c;我在她的控制台发现了如下的异常信息&#xff1a; Exception in thread "main" org.s…

信创之国产浪潮电脑+统信UOS操作系统体验7:VSCode任务tasks.json的问题匹配器problemMatcher详解

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、引言 最近在国产操作系统上使用Visual Studio Code的任务配置&#xff0c;发现tasks下的问题匹配器problemMatcher公开资料很少或很简单&#xff0c;直接在某度上通过problemMatcher搜索基本上没有精确…

从代码执行,看单片机内存的分配

1、单片机执行指令过程详解 单片机执行程序的过程&#xff0c;实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行&#xff0c;即取指令--分析指令--执行指令。 取指令的任务是&#xff1a;根据程序计数器PC中的值从程序存储器读…

粒子群算法Particle Swarm Optimization (PSO)的定义,应用优点和缺点的总结!!

文章目录 前言一、粒子群算法的定义二、粒子群算法的应用三、粒子群算法的优点四、粒子群算法的缺点&#xff1a;粒子群算法的总结 前言 粒子群算法是一种基于群体协作的随机搜索算法&#xff0c;通过模拟鸟群觅食行为而发展起来。该算法最初是由Eberhart博士和Kennedy博士于1…

由于找不到msvcp120.dll无法继续执行代码是什么原因怎么修复

今天我想和大家分享的是关于“msvcp120.dll丢失的解决方法”。或许有些同学在平时使用电脑的过程中会遇到这个问题&#xff0c;但是并不知道该如何解决。那么&#xff0c;接下来我将从三个方面为大家介绍&#xff1a;msvcp120.dll丢失的原因、msvcp120.dll是什么以及msvcp120.d…

小程序如何进行版本升级

小程序版本升级是非常重要的&#xff0c;它可以帮助商家及时更新功能、修复bug&#xff0c;提升用户体验&#xff0c;增加小程序的竞争力。那么&#xff0c;商家怎么进行小程序版本升级呢&#xff1f;下面具体介绍。 在小程序管理员后台->版本设置处&#xff0c;会显示是否…

基于springboot+vue的学生宿舍管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

NEFU离散数学实验PBL

1.青蛙的约会 Description 两只青蛙在网上相识了&#xff0c;它们聊得很开心&#xff0c;于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上&#xff0c;于是它们约定各自朝西跳&#xff0c;直到碰面为止。可是它们出发之前忘记了一件很重要的事情&#xff0c;既…

案例029:基于微信小程序的阅读网站设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…