Formality:设计库(Design Library)和工艺库(Technology Library)

发布时间:2026/11/12 17:17:21

Formality:设计库(Design Library)和工艺库(Technology Library) 相关阅读Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482如果在Formality中按照层次结构划分设计对象从上到下分别是容器(Container)、库(Library)、设计(Design)本文就将介绍库这一层次。设计库设计库中保存了所有读取的设计模块这些模块将会在使用set_top命令进行展开(elaborate)时被解析设计库的概念就像是VCS中三步法中的逻辑库和Design Compiler中的设计库那样如下文所示。VCS三步法的仿真流程https://blog.csdn.net/weixin_45791458/article/details/143470583?ops_request_misc%257B%2522request%255Fid%2522%253A%252235a6a69d8ad72138160e76cd670ad3ef%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_id35a6a69d8ad72138160e76cd670ad3efbiz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-143470583-null-null.nonecaseutm_term%E4%B8%89%E6%AD%A5spm1018.2226.3001.4450如果使用fm_shell可以使用以下命令将设计读取到设计库中read_verilog命令读取Verilog源代码、read_sverilog命令读取SystemVerilog源代码、read_vhdl命令读取VHDL源代码、read_ddc读取Synopsys数据库格式的设计。如果使用GUI可以在1. Read Design Files窗口中点击对应的设计格式添加文件并点击加载文件按钮如图1所示需要注意的是在GUI界面只能进行默认容器r和i的文件读取。图1 读取设计文件如果不加指定所有被读取的设计将被放入默认设计库WORK中除非使用-libname或-work_library选项进行指定。图2展示了容器r中的默认设计库WORK中的模块。图2 默认设计库中的模块图3展示了将设计fifo作为顶层设计的过程其中WORK右侧括号也表明了是一个设计库。图3 指定设计库中的设计为顶层设计report_designs命令可以报告设计的相关信息可以指定容器、设计库或设计如下所示指定容器。Formality (setup) report_designs r ************************************************** Report : designs r Reference : None Implementation : None Version : O-2018.06-SP1 Date : Sun Jan 5 15:44:32 2025 ************************************************** ______________________________________________________________________________ | | | Legend: | | Statistics Attributes | | c number of cells c CONSENSUS resolution type | | linked(unlinked) x BLACKBOX resolution type | | p number of ports a AND resolution type | | n number of nets o OR resolution type | | f flatten | | r retimed | | v VHDL configuration | |______________________________________________________________________________| ######################################################################################################## #### DESIGN LIBRARY - r:/WORK ######################################################################################################## Design Name Statistics Attributes Verification status ----------- ---------- ---------- ------------------- fifo c70(68) p73 n156 c fifo_DW01_mux_any_256_4_16_0 c65(65) p276 n325 c fifo_DW01_mux_any_256_4_16_1 c65(65) p276 n325 c fifo_DW_MEM_R_W_S_LAT_16_16_0 c546(546) p54 n599 c fifo_DW_MEM_R_W_S_LAT_16_16_1 c546(546) p54 n599 c fifo_DW_ram_r_w_s_lat_32_16_0 c29(29) p75 n102 c gray2bin_COUNT_WIDTH4_0 c3(3) p8 n7 c gray2bin_COUNT_WIDTH4_1 c3(3) p8 n7 c gray2bin_COUNT_WIDTH4_2 c3(3) p8 n7 c gray2bin_COUNT_WIDTH4_3 c3(3) p8 n7 c gray_counter_WIDTH4_0 c30(30) p16 n35 c gray_counter_WIDTH4_1 c30(30) p16 n35 c pop_ctrl_DEPTH16_counter_width4_almost_empty_level8 c41(41) p17 n69 c push_ctrl_DEPTH16_counter_width4_almost_full_level8 c41(41) p17 n69 c rs_flop c3(3) p5 n7 c rs_flop_width1_reset_value1 c6(4) p5 n10 c 1工艺库工艺库用于解析设计中已经映射的单元默认情况下所有容器拥有GTECH工艺库它是用于解析GTECH格式或者说Generic Technology格式的设计Design Compiler准确说是其中的HDL Compiler读取一个源代码设计后会自动将其转换为GTECH格式。如果使用fm_shell可以使用read_db命令读取一个.db格式的工艺库。如果使用GUI 可以在2. Read DB Libraries窗口中添加文件并点击加载文件按钮如图4所示需要注意的是在GUI界面只能进行默认容器r和i的文件读取。图4 读取工艺库文件可以发现图4的左侧有Read as a shared library选项可供选择这与使用read_db命令时不指定-container选项是等价的。如果不加指定所有被读取的设计将被放入默认工艺库TECH_WORK中除非使用-libname选项进行指定。需要注意的是同一个容器中的设计库和工艺库不能重名否则会出现FM-106错误。所有的工艺库有两种状态共享库和非共享库。当以共享库的格式读取一个工艺库时工艺库将以共享格式保存并且所有容器包括当前存在的容器和未来新建的容器都能共享它或者说所有容器中都有一个该工艺库的副本但该副本是否会随原件的删除而删除取决于该副本的Shared状态当以非共享库的格式读取一个工艺库时工艺库将以私有格式保存只有特定容器保存了该工艺库。report_libraries -short命令可以报告工艺库的相关信息如下所示为默认的工艺库信息。Formality (setup) report_libraries -short ************************************************** Report : libraries -short Reference : None Implementation : None Version : O-2018.06-SP1 Date : Sun Jan 5 16:11:59 2025 ************************************************** Number of Cells Shared Technology Library --------- ------ ------------------ 89 Yes GTECH 89 Yes i:/GTECH 89 Yes r:/GTECH 1其中GTECH有三个版本其中没有容器前缀的GTECH表明其是以共享格式保存的工艺库而i:/GTECH和r:/GTECH是其副本分别被容器i和r拥有。当将工艺库typical.db以非共享的格式读取进容器r中时report_libraries -short命令的结果如下所示。Formality (setup) report_libraries -short ************************************************** Report : libraries -short Reference : None Implementation : None Version : O-2018.06-SP1 Date : Sun Jan 5 16:15:26 2025 ************************************************** Number of Cells Shared Technology Library --------- ------ ------------------ 89 Yes GTECH 89 Yes i:/GTECH 89 Yes r:/GTECH 626 No r:/TYPICAL 1其中工艺库TYPICAL有容器前缀r而不存在没有容器前缀的TYPICAL表明其是以私有格式保存的工艺库其Shared状态为No也能辅以表明这点但不是说Shared状态为No就一定是非共享库只有容器r保存了该工艺库。当将工艺库fast.db以共享的格式读取进容器r中时report_libraries -short命令的结果如下所示。Formality (setup) report_libraries -short ************************************************** Report : libraries -short Reference : None Implementation : None Version : O-2018.06-SP1 Date : Sun Jan 5 16:22:43 2025 ************************************************** Number of Cells Shared Technology Library --------- ------ ------------------ 626 Yes FAST 89 Yes GTECH 626 Yes i:/FAST 89 Yes i:/GTECH 626 Yes r:/FAST 89 Yes r:/GTECH 626 No r:/TYPICAL 1其中工艺库FAST有三个版本其中没有容器前缀的FAST表明其是以共享格式保存的工艺库而i:/FAST和r:/FAST是其副本分别被容器i和r拥有。需要注意的是由于i:/FAST和r:/FAST的Shared状态是Yes如果将原件FAST删除则i:/FAST和r:/FAST也会被删除。但如果使用set_top命令设置了一个容器的顶层设计该容器中共享库副本除GTECH外的Shared状态会变成No从而固定下来此时再将原件FAST删除该容器中副本就不会被删除。当设置容器r的顶层设计后report_libraries -short命令的结果如下所示。Formality (setup) report_libraries -short ************************************************** Report : libraries -short Reference : None Implementation : None Version : O-2018.06-SP1 Date : Sun Jan 5 16:22:43 2025 ************************************************** Number of Cells Shared Technology Library --------- ------ ------------------ 626 Yes FAST 89 Yes GTECH 626 Yes i:/FAST 89 Yes i:/GTECH 626 No r:/FAST 89 Yes r:/GTECH 626 No r:/TYPICAL 1其中r:FAST虽然是共享库的副本其Shared状态为No因此不会随FAST的删除而删除了但i:/FAST还是会随FAST的删除而删除。除了读取.db格式的工艺库Formality还支持读取Verilog仿真库即存在用户自定义原语(User Defined Primitive, UDP)的verilog文件对于该类仿真库有下面几种读取方式1、使用read_verilog -technology_library命令进行读取只能读取用户自定义原语其他模块会被视为黑盒用户自定义原语将被放入默认工艺库TECH_WORK用户指定的工艺库。2、使用read_verilog -vcs命令进行读取无需将用户自定义原语和其他模块分开可自动识别用户自定义原语将被放入默认工艺库TECH_WORK其他模块将被放入默认设计库WORK或用户指定的设计库。3、使用celldefine与endcelldefine编译指令标记随后使用read_verilog命令进行读取来源手册实测似乎已经失效仅支持模块读取但又会将其视为黑盒。4、使用hdlin_library_file变量指定的文件或hdlin_library_directory变量指定的目录中的文件会作为Verilog仿真库读取来源手册实测似乎已经失效。例如and、or之类的Verilog门级原语无需以工艺库的形式读取可以直接将其读取进设计库。下面展示了一个Verilog仿真库及其读取过程。// primitive.v primitive udp_dff (out, in, clk, clr_, set_, NOTIFIER); output out; input in, clk, clr_, set_, NOTIFIER; reg out; table // in clk clr_ set_ NOT : Qt : Qt1 // 0 r ? 1 ? : ? : 0 ; // clock in 0 1 r 1 ? ? : ? : 1 ; // clock in 1 1 * 1 ? ? : 1 : 1 ; // reduce pessimism 0 * ? 1 ? : 0 : 0 ; // reduce pessimism ? f ? ? ? : ? : - ; // no changes on negedge clk * b ? ? ? : ? : - ; // no changes when in switches ? ? ? 0 ? : ? : 1 ; // set output ? b 1 * ? : 1 : 1 ; // cover all transistions on set_ 1 x 1 * ? : 1 : 1 ; // cover all transistions on set_ ? ? 0 1 ? : ? : 0 ; // reset output ? b * 1 ? : 0 : 0 ; // cover all transistions on clr_ 0 x * 1 ? : 0 : 0 ; // cover all transistions on clr_ ? ? ? ? * : ? : x ; // any notifier changed endtable endprimitive // udp_dff// 错误的读取方式 fm_shell (setup) read_verilog -r primitive.v No target library specified, default is WORK Loading verilog file /home/qingteng/Desktop/test/primitive.v Warning: UDP udp_dff will be ignored. (File: /home/qingteng/Desktop/test/primitive.v Line: 1) (FMR_VLOG-173) Current container set to r// 正确的读取方式 fm_shell (setup) read_verilog -r -technology_library primitive.v No target library specified, default is TECH_WORK Loading verilog file /home/qingteng/Desktop/test/primitive.v Warning FML-021 (unsupported UDP entry) occurred 1 times Warning FML-023 (inconsistent UDP) occurred 2 times Info: Please refer to the formality log file for more details. Building primitive models ... udp_dff Building models succeeded. fm_shell (setup) report_libraries ***** ################################################################################ #### TECH LIB - r:/TECH_WORK ################################################################################ Library Cell Attributes ------------ ---------- udp_dff s可以在GUI界面查看该用户自定义原语已经被Formality用内部原语实现了如图5所示。图5 用户自定义源于udp_dff的内部实现设计库和工艺库的保存使用write_container命令可以将容器的数据包括设计库和工艺库内容即使可能它们没有在顶层设计用到但不包括set_constant命令等用户设置信息保存在.fsc后缀的文件中建议在进入Preverify模式前保存容器因为设计可能因为svf或upf被转换之后的会话可以使用read_container命令读取保存的容器。使用save_session命令可以将整个会话包括用户设置保存在.fss后缀的文件中可以使用restore_session命令重新启动会话。
延伸阅读

