news 2026/10/26 1:16:28

Formality:官方Tutorial(三)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Formality:官方Tutorial(三)

相关阅读

Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm=1001.2014.3001.5482


本文是对Synopsys Formality User Guide Tutorial中第三个实验的翻译(有删改),Lab文件可以从以下链接获取。

Formality官方Tutorialhttps://download.csdn.net/download/weixin_45791458/90220600?spm=1001.2014.3001.5501


实验三、Verifying fifo_jtag.v Against fifo_with_scan.v

在实验三中,将包括了扫描逻辑的网表fifo_with_scan.v作为参考设计,包括了扫描逻辑和JTAG逻辑的fifo_jtag.v作为实现设计,验证这两者之间的等价性。

在任何时候都可以通过执行以下命令退出并保存当前的Formality会话:

fm_shellGUI
使用save_session session_file_name命令1、选择File>Save Session

要重新启动该会话:

fm_shellGUI
使用restore_session session_file_name命令1、选择File>Restore Session

1、首先指定参考设计,在基于流程的工具栏上,点击1. Rel.,默认情况下,1. Read Design Files和Verilog...是激活的,如图1所示。

图1 点击1. Rel.

2、点击Verilog,会弹出Add Verilog Files对话框,如图2所示。

图2 点击Verilog

3、导航到GATE_WITH_SCAN目录并选择fifo_with_scan.v文件,如图3所示。

图3 添加设计文件

4、点击Open,然后点击加载文件按钮,如图4所示。

图4 加载设计文件

5、点击Read DB Libraries,并选择Read as a shared library(默认),如图5所示。 因为这是一个门级到门级的验证,所以fifo_with_scan.v和fifo_jtag.v设计的逻辑库必须同时指定。

图5 点击Read DB Libraries

6、点击DB,会弹出Add DB Files对话框,如图6所示。

图6 点击DB

7、导航到LIB目录并选择lsi_10k.db逻辑库文件,如图7所示。

图7 添加库文件

8、点击Open,然后点击加载文件按钮,如图8所示。

图8 加载库文件

9、点击Set Top Design,选择WORK库中的fifo设计,点击Set Top将其设置为顶层设计,如图9所示。

图9 设置顶层设计

10、接下来指定实现设计,过程类似于在指定参考设计的步骤。在基于流程的工具栏上,点击2. Impl.,默认情况下,1. Read Design Files和Verilog...是激活的,如图10所示。

图10 点击2. Impl.

11、点击Verilog,会弹出Add Verilog Files对话框,如图11所示。

图11 点击Verilog

12、导航到GATE_WITH_JTAG目录并选择fifo_jtag.v设计文件,如图12所示。

图12 添加设计文件

13、点击Open,然后点击加载文件按钮,如图13所示。

图13 加载设计文件

14、点击Set Top Design,选择WORK库中的fifo设计,点击Set Top将其设置为顶层设计,如图14所示(跳过Read DB Libraries,因为之前已经将lsi_10k.db指定为共享逻辑库)。

注意:你可能需要向下滚动才能找到fifo设计,因为插入的JTAG设计会显示在选择设计窗格的顶部。如果你不小心将错误的设计设置为顶层设计,首先删除容器,然后重新开始添加设计文件。

图14 设置顶层设计

15、点击3. Setup,本次验证中,参考设计在验证前必须禁用其插入的扫描功能,实现设计在验证前必须禁用其插入的扫描和JTAG功能(如果使用了SVF文件并设置了Automated Setup Mode模式,则不需要人为设置)。

图15 准备进行设置

16、点击Constants,然后点击Set...,会弹出Set Constant对话框,如图16所示。

图16 准备进行常量设置

17、点击Reference,选择fifo,在显示区域顶部附近的下拉框中会出现列表,如图17所示。

图17 选择参考设计

18、在Show Objects>Ports下选择Inputs,滚动或搜索名为test_se的端口并选择它,也可以使用搜索文本框来定位要更改的信号,如图18所示。

图18 选择输入端口test_se

19、在对话框底部的Constant Value区域,选择0(取消扫描使能)并点击OK,如图19所示。

图19 设置常量0

20、点击Implementation,选择fifo,在显示区域顶部附近的下拉框中会出现列表,如图20所示。

图20 选择实现设计

21、重复步骤18和19,将实现设计中的test_se、jtag_trst和jtag_tms测试信号设置为常量0并点击Apply,如图21所示。

图21 设置常量0

22、关闭Set Constant对话框,Constants报告列出了四个已禁用的信号,其中一个属于参考设计,三个属于实现设计,如图22所示。

图22 常量报告

23、点击4. Match,点击Run Matching,匹配结果显示有十六个不匹配的点。

图23 进行匹配

24、点击OK以关闭信息对话框,然后点击Unmatched Points,将看到关于不匹配点的报告,如图24所示。这些是实现设计中的额外匹配点,与之前禁用的插入扫描逻辑和JTAG逻辑,在这种情况下额外的匹配点在实现设计中是预期的,因此可以忽略它们并继续进行验证过程。具体来说,JTAG插入会导致一个大型逻辑块(称为TAP控制器)的添加(需要注意的是,一般情况下,参考设计中不能出现未匹配的非常量比较点,否则会验证失败)。

图24 不匹配点报告

有关比较点匹配的详细介绍,可见下文。

Formality:匹配(match)是如何进行的?https://chenzhang.blog.csdn.net/article/details/144404964

25、点击5. Verify,点击Verify,验证成功,如图25所示。这说明JTAG插入未改变实现设计的功能特性(如果在步骤16到21中没有禁用测试信号,验证将会失败)。

图25 验证成功

原文链接
Formality各版本User Guidehttps://download.csdn.net/download/weixin_45791458/90184000?spm=1001.2014.3001.5503

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/26 1:11:12

PLC工程师入行与进阶指南:从电气基础到现场调试的90条实战经验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 1:10:21

PLSQL连Oracle:instantclient_11_2配置与ORA报错排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 1:10:06

PLC工程师12年经验90条:从认知到调试的自动化岗位实用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 1:09:55

存储芯片代理商视角:eMMC与SSD选型、初始化及量产全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 1:09:23

基于HPM6750非对称双核AMP的国产飞控系统设计实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 1:09:15

Qt智能家居上位机:多链路接入与本地场景联动

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华