Conformal LEC:官方学习教程

相关阅读

Conformal LEChttps://blog.csdn.net/weixin_45791458/category_12993839.html?spm=1001.2014.3001.5482


        本文是对Conformal Equivalence Checking User Guide中附录实验的翻译(有删改),实验文件可见安装目录Conformal/share/cfm/lec/demo/doc_testcase,该目录下还提供了其他案例。

        本实验将通过一个小型的案例帮助用户熟悉图形界面(GUI)下Conformal LEC的使用流程,实验内容是验证非扫描门级网表(Golden)与插入扫描链后的门级网表(Revised)的等价性。

启动Conformal

        在shell中切换到实验目录并且使用lec命令启动Conformal LEC,如下所示。

$ cd demo/doc_testcase
$ lec

        此操作将打开Conformal LEC的图形界面窗口,如图1所示。

图1 LEC的图形界面窗口

读取库文件

        由于本实验的Golden和Revised设计都是门级网表,需要读取库文件以确定各标准单元的功能,Conformal LEC支持两种格式的库文件:第一种是Verilog仿真库,即只包含原语的模块定义;第二种是Synopsys Liberty格式的库(.lib文件)。下面分别展示了这两种格式的库文件。

// lib.v
module EXN(A1, A2, X);
input  A1, A2;
output X;
wire  A12;xor  (A12, A1, A2);not  (X, A12);
endmodulemodule EXO(A1, A2, X);
input  A1, A2;
output X;xor  (X, A1, A2);
endmodulemodule MEXN(A1, A2, X);
input  A1, A2;
output X;
wire  A12;xor  (A12, A1, A2);not  (X, A12);
endmodulemodule MEXO(A1, A2, X);
input  A1, A2;
output X;xor  (X, A1, A2);
endmodulemodule OB2(OUT, X);
input  OUT;
output X;buf  (X, OUT);
endmodulemodule OB1(OUT, X);
input  OUT;
output X;buf  (X, OUT);
endmodulemodule BUF1(A, X);
input  A;
output X;buf  (X, A);
endmodulemodule IBT(X, IN);
input  X;
output IN;buf  (IN, X);
endmodule
// demo.lib
library(lib_demo) {cell(AN2) {area : 2;pin(A) {direction : input;capacitance : 1;}pin(B) {direction : input;capacitance : 1;}pin(Z) {direction : output;function : "A B";}
}
cell(OR2) {area : 2;pin(A) {direction : input;capacitance : 1;}pin(B) {direction : input;capacitance : 1;}pin(Z) {direction : output;function : "A+B";}
}
cell(IV) {area : 1;pin(A) {direction : input;capacitance : 1;}pin(Z) {direction : output;function : "A'";}
}
}

        本实验使用Verilog仿真库,请按照下面描述的步骤操作进行库文件的读取。

1、在菜单中选择File-Read Library或者点击图标即可打开库读取窗口。

2、保持Format的默认值Verilog,以及Type默认值Both,这代表库文件将同时用于Golden和Revised设计。

3、选择Verilog仿真库文件lib.v。

4、点击Add Selected将库文件添加到File List中(或者双击文件)。

5、点击OK,读取库文件,库读取窗口将关闭,主窗口中会显示已成功读取库的提示信息。

Warning: (VLG5.5) Internal primitive is recognized (occurrence:6)

        这是由于Verilog仿真库中除了使用了Verilog标准门级原语外,还使用了MUX、DFF等Conformal LEC内部原语,可以忽略这个警告。

读取设计文件

        非扫描门级网表是Golden设计,插入扫描链后的门级网表是Revised设计,请按照下面描述的步骤操作进行设计文件的读取。

1、在菜单中选择File-Read Design或者点击图标即可打开设计读取窗口。

2、保持Format的默认值Verilog,以及Type默认值Golden,这代表设计文件将作为Golden设计。

3、选择设计文件golden.v。