更多相关文章

2026/11/12 0:13:31

Havenlon | 杂谈:AI最终赢了,但中途那次“归零”更值得警惕

从东京的赛场到企业的生产系统,中间隔着一件东西:一个允许重来的环境一、七小时里,最值得看的不是分数 2026 年 7 月 9 日,东京。 AtCoder World Tour Finals 的算法决赛开赛七小时后,比分定格:OpenAI 的 A…

2026/11/10 10:32:25

终极艾尔登法环存档修改器:专业游戏数据编辑完全指南

终极艾尔登法环存档修改器:专业游戏数据编辑完全指南 【免费下载链接】ER-Save-Editor Elden Ring Save Editor. Compatible with PC and Playstation saves. 项目地址: https://gitcode.com/GitHub_Trending/er/ER-Save-Editor ER-Save-Editor是一款专为《艾…

2026/11/12 17:12:06

报名低压电工证实操考试考什么

郑州建筑工人考低压电工证怕考不过白交钱?这3点必须知道 怕考不过白交培训费?别让低压电工证成了你的“坑”!报名低压电工证多少钱,真的不贵,但如果你不知道怎么准备,钱就白花了。特别是郑州的建筑工人群体,低压电工证不仅是上岗的“通行证”,更是未…

2026/11/12 17:12:06

