Cadence Vmanager vsif文件编写指南(持续更新...)
目录
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格式的介绍如下:
- NTF的BNF(巴克斯范式)描述
- NTF的预处理(#include,环境变量)
- NTF的限制
- NTF的错误处理
1.1 NTF的BNF(巴克斯范式)描述
BNF可以理解为专门用于描述(定义)语言的元语言,就是用书面文字的方式来定义编程语言,多出现在各种语言的官方文档中,比如Python官方文档:
NTF的BNF格式如下:

- 容器(container)的标识符取决于文件类型,比如:
- vsif files--session,group,test
- vplan files--import,section,perspective,coverage,extend,instantiate,within
- 标识符不区分大小写;
- 可以在任何BNF元素之间自由使用空白。若要保留名称或属性值中的空格,需要将其放在双引号中;
- 使用“//”或者“--”可以注释掉该行;
- 容器(container)的关闭符号“}”后面的分号“;”是可选的;
- vManager在读取文件时从字符串中删除引号;
- 有关{属性(attribute): 值(value)}的完整说明,可以参阅attribute : value;
- 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可以为空或者按如下语法:
- 字符串,可选用引号括起来,如果attribute_value在引号中,则删除引号,保留引号中的内容。如果attribute_value不在引号中,则删除初始和最终空格,并将任何多个空格替换为一个空格。
- 注意(所有字符串属性(预定义和用户定义)限制为 32672 个字符。当尝试输入超过 32672 个字符时(在所有方法中 - vsif、edit、scanning),该值将被截断并以“ ..."代替.)
- vManager沿 $VMANAGER_PATH 搜索file的完整或部分路径名
- 多行文本,按如下方式括起来<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 : boolean | session |
| 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的 DRM | drm:<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(时间以秒为单位) |
相关文章:
Cadence Vmanager vsif文件编写指南(持续更新...)
目录 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的输入文件&am…...
html实现我的故乡,城市介绍网站(附源码)
文章目录 1. 我生活的城市北京(网站)1.1 首页1.2 关于北京1.3 北京文化1.4 加入北京1.5 北京景点1.6 北京美食1.7 联系我们 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43…...
外汇天眼:嘿!他们说这个比赛有手就能赢,你敢不敢来试试?
在外汇市场的波涛汹涌中,一场引人注目的模拟交易比赛正在悄然展开,参与者们纷纷聚焦,听所有获奖的参赛投资者们说:这个比赛有手就能赢,你敢不敢来试试? 比赛规则简单而富有挑战性。你只需在外汇天眼APP开通…...
“智”护城市生命线,宏电亮相第十届中国(上海)国际管网展
11月22-24日,第十届中国(上海)国际管网展览会在国家会展中心盛大举办,展会旨在配合推进国家基础建设工作,推动管网改造建设,汇聚了三百余家优秀企业参展,展示产品及技术覆盖管网建设、智慧水务、…...
在线音频视频剪辑网站推荐
123apps: Online MP3 Cutter - Cut Songs, Make Ringtones...
Math Functions 数学函数
Math Functions 数学函数 Use the math functions that your database offers whenever possible. 尽可能使用数据库提供的数学函数。 Internally, PeopleCode assigns types to numeric values. Calculations for the Decimal type are processed in arrays to ensure dec…...
Javaweb之Axios的详细解析
1.3.3 请求方法的别名 Axios还针对不同的请求,提供了别名方式的api,具体如下: 方法描述axios.get(url [, config])发送get请求axios.delete(url [, config])发送delete请求axios.post(url [, data[, config]])发送post请求axios.put(url [, data[, con…...
Jenkins Pipeline应用实践
Jenkins Pipeline是一种可编程的、可扩展的持续交付管道,允许您使用脚本来定义整个软件交付过程。 以下是使用Jenkins Pipeline创建和配置流水线的基本步骤。 Part 01. 创建一个Pipeline Job 在Jenkins中创建一个新的"Pipeline"类型的Job。 以下是在Je…...
给经销商开发信怎么写?做商务邮件的技巧?
如何写给经销商的开发信?代理商的外贸开发信模板? 一封令人信服的经销商开发信能够在商业世界中起到至关重要的作用。蜂邮EDM将为您介绍如何撰写一封引人注目且有说服力的经销商开发信,确保您的合作伙伴对您的业务充满信心。 经销商开发信&…...
测试架构师必备技能-Nginx安装部署实战
Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的免费开源Web和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高并发访问的情况下,Nginx是Apache服务器不错的替代品。官网数据显示每秒TPS高达50W左右。本文为读者朋…...
linux 账号管理实例一,stdin,passwd复习
需求 账号名称全名次要用户组是否可登录主机密码 myuser1 1st usermygroup1yespasswordmyuser22st usermygroup1yespasswordmyuser33st user无nopassword 第一:用户,和用户组创建,并分配有效用户组(初始用户组是passwd里…...
Spring-jdbcTemplate-配置数据库连接池,配置文件方式beans.xml
1、jdbc.properties jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql:///studb jdbc.userroot jdbc.pwd123456 2、beans.xml <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans&…...
ElasticSearch之cat component templates API
命令样例如下: curl -X GET "https://localhost:9200/_cat/component_templates?vtrue&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"执行结果输出如下: name …...
FLASK博客系列7——我要插入数据库
我们来继续上次的内容,实现将数据插入数据库。 我们先更改下models.py,由于上次笔误,把外键关联写错了。在这里给大家说声抱歉。不过竟然没有小伙伴发现。 models.py from app import dbclass User(db.Model): # 表名将会是 user࿰…...
HarmonyOS应用开发者高级认证(题库)
判断题 每一个自定义组件都有自己的生命周期 正确Worker线程不支持UI操作 正确首选项preferences是以key-value形式存储数据,其中key是可以重复的。 错误HarmonyOS应用可以兼容OpenHarmony生态 正确使用端云一体化开发,无需自己搭建服务器 正确只要…...
软件建模与文档:架构师怎样绘制系统架构蓝图?
Java全能学习面试指南:https://javaxiaobear 首先,请你设想这样一个场景:如果公司安排你做架构师,要你在项目开发前期进行软件架构设计,你该如何开展你的工作?如何输出你的工作成果?如何确定你的…...
ChatGLM2-6B微调过程说明文档
参考文档: ChatGLM2-6B 微调(初体验) - 知乎 环境配置 下载anaconda,版本是Anaconda3-2023.03-0-Linux-x86_64.sh,其对应的python版本是3.10,试过3.7和3.11版本的在运行时都报错。 执行下面的命令安装anaconda sh Anaconda3-202…...
Django之中间件
引入 1、Django自带7个中间件,每个中间件都有各自的功能 2、django能够自定义中间件 3、使用场景: 1. 全局身份校验 2. 全局用户权限校验 3. 全局访问频率的校验 ...... 【1】什么是中间件 Django中间件是一个轻量级、可重用的组件,用于处理…...
sql中的left join, right join 和inner join,union 与union all的用法
left join, right join 和inner join:这些都是SQL中用来连接两个或多个表的操作。 union,union all:用于合并两个或多个 SELECT 语句的结果。 但是有时候,对于Select出来的结果集不是很清楚。 假设我们有两张表。pers…...
Linux:strace 简介
文章目录 1. 前言2. 什么是 strace ?3. 使用 strace3.1 追踪指定进程3.1.1 通过程序名追踪进程3.1.2 通过 进程 ID (PID) 追踪程序3.1.3 追踪 子进程 或 线程 3.2 系统调用情况统计3.3 追踪过滤3.3.1 追踪指定的系统调用集合3.3.2 追踪对指定文件句柄集合操作的系统调用3.3.3 …...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
