当前位置: 首页 > news >正文

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格式的介绍如下:

  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(时间以秒为单位) 

相关文章:

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

目录 1.NTF格式介绍 1.1.1 {属性&#xff1a;值}定义 1.1.2类别 1.1.3语法 2.vsif文件中有效的container 2.1 session {…} 1.NTF格式介绍 Cadence的Vmanager工具采用vsif类型的文件作为regression的输入文件&#xff0c;采用vplanx/csv类型的文件作为vplan的输入文件&am…...

html实现我的故乡,城市介绍网站(附源码)

文章目录 1. 我生活的城市北京&#xff08;网站&#xff09;1.1 首页1.2 关于北京1.3 北京文化1.4 加入北京1.5 北京景点1.6 北京美食1.7 联系我们 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43…...

外汇天眼:嘿!他们说这个比赛有手就能赢,你敢不敢来试试?

在外汇市场的波涛汹涌中&#xff0c;一场引人注目的模拟交易比赛正在悄然展开&#xff0c;参与者们纷纷聚焦&#xff0c;听所有获奖的参赛投资者们说&#xff1a;这个比赛有手就能赢&#xff0c;你敢不敢来试试&#xff1f; 比赛规则简单而富有挑战性。你只需在外汇天眼APP开通…...

“智”护城市生命线,宏电亮相第十届中国(上海)国际管网展

11月22-24日&#xff0c;第十届中国&#xff08;上海&#xff09;国际管网展览会在国家会展中心盛大举办&#xff0c;展会旨在配合推进国家基础建设工作&#xff0c;推动管网改造建设&#xff0c;汇聚了三百余家优秀企业参展&#xff0c;展示产品及技术覆盖管网建设、智慧水务、…...

在线音频视频剪辑网站推荐

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还针对不同的请求&#xff0c;提供了别名方式的api,具体如下&#xff1a; 方法描述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是一种可编程的、可扩展的持续交付管道&#xff0c;允许您使用脚本来定义整个软件交付过程。 以下是使用Jenkins Pipeline创建和配置流水线的基本步骤。 Part 01. 创建一个Pipeline Job 在Jenkins中创建一个新的"Pipeline"类型的Job。 以下是在Je…...

给经销商开发信怎么写?做商务邮件的技巧?

如何写给经销商的开发信&#xff1f;代理商的外贸开发信模板&#xff1f; 一封令人信服的经销商开发信能够在商业世界中起到至关重要的作用。蜂邮EDM将为您介绍如何撰写一封引人注目且有说服力的经销商开发信&#xff0c;确保您的合作伙伴对您的业务充满信心。 经销商开发信&…...

测试架构师必备技能-Nginx安装部署实战

Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的免费开源Web和 反向代理服务器&#xff0c;也是一个 IMAP/POP3/SMTP 代理服务器。在高并发访问的情况下&#xff0c;Nginx是Apache服务器不错的替代品。官网数据显示每秒TPS高达50W左右。本文为读者朋…...

linux 账号管理实例一,stdin,passwd复习

需求 账号名称全名次要用户组是否可登录主机密码 myuser1 1st usermygroup1yespasswordmyuser22st usermygroup1yespasswordmyuser33st user无nopassword 第一&#xff1a;用户&#xff0c;和用户组创建&#xff0c;并分配有效用户组&#xff08;初始用户组是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

命令样例如下&#xff1a; curl -X GET "https://localhost:9200/_cat/component_templates?vtrue&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"执行结果输出如下&#xff1a; name …...

FLASK博客系列7——我要插入数据库

我们来继续上次的内容&#xff0c;实现将数据插入数据库。 我们先更改下models.py&#xff0c;由于上次笔误&#xff0c;把外键关联写错了。在这里给大家说声抱歉。不过竟然没有小伙伴发现。 models.py from app import dbclass User(db.Model): # 表名将会是 user&#xff0…...

HarmonyOS应用开发者高级认证(题库)

判断题 每一个自定义组件都有自己的生命周期 正确Worker线程不支持UI操作 正确首选项preferences是以key-value形式存储数据&#xff0c;其中key是可以重复的。 错误HarmonyOS应用可以兼容OpenHarmony生态 正确使用端云一体化开发&#xff0c;无需自己搭建服务器 正确只要…...

软件建模与文档:架构师怎样绘制系统架构蓝图?

Java全能学习面试指南&#xff1a;https://javaxiaobear 首先&#xff0c;请你设想这样一个场景&#xff1a;如果公司安排你做架构师&#xff0c;要你在项目开发前期进行软件架构设计&#xff0c;你该如何开展你的工作&#xff1f;如何输出你的工作成果&#xff1f;如何确定你的…...

ChatGLM2-6B微调过程说明文档

参考文档&#xff1a; ChatGLM2-6B 微调(初体验) - 知乎 环境配置 下载anaconda&#xff0c;版本是Anaconda3-2023.03-0-Linux-x86_64.sh&#xff0c;其对应的python版本是3.10&#xff0c;试过3.7和3.11版本的在运行时都报错。 执行下面的命令安装anaconda sh Anaconda3-202…...

Django之中间件

引入 1、Django自带7个中间件&#xff0c;每个中间件都有各自的功能 2、django能够自定义中间件 3、使用场景&#xff1a; 1. 全局身份校验 2. 全局用户权限校验 3. 全局访问频率的校验 ...... 【1】什么是中间件 Django中间件是一个轻量级、可重用的组件&#xff0c;用于处理…...

sql中的left join, right join 和inner join,union 与union all的用法

left join&#xff0c; right join 和inner join&#xff1a;这些都是SQL中用来连接两个或多个表的操作。 union&#xff0c;union all&#xff1a;用于合并两个或多个 SELECT 语句的结果。 但是有时候&#xff0c;对于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 …...

终极指南:Kanboard监控告警配置 - 打造异常情况及时响应机制

终极指南&#xff1a;Kanboard监控告警配置 - 打造异常情况及时响应机制 【免费下载链接】kanboard Kanban project management software 项目地址: https://gitcode.com/gh_mirrors/ka/kanboard Kanboard作为一款高效的看板项目管理软件&#xff0c;不仅能帮助团队可视…...

HWA05_leetcode48旋转图像

题目解法class Solution:def rotate(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""#这是一个n行n列的矩阵n len(matrix)#只需要遍历n/2行for i in range(n//2):#每一列从i开始直到…...

本地跑 Gemma 4 替代 Claude Code?M4 Max 实测告诉你为什么行不通

文章目录引言&#xff1a;省钱的小算盘&#xff0c;打得震天响一、Gemma 4&#xff1a;Google 给本地玩家发的"甜蜜陷阱"二、Claude Code&#xff1a;云端的"灭霸级"存在三、M4 Max 实测&#xff1a;当理想照进现实&#xff0c;现实碎了3.1 第一坑&#xf…...

Qwen-Image-Edit-2511在云端:集成显卡/Mac也能流畅运行的AI修图方案

Qwen-Image-Edit-2511在云端&#xff1a;集成显卡/Mac也能流畅运行的AI修图方案 1. 为什么选择云端部署Qwen-Image-Edit-2511&#xff1f; 1.1 硬件限制的突破性解决方案 传统AI图像编辑工具对硬件的高要求一直是普通用户的痛点。Qwen-Image-Edit-2511作为最新一代多模态编辑…...

CLAP-htsat-fused部署指南:Docker资源限制与OOM Killer规避策略

CLAP-htsat-fused部署指南&#xff1a;Docker资源限制与OOM Killer规避策略 1. 项目概述 CLAP-htsat-fused是一个基于LAION CLAP模型的零样本音频分类Web服务。这个工具能够对任意音频文件进行语义分类&#xff0c;无需预先训练特定类别的模型。无论是狗叫声、猫叫声、鸟叫声…...

OpenClaw+Qwen3.5-9B创作助手:从大纲到短视频脚本全自动

OpenClawQwen3.5-9B创作助手&#xff1a;从大纲到短视频脚本全自动 1. 为什么需要自动化创作流程 作为一个内容创作者&#xff0c;我经常面临这样的困境&#xff1a;明明有好的创意&#xff0c;却卡在执行环节。从构思大纲到完成短视频脚本&#xff0c;往往需要反复查阅资料、…...

Qwen3-14B系统优化指南:解决C盘空间清理与系统性能问题

Qwen3-14B系统优化指南&#xff1a;解决C盘空间清理与系统性能问题 1. 引言&#xff1a;Windows用户的共同烦恼 "您的C盘空间不足"——这个弹窗可能是Windows用户最不愿看到的提示之一。随着使用时间增长&#xff0c;系统盘空间被各种临时文件、日志和冗余程序蚕食…...

实时手机检测-通用GPU算力优化:TensorRT加速后吞吐量提升3.2倍

实时手机检测-通用GPU算力优化&#xff1a;TensorRT加速后吞吐量提升3.2倍 1. 引言&#xff1a;当手机检测遇上性能瓶颈 想象一下&#xff0c;在一个大型活动现场&#xff0c;安保系统需要实时分析数百路监控视频&#xff0c;精准识别出每一部正在使用的手机&#xff0c;以防…...

可视化监控OpenClaw:Qwen3-14B任务执行看板搭建

可视化监控OpenClaw&#xff1a;Qwen3-14B任务执行看板搭建 1. 为什么需要监控OpenClaw&#xff1f; 去年冬天的一个深夜&#xff0c;我被连续不断的微信消息惊醒——团队部署的OpenClaw自动化流程突然陷入死循环。由于缺乏实时监控&#xff0c;这个消耗了上千Token的异常任务…...

如何高效协作开发Fisher插件:团队合作的最佳实践指南

如何高效协作开发Fisher插件&#xff1a;团队合作的最佳实践指南 【免费下载链接】fisher A plugin manager for Fish 项目地址: https://gitcode.com/gh_mirrors/fi/fisher Fisher是Fish Shell的终极插件管理器&#xff0c;让团队协作开发插件变得简单高效。无论你是新…...