Formality:黑盒(black box)

相关阅读

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


简介

        在使用Formality时,黑盒(black box)的概念很重要,指的是一个其功能未知的设计。黑盒通常用于设计中不可综合的组件,包括RAM、ROM、模拟电路和硬核IP等。它也是需要匹配的对象之一,必须确保参考设计和实现设计之间存在一一对应的映射,黑盒输入引脚被视为比较点,而黑盒输出引脚被视为普通匹配点,关于这两者的概念,详见下面这篇博客。

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

哪些情况会产生黑盒?

只有端口定义而没有其他定义的设计(或者说模块)

        例1所示的设计black_box只有端口定义,因此被认为是黑盒设计,这种黑盒拥有完整的引脚定义(名字和方向)。

// 例1
module black_box (input wire clk,input wire reset,input wire [7:0] data_in,output wire [7:0] data_out
);
endmodulemodule top_module (input wire clk,input wire reset,input wire [7:0] data_in,output wire [7:0] data_out
);black_box u_black_box (.clk(clk),.reset(reset),.data_in(data_in),.data_out(data_out));
endmodule

        下面是使用report_black_boxes命令进行报告的结果。

Formality (setup)> report_black_boxes
**************************************************
Report         : black_boxesReference      : r:/WORK/top_module
Implementation : <None>
Version        : W-2024.09-SP2
Date           : Thu Jan 30 22:59:54 2025
**************************************************
Information: Implementation design is not set. (FM-149)
Information: Reporting black boxes for current reference design. (FM-184)___________________________________________________
|                                                   |
|  Legend:                                          |
|           Black Box Attributes                    |
|              s = Set with set_black_box command   |
|              i = Module read with -interface_only |
|              u = Unresolved design module         |
|              e = Empty design module              |
|              * = Unlinked design module           |
|             ut = Unread tech cells pins           |
|              L = Linked to non-black box design   |
|             cp = Cutpoint blackbox                |
|             ir = Internal rounded blackbox        |
|              f = Formality Power Model            |
|              m = Technology Macro cell (.db)      |
|___________________________________________________|##################################################################
####    DESIGN LIBRARY - r:/WORK
##################################################################
Type  Design Name
----  ----------
e      black_boxInstances : 1 of 1------------------------r:/WORK/top_module/u_black_box

功能信息不包含库文件(.db)中的设计

        以存储器为例,Memory Compiler会生成含引脚和时序信息的.lib文件,而经过Library Compiler编译后的.db文件中一般只含有一个存储器宏单元,且不包含功能信息,如下报告所示,其中的b属性代表该宏单元没有功能信息。

lc_shell> report_lib ram4x32_max ram4x32****************************************
Report : library
Library: ram4x32_max
Version: O-2018.06-SP1
Date   : Mon Jan 27 23:04:54 2025
****************************************Library Type            : Technology
Tool Created            : W-2004.12
Date Created            : .18-Dec-2001
Library Version         : .1.0
Comments                : Unit Area representation == 6.0516 sq.micronComponents:Attributes:af - active fallingah - active highal - active lowar - active risingb - black box (function unknown)Cell                Footprint    Attributes-------------------------------------------ram4x32             "ram4x32"        b, d, mo, s, u

        例2所示的设计ram4x32是来自逻辑库的宏单元,因此被认为是黑盒设计,这种黑盒拥有完整的引脚定义(名字和方向)。 

// 例2
module ram4x32_top(input wire CE1,              input wire CE2,           input wire OEB1,            input wire OEB2,            input wire CSB1,            input wire CSB2,           input wire WEB1,            input wire WEB2,           input wire [4:0] A1,         input wire [4:0] A2,        input wire [3:0] I1,         input wire [3:0] I2,         output wire [3:0] O1,        output wire [3:0] O2         
);ram4x32 U_ram4x32 (.CE1(CE1),.CE2(CE2),.OEB1(OEB1),.OEB2(OEB2),.CSB1(CSB1),.CSB2(CSB2),.WEB1(WEB1),.WEB2(WEB2),.A1(A1),.A2(A2),.I1(I1),.I2(I2),.O1(O1),.O2(O2));endmodule

        下面是使用report_black_boxes命令进行报告的结果。

