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…

设计转换Apache Hive的HQL语句为Snowflake SQL语句的Python程序方法

首先&#xff0c;根据以下各类HQL语句的基本实例和官方文档记录的这些命令语句各种参数设置&#xff0c;得到各种HQL语句的完整实例&#xff0c;然后在Snowflake的官方文档找到它们对应的Snowflake SQL语句&#xff0c;建立起对应的关系表。在这个过程中要注意HQL语句和Snowfla…

什么是线性化PDF?

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

Java基础知识总结(三十二)--API--- java.lang.Runtime

类中没有构造方法&#xff0c;不能创建对象。 但是有非静态方法。说明该类中应该定义好了对象&#xff0c;并可以通过一个static方法获取这个对象。用这个对象来调用非静态方法。这个方法就是 static Runtime getRuntime(); 这个Runtime其实使用单例设计模式进行设计。 class …

向量和矩阵算法笔记

向量和矩阵算法笔记 Ps:因为本人实力有限,有一部分可能不太详细,若有补充评论区回复,QWQ 向量 向量的定义 首先,因为我刚刚学到高中的向量,对向量的看法呢就是一条有长度和方向的线,不过这在数学上的定义其实是不对,甚至跟我看的差别其实有点大,真正的定义就是数域…

你的连接不是专用连接

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

deb安装失败后,无法再安装别的包的解决方案

把package_name换成出安装问题的包 移除该包的安装标记 sudo dpkg --remove --force-remove-reinstreq package_name清理残留文件和配置 sudo apt-get purge package_name

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

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

变量声明是否可以放在语句之后?变量声明?声明变量一定需要指定类型吗?函数范围快捷使用临时变量?

变量声明是否可以放在语句之后? 除了C89必须将变量声明放在语句之前&#xff0c;其他主流编程语言基本都支持变量声明和语句混合使用。Fortran/C89/Pascal 只能将变量声明放在语句之前。 准确的说&#xff0c;Pascal的变量声明必须放在程序的说明定义部分&#xff0c;即程序首…

【电工基础】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…

YOLOv11-ultralytics-8.3.67部分代码阅读笔记-head.py

head.py ultralytics\nn\modules\head.py 目录 head.py 1.所需的库和模块 2.class Detect(nn.Module): 3.class Segment(Detect): 4.class OBB(Detect): 5.class Pose(Detect): 6.class Classify(nn.Module): 7.class WorldDetect(Detect): 8.class RTDETRDec…