4、点击Add Selected将设计文件添加到File List中(或者双击文件)。

5、点击OK,读取库文件,设计读取窗口将关闭,主窗口中会显示已成功读取设计的提示信息。

6、以相同的方法读取revised.v作为Revised设计,注意需要将Type设置为Revised

切换系统模式

        对于这个小型案例,假设没有需要指定的约束,直接点击右上角的图标切换系统模式为LEC,此时Conformal LEC将对设计进行建模(Model)和关键点(Key Point)映射。映射完成后,主窗口中会显示警告信息和已映射和未映射的关键点汇总表,在之后的步骤中,会检查这些结果。

查看未映射和已映射的关键点

        要查看关键点的详细信息,请选择Tools-Mapping Manager或者点击图标,此时Mapping Manager窗口将打开,如图2所示。

图2 Mapping Manager窗口

        当查看Mapping Manager中的Unmapped Points部分时,请注意以下信息:

  • 表示的是额外的输入/输出端口,该端口并未在另一个设计中找到对应的映射点。
  • Revised设计包含三个额外的扫描端口,这是可以接受的,因为Golden设计是一个非扫描设计。
  • Golden和Revised设计都多了一个额外的输出端口,因为它们的名称不同,Golden设计中的端口名称是n3104gat,而Revised设计中的端口名称是m3104gat。

        请按照以下步骤将这对因为名称不同导致未映射的关键点手动设置为映射。

1、选择Golden设计中的n3104gat关键点,此时其将高亮显示。

2、右键点击,并在弹出菜单中选择Set Target Mapping Point,此时n3104gat关键点的文字颜色会从黑色变为红色。

3、选择Revised设计中的m3104gat关键点,此时其将高亮显示。

4、右键点击,并在弹出菜单中选择Add Mapping Point-Non-invert,Conformal LEC会将这两个关键点从Unmapped Points部分移除,并将它们显示在Mapped Points部分列表的底部,如图3所示。

图3 Mapped Points列表

        在之后的步骤中,将对所有已映射的关键点进行比较,以确定它们是等价还是不等价。

进行比较验证

1、在Mapping Manager仍然打开的情况下的Mapped Points部分,点击图标将所有已映射的关键点添加为比较点。比较点现在显示在Compared Points部分,如图4所示,每对比较点前的图标表示比较点尚未进行验证。

图4 Compared Points列表

2、 点击图标开始比较,主窗口中的状态栏会显示比较的进度(以百分比形式)。验证完成后,每对等价的比较点会用绿色圆圈标记,不等价的比较点会用红色圆圈标记。

3、向下滚动Compared Points列表以查找不等价的比较点,或在Compared Points部分点击图标,并在弹出菜单中取消勾选Equivalent复选框,仅查看不等价的比较点,如图5所示。

图5 查看不等价的比较点

诊断不等价的比较点

        在此步骤中,将诊断一对不等价的比较点,以了解它们为何不等价。当比较完成后,用户可以查看不等价点的诊断信息,例如逻辑锥(logic cone)及其支持点(support)。

1、在Mapping Manager中,选择任意一对不等价的比较点(比如Golden设计中的U100/DF和Revised设计中的U100/DFSCAN这对比较点)。

2、右键点击,并在弹出菜单中选择Diagnose,打开Diagnosis Manager,如图6所示。

图6 Diagnosis Manager窗口

        Diagnosis Manager显示之前步骤中选择的不等价的比较点相关的信息。该信息分为两列Golden和Revised。在Diagnosis Manager中,找到以下部分:

Compared Point

        显示之前步骤中选择的不等价的比较点。

Diagnosis Point (active)

        显示诊断点(一般为比较点的输入)及其仿真值。请注意,Golden设计和Revised设计的仿真值(在括号中显示)并不相同,Golden设计的值为0,而Revised设计的仿真值为1。