Formality (setup)> report_black_boxes
**************************************************
Report         : black_boxesReference      : r:/WORK/ram4x32_top
Implementation : <None>
Version        : W-2024.09-SP2
Date           : Thu Jan 30 22:55:14 2025
**************************************************
Information: Implementation design is not set. (FM-149)
Information: Reporting black boxes for current reference design. (FM-184)___________________________________________________
|                                                   |
|  Legend:                                          |
|           Black Box Attributes                    |
|              s = Set with set_black_box command   |
|              i = Module read with -interface_only |
|              u = Unresolved design module         |
|              e = Empty design module              |
|              * = Unlinked design module           |
|             ut = Unread tech cells pins           |
|              L = Linked to non-black box design   |
|             cp = Cutpoint blackbox                |
|             ir = Internal rounded blackbox        |
|              f = Formality Power Model            |
|              m = Technology Macro cell (.db)      |
|___________________________________________________|##################################################################
####    TECH LIBRARY - r:/RAM4X32_MAX
##################################################################
Type  Design Name
----  ----------
m      ram4x32Instances : 1 of 1------------------------r:/WORK/ram4x32_top/U_ram4x32

变量hdlin_unresolved_modules定义为black_box时未解析的设计

        当设计的所有定义都缺失时,默认情况下(即变量hdlin_unresolved_modules定义为error时)在使用set_top命令进行展开时,会报错“Error: Unresolved references detected during link.”。如果将变量hdlin_unresolved_modules定义为black_box,则会将所有未解析的设计当做黑盒设,并提示“Warning: 1 blackbox designs were created for missing references.”。 

        如果使用命名端口连接,则该黑盒设计拥有引脚名字的定义而没有引脚方向的定义,如例3所示。

// 例3
module top_module (input wire clk,input wire reset,input wire [7:0] data_in,output wire [7:0] data_out
);black_box u_black_box (.clk(clk),.reset(reset),.data_in(data_in),.data_out(data_out));
endmodule

        如果使用位置端口连接,则该设计没有引脚名字和引脚方向的定义,如例4所示。 

// 例4
module top_module (input wire clk,input wire reset,input wire [7:0] data_in,output wire [7:0] data_out
);black_box u_black_box (clk,reset,data_in,data_out,);
endmodule

        对于引脚名字未定义的情况,Formality会使用默认的引脚名(p1、p2、p3...);对于引脚方向未定义的情况,Formality会尝试根据连接关系和局部几何结构智能地、保守地猜测引脚方向,并提示“Warning: 19 black-box pins of unknown direction found; see formality.log for list”。如果工具无法确定引脚方向,它会假设该引脚是双向的,这可能会导致多驱动线网。此外,可以使用set_direction命令来显式定义引脚方向。

        下面是使用report_black_boxes命令进行报告的结果。

Formality (setup)> report_black_boxes
**************************************************
Report         : black_boxesReference      : r:/WORK/top_module
Implementation : <None>
Version        : W-2024.09-SP2
Date           : Thu Jan 30 23:02:29 2025
**************************************************
Information: Implementation design is not set. (FM-149)
Information: Reporting black boxes for current reference design. (FM-184)___________________________________________________
|                                                   |
|  Legend:                                          |
|           Black Box Attributes                    |
|              s = Set with set_black_box command   |
|              i = Module read with -interface_only |
|              u = Unresolved design module         |
|              e = Empty design module              |
|              * = Unlinked design module           |
|             ut = Unread tech cells pins           |
|              L = Linked to non-black box design   |
|             cp = Cutpoint blackbox                |
|             ir = Internal rounded blackbox        |
|              f = Formality Power Model            |
|              m = Technology Macro cell (.db)      |
|___________________________________________________|##################################################################
####    TECH LIBRARY - r:/FM_BBOX
##################################################################
Type  Design Name
----  ----------
u      black_boxInstances : 1 of 1------------------------r:/WORK/top_module/u_black_box