电工证是否要取消了?上岗必备证书还能考吗

电工证是否要取消了?上岗必备证书还能考吗 之前考的证在外省能不能转过来?这个问题我见过太多人问了,尤其是像你这样从安阳初次报考,准备上岗的小伙伴,心里肯定七上八下的。其实, 电工证是否要取消了…

2026/11/12 17:12:06

报名低压电工证电子证书查询

高中毕业也能考低压电工证?考前押题怎么用最有效? 你是不是也担心自己学历不高, 报名低压电工证 会遇到门槛?其实,只要符合年龄、健康等基本条件,学历不是最大的问题。今天就围绕你关心的【报名低压电工证】,结合商丘中小施工企业负责人的视角,详细…

2026/11/12 17:12:06

电工证公证怎么操作?官方报名入口你了解吗?

电工证公证怎么操作?官方报名入口你了解吗? 怕考不过白交培训费,这事儿我懂。去年焦作一家中小施工企业,花了几万块送员工去培训,结果一半人没通过考试,钱白花了不说,还耽误了工程进度。别急, 官方报名入口 早有答案,关键是你得知道怎么操作。…

2026/11/12 17:07:05

广州汕尾电工证补贴通过率揭秘:学历不高也能考,全流程怎么走?

广州汕尾电工证补贴通过率揭秘:学历不高也能考,全流程怎么走? 你是不是也觉得学历不高,怕报不上名?别担心,广州汕尾电工证补贴政策其实对很多人来说是个机会,尤其是那些想转行、转岗的朋友们。今天咱们就来聊聊这个补贴怎么申请,怎么备考,还有通过率…

2026/11/11 12:42:59

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/12 0:04:01

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘

工地太忙根本没时间复习考试?学习电工证到哪里学通过率揭秘 工地太忙根本没时间复习考试?你不是一个人。作为一名在南阳卧龙区干了七八年市政公用工程的电工,我深知这个问题的现实性。电工证不仅是工作的“入场券”,更是职业发展的“通行证”,但备考过程…

2026/11/12 0:04:01

双流电工证考别怕挂科!郑州报考避坑指南全攻略

双流电工证考别怕挂科!郑州报考避坑指南全攻略 实操考试心里没底怕挂科?双流电工证考在郑州报名,很多人因为不了解流程、准备不充分,白白浪费时间和金钱。作为三门峡应届工程类毕业生,我也曾经历过这样的焦虑。今天就从零开始,手把手教你如何避开郑州报…

2026/11/12 0:04:01

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少

之前考的证在外省能不能转过来 怎么报名考电工证培训价格多少 之前考的证在外省能不能转过来?这个问题确实让不少准备换城市工作的朋友犯了难,尤其像电工证这种实操性很强的证书,很多人担心跨省后证书能不能继续用。其实,只要符合相关流程,是可以顺利转…

2026/11/11 20:27:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/12 9:51:42

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