当前位置: 首页 > article >正文

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
);
endmodule

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

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

Formality (setup)> report_black_boxes
**************************************************
Report         : black_boxes

Reference      : 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_box

       Instances : 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.micron

Components:
    Attributes:
       af - active falling
       ah - active high
       al - active low
       ar - active rising
        b - 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_boxes

Reference      : 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      ram4x32

       Instances : 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_boxes

Reference      : 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_box

       Instances : 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) begin
        if (reset)
            data_out <= 8'b0;
        else
            data_out <= data_in;
    end

endmodule

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

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

Formality (setup)> report_black_boxes
**************************************************
Report         : black_boxes

Reference      : 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_box

       Instances : 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) begin
        if (reset)
            data_out <= 8'b0;
        else
            data_out <= data_in;
    end

endmodule

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

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

Formality (setup)> report_black_boxes
**************************************************
Report         : black_boxes

Reference      : 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_box

       Instances : 1 of 1
       ------------------------
       r:/WORK/top_module/u_black_box

http://www.kler.cn/a/525930.html

相关文章:

  • MySQL(高级特性篇) 14 章——MySQL事务日志
  • DRF开发避坑指南01
  • 网站如何正式上线(运维详解)
  • HarmonyOS DevEco Studio模拟器点击运行没有反应的解决方法
  • RPC是什么?和HTTP区别?
  • vue和reacts数据响应式的差异
  • 基于RAG方案构专属私有知识库(开源|高效|可定制)
  • oracle中使用in 和 not in 查询效率分析
  • 控件【QT】
  • 对于RocksDB和LSM Tree的一些理解
  • 【MySQL】数据类型与表约束
  • 设想中的计算机语言:可执行对象的构造函数和析构函数
  • Vue.js路由管理与自定义指令深度剖析
  • Python | Pytorch | Tensor知识点总结
  • 智能汽车网络安全威胁报告
  • k8s--部署k8s集群--控制平面节点
  • 春节期间,景区和酒店如何合理用工?
  • DOM操作中childNodes与children的差异及封装方案
  • 算法随笔_30: 去除重复字母
  • 显示当前绑定变量
  • 【Elasticsearch】内置分词器和IK分词器
  • 【VASP】AIMD计算总结
  • 《千朵桃花一世开》浅谈
  • WGCLOUD服务器资源监控软件使用笔记 - Token is error是什么错误
  • Paddle和pytorch不可以同时引用
  • 实战LLM强化学习——使用GRPO(DeepSeek R1出圈算法)