Corresponding Support

        此部分显示诊断点的逻辑锥中对应的支持点(即作为逻辑锥输入的关键点)及其仿真值(在括号中显示)。

Non-corresponding Support

        此部分列出了只出现在某一个设计诊断点的逻辑锥中的支持点。例如,scan_en输入端口是Revised设计诊断点的逻辑锥中的未映射关键点,不存在Golden设计诊断点的逻辑锥中对应的关键点。Revised设计诊断点的逻辑锥中的U99/DFFSCAN是一个已映射的关键点,但其对应的Golden设计中的U99/DF却不是该逻辑锥的支持点。

        对于Corresponding SupportNon-corresponding Support,支持点可以有多种颜色:绿色表示支持点也进行了比较并证明为与其对应关键点是等价的,例如Golden设计中的U149/DF与Revised设计中的U149/DF进行了比较并且是等价的;红表示支持点也进行了比较并证明为与其对应关键点是不等价的,例如Golden设计中的U147/DF与Revised设计中的U149/DFSCAN进行了比较并且是不等价的;黑色表示支持点尚未进行比较或者不能比较(比如其是未映射的,或者其是输入端口),例如Revised设计中scan_en即是未映射的,也是输入端口。

Error Pattern

        此部分列出了导致不等价的Pattern,它们证明了Golden和Revised诊断点仿真值之间的差异。每个错误Pattern的仿真值与支持点(不管是对应或不对应)相关联,当选择一个支持点时,Pattern中的关联列用粉色高亮显示,例如当选择n3100gat时,Pattern窗口的第一列变成粉色,如图7所示。

图7 选择支持点

        可以看出有两列用红色或绿色标出来了,这红色列表示在列出的所有Pattern中都为1,红色列表示在列出的所有Pattern中都为0,这很可能是错误的来源。

        请按照以下步骤查看诊断点的仿真值差异:

1、点击列表中的任意错误模式。

2、再点击另一个错误模式,比较对应支持点仿真值的变化(在括号中显示)。

Error Candidate

        此部分列出了导致错误的原语门候选项及其加权百分比,例如反相器和选择器,这表示最有可能导致诊断点仿真值差异的原因。

查看原理图

        要查看电路图表示,请在Diagnosis Manager中,点击顶部工具栏中的图标,原理图查看器会分别为Golden设计和Revised设计的逻辑锥打开两个单独的窗口,如图8和图9所示。

图8 Golden设计的原理图

图9 Revised设计的原理图

        在图8和图9中,比较点用蓝色表示,诊断点用青色表示,错误候选项用红色表示,支持点用紫色表示。逻辑锥中各处的仿真值用数字1或0列在图中表示,每当切换pattern时,这些仿真值也会相应切换。

        在Revised设计的原理图中可以看出,由于scan_en输入端口位1,导致进入了扫描模式,触发器的输入直接连接到另一个触发器的输出了,必须将scan_en信号约束为逻辑0,以便MUX门的功能路径生效。

添加引脚约束

        为了添加约束,执行以下步骤,将系统模式切换为Setup模式,并添加约束来使Revised设计中的scan_en引脚为0:

1、退出Diagnosis Manager窗口并 直接点击右上角的图标切换系统模式为SETUP。

2、在菜单中选择Setup-Pin Constraints打开Pin Constraints窗口。

3、点击Revised设计。

4、选择scan_en输入端口,右键点击,在弹出菜单中选择Add Constraint 0,如图10所示。

图10 设置端口约束

重新进行比较验证

        重新按照之前的步骤进行比较验证,此时的结果如图11所示,可以看出不存在不等价的比较点了。

图11 重新查看不等价的比较点

退出

        现在已经确认Golden设计和Revised设计是等价的,可以按照以下步骤退出Conformal结束本次实验了。

1、选择File-Exit

2、在弹出的确认对话框中点击Yes

Do脚本

        下面的Dofile可以完成本实验的相同操作,相比于使用GUI进行验证,使用脚本更加高效。