使用变量hdlin_interface_only定义的设计

        在读取设计文件时,变量hdlin_interface_only指定的设计将被当做黑盒设计,这种黑盒拥有完整的引脚定义(名字和方向),如例5所示(如果变量hdlin_interface_only设置时,该设计已经读取,但还未使用set_top命令进行展开,其也会被当做黑盒设计,但此时report_black_boxes命令的结果将不被标记为i而是e)。 

// 例5
// 在使用set_top命令前设置变量hdlin_interface_only为black_box
module black_box (input wire clk,input wire reset,input wire [7:0] data_in,output reg [7:0] data_out
);always @(posedge clk or posedge reset) beginif (reset)data_out <= 8'b0;elsedata_out <= data_in;endendmodulemodule top_module (input wire clk,input wire reset,input wire [7:0] data_in,output wire [7:0] data_out
);black_box u_black_box (.clk(clk),.reset(reset),.data_in(data_in),.data_out(data_out));
endmodule

        下面是使用report_black_boxes命令进行报告的结果。

Formality (setup)> report_black_boxes
**************************************************
Report         : black_boxesReference      : r:/WORK/top_module
Implementation : <None>
Version        : W-2024.09-SP2
Date           : Thu Jan 30 23:13:27 2025
**************************************************
Information: Implementation design is not set. (FM-149)
Information: Reporting black boxes for current reference design. (FM-184)___________________________________________________
|                                                   |
|  Legend:                                          |
|           Black Box Attributes                    |
|              s = Set with set_black_box command   |
|              i = Module read with -interface_only |
|              u = Unresolved design module         |
|              e = Empty design module              |
|              * = Unlinked design module           |
|             ut = Unread tech cells pins           |
|              L = Linked to non-black box design   |
|             cp = Cutpoint blackbox                |
|             ir = Internal rounded blackbox        |
|              f = Formality Power Model            |
|              m = Technology Macro cell (.db)      |
|___________________________________________________|##################################################################
####    DESIGN LIBRARY - r:/WORK
##################################################################
Type  Design Name
----  ----------
i      black_boxInstances : 1 of 1------------------------r:/WORK/top_module/u_black_box

使用set_black_box命令人为指定的设计

        使用set_black_box命令可以将一个设计设置为黑盒设计,无论此时是否已使用set_top命令进行展开,这种黑盒拥有完整的引脚定义(名字和方向),如例6所示。 

// 例6
// 使用set_black_box命令设置black_box设计为黑盒
module black_box (input wire clk,input wire reset,input wire [7:0] data_in,output reg [7:0] data_out
);always @(posedge clk or posedge reset) beginif (reset)data_out <= 8'b0;elsedata_out <= data_in;endendmodulemodule top_module (input wire clk,input wire reset,input wire [7:0] data_in,output wire [7:0] data_out
);black_box u_black_box (.clk(clk),.reset(reset),.data_in(data_in),.data_out(data_out));
endmodule

        下面是使用report_black_boxes命令进行报告的结果。

Formality (setup)> report_black_boxes
**************************************************
Report         : black_boxesReference      : r:/WORK/top_module
Implementation : <None>
Version        : W-2024.09-SP2
Date           : Thu Jan 30 23:20:41 2025
**************************************************
Information: Implementation design is not set. (FM-149)
Information: Reporting black boxes for current reference design. (FM-184)___________________________________________________
|                                                   |
|  Legend:                                          |
|           Black Box Attributes                    |
|              s = Set with set_black_box command   |
|              i = Module read with -interface_only |
|              u = Unresolved design module         |
|              e = Empty design module              |
|              * = Unlinked design module           |
|             ut = Unread tech cells pins           |
|              L = Linked to non-black box design   |
|             cp = Cutpoint blackbox                |
|             ir = Internal rounded blackbox        |
|              f = Formality Power Model            |
|              m = Technology Macro cell (.db)      |
|___________________________________________________|##################################################################
####    DESIGN LIBRARY - r:/WORK
##################################################################
Type  Design Name
----  ----------
s      black_boxInstances : 1 of 1------------------------r:/WORK/top_module/u_black_box

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

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

