当前位置: 首页 > 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 …...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...