read library lib.v -both
read design golden.v -verilog -golden
read design revised.v -verilog -revised
set system mode lec
add mapped points n3104gat m3104gat
add compare points -all
compare
diagnose /U100/DF -golden
set system mode setup
add pin constraint 0 scan_en -revised
set system mode lec
add mapped points n3104gat m3104gat
add compare point -all
compare
exit -f

        Dofile可以使用Cadence的综合工具RTL Compiler或Genus生成。

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

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

相关文章

【Torch】nn.Embedding算法详解

1. 定义 nn.Embedding 是 PyTorch 中的 查表式嵌入层(lookup‐table),用于将离散的整数索引(如词 ID、实体 ID、离散特征类别等)映射到一个连续的、可训练的低维向量空间。它通过维护一个形状为 (num_embeddings, emb…

cdq 三维偏序应用 / P4169 [Violet] 天使玩偶/SJY摆棋子

最近学了 cdq 分治想来做做这道题,结果被有些毒瘤的代码恶心到了。 /ll 题目大意:一开始给定一些平面中的点。然后给定一些修改和询问: 修改:增加一个点。询问:给定一个点,求离这个点最近(定义…

System.Threading.Tasks 库简介

System.Threading.Tasks 是 .NET 中任务并行库(Task Parallel Library, TPL)的核心组件,它提供了基于任务的异步编程模型,是现代 .NET 并发编程的基础。 设计原理 1. 核心目标 抽象并发工作:将并发操作抽象为"任务"概念 资源高效…

Python爬虫实战:研究jieba相关技术

1. 引言 1.1 研究背景与意义 随着互联网技术的飞速发展,网络新闻已成为人们获取信息的主要渠道之一。每天产生的新闻文本数据量呈爆炸式增长,如何从海量文本中高效提取有价值的信息,成为信息科学领域的重要研究课题。文本分析技术通过对文本内容的结构化处理和语义挖掘,能…

github 淘金技巧

1. 效率,搜索,先不管。后面再说。 2. 分享的话, 其实使用默认的分享功能也行。也是后面再说。此 app , 今天先做到这里。 下面我们再聊点其他东西。其实我还想问,这个事情,其他人是否也做了, ht…

RAG技术发展综述

摘要 检索增强生成(Retrieval-Augmented Generation, RAG)技术已成为大语言模型应用的核心技术栈。RAG有效解决了LLM的幻觉问题、知识截止和实时更新挑战,目前正处于全面产业化阶段。本文系统性地分析RAG的全栈技术架构,包括检索…

集群聊天服务器---muduo库(3)

使用muduo网络库进行编译和链接的示例 项目的目录结构 bin: 存放可执行文件。 lib: 存放库文件。 include: 存放头文件。 src: 存放源代码文件。 build: 存放编译生成的中间文件。 example: 存放示例代码。 thirdparty: 存放第三方库。 CMakeLists.txt: CMake构建系统…

双核SOC/5340 应用和网络核间通讯

1: 可以在 nRF Connect SDK 文件夹结构的 samples/ipc/ipc_service 下找到示例,应用和网络核心在由 CONFIG_APP_IPC_SERVICE_SEND_INTERVAL 选项指定的时隙内相互发送数据。可以更改该值并观察每个核心的吞吐量如何变化 nRF5340 DK 可以使用 RPMsg 或 IC…

Spring Cloud Ribbon核心负载均衡算法详解

Ribbon 作为 Spring Cloud 生态中的客户端负载均衡工具,提供多种动态负载均衡算法,根据后端服务状态智能分配请求。其核心算法及适用场景如下: 🧠 一、Ribbon 负载均衡算法 算法名称工作原理引用来源轮询 (RoundRobinRule)按服务…

网站图片过于太大影响整体加载响应速度怎么办? Typecho高级图像处理插件

文章目录 LeleImges - Typecho高级图像处理插件 🖼️插件介绍 📝插件架构 🏗️主要功能 ✨性能优势 🚀系统要求 📋安装方法 📥详细配置说明 ⚙️图片质量设置 🎚️最大宽度/高度限制 📏压缩格式选择 🗜️压缩方法选择 🔧GIF处理方式 🎞️备份源文件 💾…

VUE3入门很简单(1)--- 响应式对象

前言 重要提示:文章只适合初学者,不适合专家!!! 什么是响应式对象? 在Vue3中,响应式对象就是这种智能温控器。当你修改JavaScript对象的数据时,Vue会自动更新网页上显示的内容&am…

广州华锐互动携手中石油:AR 巡检系统实现重大突破​

广州华锐互动在 AR 技术领域的卓越成就,通过一系列与知名企业、机构的成功合作案例得以充分彰显。其中,与中石油的合作项目堪称经典,展现了广州华锐互动运用 AR 技术解决实际难题、达成目标的强大实力。​ 中石油作为能源行业的巨擘&#xff…

权威认证!华宇TAS应用中间件荣获CCRC“中间件产品安全认证”

近日,华宇TAS应用中间件顺利通过了中国网络安全审查认证和市场监管大数据中心(CCRC)的信息安全认证,获得了IT产品信息安全认证证书。此次获证,标志着华宇TAS应用中间件在安全性、可靠性及合规性等方面达到行业领先水平,可以为政企…

BI财务分析 – 反映盈利水平利润占比的指标如何分析(下)

之前的文章重点把构成销售净利率、主营业务利润率、成本费用利润率、营业利润率、销售毛利率的分母像销售收入、营业收入、主营业务收入净额、成本费用总额做了比较细致的说明,把这几个基本的概念搞明白后,再来看这几个指标就比较容易理解了。 销售净利…

竹云受邀出席华为开发者大会,与华为联合发布海外政务数字化解决方案

6月20日-22日,华为开发者大会(HDC 2025)在东莞松山湖盛大召开。作为华为一年一度面向全球开发者的顶级科技盛会,今年的HDC不仅带来了HarmonyOS 6.0 Beta版本、盘古大模型5.5等多项重磅技术和产品更新,更聚集了全球极客…

AI助力游戏设计——从灵感到行动-靠岸篇

OK,朋友,如果你到了这里,那就证明这趟旅程,快要到岸了。 首先,恭喜你,到了需要这一步的时候。其实,如果你有一天真的用到了,希望你可以回来打个卡。行了,不废话&#xf…

vue将页面导出pdf,vue导出pdf ,使用html2canvas和jspdf组件

vue导出pdf 需求:需要前端下载把当前html下载成pdf文件–有十八页超长,之前使用vue-html2pdf组件,但是这个组件有长度限制和比较新浏览器版本限制,所以改成使用html2canvas和jspdf组件 方法: 1、第一步:我…

024 企业客户管理系统技术解析:基于 Spring Boot 的全流程管理平台

企业客户管理系统技术解析:基于Spring Boot的全流程管理平台 在企业数字化转型的浪潮中,高效的客户管理系统成为提升企业竞争力的关键工具。本文将深入解析基于Java和Spring Boot框架构建的企业客户管理系统,该系统涵盖员工管理、客户信息管…

JavaScript性能优化代码示例

JavaScript性能优化实战大纲 性能优化的核心目标 减少加载时间、提升渲染效率、降低内存占用、优化交互响应 代码层面的优化实践 避免全局变量污染,使用局部变量和模块化开发 减少DOM操作频率,批量处理DOM更新 使用事件委托替代大量事件监听器 优化循…

树的重心(双dfs,换根)

思路: 基于树形 DP 的两次遍历(第一次dfs计算以某个初始根(这里选了 1)为根时各子树的深度和与节点数,第二次zy进行换根操作,更新每个节点作为根时的深度和) 换根原理: 更换主根&…