相关文章

开源2+1链动模式AI智能名片S2B2C商城小程序:利用用户争强好胜心理促进分享行为的策略研究

摘要&#xff1a;随着互联网技术的快速发展和社交媒体的普及&#xff0c;用户分享行为在企业营销中的作用日益凸显。本文旨在探讨如何利用用户的争强好胜心理&#xff0c;通过开源21链动模式AI智能名片S2B2C商城小程序&#xff08;以下简称“小程序”&#xff09;促进用户分享行…

八股学习 微服务篇

微服务篇 常见面试内容Spring Cloud 常见组件注册中心Ribbon负载均衡策略服务雪崩 常见面试内容 Spring Cloud 常见组件 Spring Cloud有5个常见组件&#xff1a; Eureka/Nacos:注册中心&#xff1b;Ribbon:负载均衡&#xff1b;Feign:远程调用&#xff1b;Hystrix/Sentinel:服…

Synology 群辉NAS安装(6)安装mssql

Synology 群辉NAS安装&#xff08;6&#xff09;安装mssql 写在前面mssql 2019:成功安装说明&#xff0c;这个最终成功了 mssql 2022没有成功1. pull image2.启动mssql docker container 远程连接 写在前面 mssq是一个重要节点。 这是因为我对mysql没有一丝好感。虽然接触了许…

mysql_init和mysql_real_connect的形象化认识

解析总结 1. mysql_init 的作用 mysql_init 用于初始化一个 MYSQL 结构体&#xff0c;为后续数据库连接和操作做准备。该结构体存储连接配置及状态信息&#xff0c;是 MySQL C API 的核心句柄。 示例&#xff1a; MYSQL *conn mysql_init(NULL); // 初始化连接句柄2. mysql_…

qt-QtQuick笔记之常见项目类简要介绍

qt-QtQuick笔记之常见项目类简要介绍 code review! 文章目录 qt-QtQuick笔记之常见项目类简要介绍1.QQuickItem2.QQuickRectangle3.QQuickImage4.QQuickText5.QQuickBorderImage6.QQuickTextInput7.QQuickButton8.QQuickSwitch9.QQuickListView10.QQuickGridView11.QQuickPopu…

0 基础学运维:解锁 K8s 云计算运维工程师成长密码

前言&#xff1a;作为一个过来人&#xff0c;我曾站在技术的门槛之外&#xff0c;连电脑运行内存和内存空间都傻傻分不清&#xff0c;完完全全的零基础。但如今&#xff0c;我已成长为一名资深的k8s云计算运维工程师。回顾这段历程&#xff0c;我深知踏上这条技术之路的艰辛与不…

Spring Boot - 数据库集成06 - 集成ElasticSearch

Spring boot 集成 ElasticSearch 文章目录 Spring boot 集成 ElasticSearch一&#xff1a;前置工作1&#xff1a;项目搭建和依赖导入2&#xff1a;客户端连接相关构建3&#xff1a;实体类相关注解配置说明 二&#xff1a;客户端client相关操作说明1&#xff1a;检索流程1.1&…

联想拯救者R720笔记本外接显示屏方法,显示屏是2K屏27英寸

晚上23点10分前下单&#xff0c;第二天上午显示屏送到&#xff0c;检查外包装没拆封过。这个屏幕左下方有几个按键&#xff0c;按一按就开屏幕、按一按就关闭屏幕&#xff0c;按一按方便节省时间&#xff0c;也支持阅读等模式。 显示屏是 &#xff1a;AOC 27英寸 2K高清 100Hz…

什么是线性化PDF?

线性化PDF是一种特殊的PDF文件组织方式。 总体而言&#xff0c;PDF是一种极为优雅且设计精良的格式。PDF由大量PDF对象构成&#xff0c;这些对象用于创建页面。相关信息存储在一棵二叉树中&#xff0c;该二叉树同时记录文件中每个对象的位置。因此&#xff0c;打开文件时只需加…

你的连接不是专用连接

当你打开网站看到如下提示&#xff0c;说明SSL证书到期了。 攻击者可能试图www窃取你的信息&#xff08;例如、密码、消息或信用卡&#xff09;。详细了解此警告 NET::ERR_CERT_DATE_INVALID 此服务器无法证明它是WWW ;它的安全证书已于2天前到期。这可能是错误配置或攻击者…

51单片机开发:定时器中断

目标&#xff1a;利用定时器中断&#xff0c;每隔1s开启/熄灭LED1灯。 外部中断结构图如下图所示&#xff0c;要使用定时器中断T0&#xff0c;须开启TE0、ET0。&#xff1a; 系统中断号如下图所示&#xff1a;定时器0的中断号为1。 定时器0的工作方式1原理图如下图所示&#x…

【电工基础】1.电能来源,触电伤害,触电预防,触电急救

一。电能来源 1.电能来源 发电-》输电-》变电-》配电 2.分配电 一类负荷 如果供电中断会造成生命危险&#xff0c;造成国民经济的重大损失&#xff0c;损坏生产的重要设备以致使生产长期不能恢复或产生大量废品&#xff0c;破坏复杂的工艺过程&#xff0c;以及破坏大…

简易计算器(c++ 实现)

前言 本文将用 c 实现一个终端计算器&#xff1a; 能进行加减乘除、取余乘方运算读取命令行输入&#xff0c;输出计算结果当输入表达式存在语法错误时&#xff0c;报告错误&#xff0c;但程序应能继续运行当输出 ‘q’ 时&#xff0c;退出计算器 【简单演示】 【源码位置】…

python-leetcode-从前序与中序遍历序列构造二叉树

105. 从前序与中序遍历序列构造二叉树 - 力扣&#xff08;LeetCode&#xff09; # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right r…

NLP深度学习 DAY4:Word2Vec详解:两种模式(CBOW与Skip-gram)

用稀疏向量表示文本&#xff0c;即所谓的词袋模型在 NLP 有着悠久的历史。正如上文中介绍的&#xff0c;早在 2001年就开始使用密集向量表示词或词嵌入。Mikolov等人在2013年提出的创新技术是通过去除隐藏层&#xff0c;逼近目标&#xff0c;进而使这些单词嵌入的训练更加高效。…

vscode+WSL2(ubuntu22.04)+pytorch+conda+cuda+cudnn安装系列

最近在家过年闲的没事&#xff0c;于是研究起深度学习开发工具链的配置和安装&#xff0c;之前欲与天公试比高&#xff0c;尝试在win上用vscodecuda11.6vs2019的cl编译器搭建cuda c编程环境&#xff0c;最后惨败&#xff0c;沦为笑柄&#xff0c;痛定思痛&#xff0c;这次直接和…

Jason配置环境变量

jason官网 https://jason-lang.github.io/ https://github.com/jason-lang/jason/releases 步骤 安装 Java 21 或更高版本 安装 Visual Studio Code 根据操作系统&#xff0c;请按照以下具体步骤操作 视窗 下载 Jason 的最新版本&#xff0c;选择“jason-bin-3.3.0.zip”…

SpringBoot 日志与配置文件

SpringBoot 配置文件格式 Properties 格式 Component ConfigurationProperties(prefix "person") //和配置文件person前缀的所有配置进行绑定 Data public class Person {private String name;private Integer age;private Date birthDay;private Boolean like;pr…

HarmonyOS DevEco Studio模拟器点击运行没有反应的解决方法

HarmonyOS DevEco Studio模拟器点击运行没有反应的解决方法 翻遍了CSDN&#xff0c;试了所有办法都没办法&#xff0c;最后偶然间竟然解决了 解决方法其实很简单&#xff1a;本地模拟器下载路径下面不能有中文。。。。。 切换正确路径以后&#xff0c;成功运行&#xff0c;哦…

删除数组中的重复项(leetcode刷题)

题目描述&#xff1a; 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的…