首页/新闻资讯/正文详情

HDL Compiler:工具简介

发布时间:2026/9/25 8:49:19 来源:云帆数科 栏目:资讯中心
HDL Compiler:工具简介
相关阅读HDL Compilerhttps://blog.csdn.net/weixin_45791458/category_12893238.html?spm1001.2014.3001.5482HDL Compiler是一个内置于Design Compiler的工具它用于将HDL描述转换为GTECH格式或者说Generic Technology格式的网表该网表随后由Synopsys综合工具用于创建优化并映射到具体工艺的网表。简单理解对于例1所示的RTL代码当使用analyze/elaborate命令或read_file命令读取设计文件后它将会被转化为GTECH网表如图1所示。// 例1 module and_or_gate( input a, input b, input c, output and_out, output or_out ); assign and_out a b; assign or_out a | c; endmodule图1 GTECH网表使用report_cell命令可以清晰地看出C8和C9是来自gtech库的实例它们的单元名分别为GTECH_AND2和GTECH_OR2以GTECH开头并所有字母大写是gtech库单元的特点。**************************************** Report : cell Design : and_or_gate Version: U-2022.12-SP1 Date : Wed Feb 12 00:16:03 2025 **************************************** Attributes: b - black box (unknown) h - hierarchical n - noncombinational r - removable u - contains unmapped logic Cell Reference Library Area Attributes -------------------------------------------------------------------------------- C8 GTECH_AND2 gtech 0.000000 u C9 GTECH_OR2 gtech 0.000000 u -------------------------------------------------------------------------------- Total 2 cells 0.000000使用list_libs命令可以查看加载到内存的逻辑库可以看出其中gtech库存在于Design Compiler的安装路径/home/summer/Synopsys/syn/U-2022.12-SP1/libraries/syn之中。Logical Libraries: ------------------------------------------------------------------------- Library File Path ------- ---- ---- gtech gtech.db /home/summer/Synopsys/syn/U-2022.12-SP1/libraries/syn standard.sldb standard.sldb /home/summer/Synopsys/syn/U-2022.12-SP1/libraries/syn saed32hvt_ss0p75vn40c saed32hvt_ss0p75vn40c.db /home/summer/Desktop/testgtech库无需显式读取在使用analyze/elaborate命令或read_file命令读取设计文件时它就自动读取了。使用report_lib命令需要安装Library Compiler可以显示逻辑库中的所有单元在路径/home/summer/Synopsys/syn/U-2022.12-SP1/dw/doc下可以找到gtech库的手册dw_gtech_databook.pdf里面详细描述了所有GTECH单元的信息如图2所示。图2 GTECH_AND2单元的详细信息进阶理解在“简单理解”一章中我们学习了HDL Compiler是如何处理简单的组合逻辑的而对于时序逻例如触发器或锁存器HDL Compiler会将其用通用时序单元SEQGEN或者称为Generic/UnmappedSequential Cell表示SEQGEN的框图如图3所示。图3 SEQGEN及其引脚表示SEQGEN单元的引脚连接是由具体的RTL代码决定的例2展示了一个异步复位D触发器的RTL代码和其对应的SEQGEN连接如图4所示。// 例2 module D_FF ( input wire clk, input wire rst_n, input wire d, output reg q ); always (posedge clk or negedge rst_n) begin if (!rst_n) q 1b0; else q d; end endmodule图4 DFF的SEQGEN实现值得注意的是图4中还包括一个GTECH反相器这是为了建模低电平异步复位。读取命令的结果如下所示显示HDL Compiler根据RTL代码推断出了一个名为q_reg的触发器。Inferred memory devices in process in routine D_FF line 8 in file /home/summer/Desktop/test/example.v. | Register Name | Type | Width | Bus | MB | AR | AS | SR | SS | ST | | q_reg | Flip-flop | 1 | N | N | Y | N | N | N | N | 可综合操作符对于一些复杂的逻辑HDL Compiler会将其表示为可综合操作符而对于部分可综合操作符Design Compiler将使用DesignWare组件实现。表1列出了部分RTL中的操作符以及对应的可综合操作符。表1 部分RTL操作符与其对应的可综合操作符RTL操作符可综合操作符加法ADD_UNS_OP、ADD_UNS_CI_OP、ADD_TC_OP、ADD_TC_CI_OP-减法SUB_UNS_OP、SUB_UNS_CI_OP、SUB_TC_OP、SUB_TC_CI_OP*乘法MULT_UNS_OP、MULT_TC_OP/除法DIV_UNS_OP、MOD_UNS_OP、REM_UNS_OP、DIVMOD_UNS_OP、DIVREM_UNS_OP、DIV_TC_OP、MOD_TC_OP、REM_TC_OP、DIVMOD_TC_OP、DIVREM_TC_OP小于LT_UNS_OP、LT_TC_OP大于GT_UNS_OP、GT_TC_OP小于等于LEQ_UNS_OP、LEQ_TC_OP大于等于GEQ_UNS_OP、GEQ_TC_OP等于EQ_UNS_OP、EQ_TC_OP!不等于NE_UNS_OP、NE_TC_OP?:三目运算符、if语句、case语句、向量位选、数组读取SELECT_OP、MUX_OP逻辑左移ASH_UNS_TC_OP、ASH_UNS_UNS_OP逻辑右移ASHR_UNS_TC_OP、ASHR_UNS_UNS_OP算数左移ASH_TC_TC_OP、ASH_TC_UNS_OP算数右移ASH_UNS_TC_OP、ASH_UNS_UNS_OP从上表中可以看出一个RTL操作符会根据具体情况映射到不同的可综合操作符。以加法操作符为例例3展示了加数为无符号数的情况图5为HDL Compiler的转换结果例4展示了加数为有符号数的情况图6为HDL Compiler的转换结果。// 例3 module three_bit_adder( input [2:0] a, input [2:0] b, output [2:0] sum, output carry ); assign {carry, sum} a b; endmodule图5 映射后的加法操作符无符号// 例4 module three_bit_adder( input signed [2:0] a, input signed [2:0] b, output signed [2:0] sum, output carry ); assign {carry, sum} a b; endmodule图6 映射后的加法操作符有符号部分可综合操作符将被Design Compiler最终根据综合库或者称为DesignWare库实现综合库是一个可重用电路设计的集合与Synopsys的综合环境紧密集成。在综合过程中Design Compiler会从综合库中选择速度和面积优化最优的组件。综合库分为标准综合库standard.sldb或者称为Basic DW以及进阶综合库dw_foundation.sldb或者称为Licensed DW一般来说compile命令默认使用标准综合库除非将进阶综合库添加到synthetic_library中compile_ultra命令可以使用标准综合库和进阶综合库自动添加。下面详细分析RTL操作符是如何实现的首先按照之前的介绍RTL操作符经过HDL Compiler会转换为可综合操作符根据综合库信息可综合操作符会绑定到DesignWare组件或者说Synthetic modules而DesignWare组件有多种实现方式如图7所示。图6 RTL操作符的映射过程以上的方法称为操作符推断还可以直接显式例化DesignWare组件但需要提供相关参数如在例5中显式例化了一个乘法器DW02_mult提供了输入位宽参数。// 例5 module top(input [9:0]A, B, output [19:0]PRODUCT); DW02_mult #(.A_width(10), .B_width(10)) (.A(A), .B(B), .PRODUCT(PRODUCT)); endmodule有些DesignWare组件只能显式例化而无法操作符推断比如RAM如下所示。DW_ram_r_w_s_lat #(WIDTH,DEPTH) memory(.clk(push_clk), .cs_n(1b0), .wr_n(~push), .rd_addr(rd_address), .wr_addr(wr_address), .data_in(data_in), .data_out(dataout));顺带一提如果想强制指定DesignWare组件最终的实现方式可以显式例化DesignWare组件并在Design Compiler中使用set_implementation命令如果使用compile_ultra命令Design Compiler可能拒绝用户设置的实现方式。与gtech库的手册dw_gtech_databook.pdf类似DesignWare组件的手册也在路径/home/summer/Synopsys/syn/U-2022.12-SP1/dw/doc下名为dwbb_userguide.pdf。注意事项如果设计中存在大概率除GTECH单元外的未映射单元如SEQGEN单元、可综合操作符且此时用户想将设计保存如读取RTL代码后保存展开后的设计则需要将其保存为ddc格式而不能是verilog格式否则在后续读取文件时会把除GTECH单元外的未映射单元识别为未解析的设计即黑盒如以下警告所示。Warning: Design *** contains unmapped components. The description might not simulate and might not be read back into Design Compiler. (UID-175)顺带一提PrimeTime甚至无法识别保存为ddc格式的除GTECH单元外的未映射单元而Formality虽然可以识别保存为verilog格式和ddc格式的SEQGEN单元但无法识别verilog格式和ddc格式的可综合操作符。

相关推荐

EditPlus汇编环境配置:asm.stx语法高亮与asm.acp补全实战
EditPlus汇编环境配置:asm.stx语法高亮与asm.acp补全实战

简介:面向汇编语言开发者的EditPlus增强版配置包,内置asm.acp语法高亮与asm.stx样式表,解决默认编辑器对.asm文件无高亮、结构不清晰的问题,适合学习汇编、编写底层代码或需要轻量级IDE的程序员。压缩包共124个文件、约4.47MB&… · 2026/9/25 8:49:13

Notepad++中文版安全下载与本地化配置指南
Notepad++中文版安全下载与本地化配置指南

1. 为什么“Notepad 中文版下载安装”这个看似简单的问题,反而最容易踩坑?Notepad 是我从2008年写第一行批处理脚本起就用到现在的文本编辑器——不是因为它有多炫酷,而是它像一把磨得锃亮的瑞士军刀:轻、快、稳、不抢戏。但恰恰是… · 2026/9/25 8:49:13

VS+OpenCV+Qt实现相机标定与图像校正助手全流程
VS+OpenCV+Qt实现相机标定与图像校正助手全流程

简介:一套基于VSOpenCVQt实现的相机标定与图像校正助手,面向计算机视觉课程设计、大作业以及需要处理镜头畸变问题的开发者;压缩包共147个文件,包含43个bmp和38个jpg图像,既有真实拍摄的畸变图,也有棋盘格标… · 2026/9/25 8:49:06

从Excel到CRM:DeskcommCRM选型、部署与团队落地实战
从Excel到CRM:DeskcommCRM选型、部署与团队落地实战

团队用了三年Excel管客户,直到上个月我算了一笔账:销售离职带走的客户资料、重复跟进的撞单、管理层永远看不到的漏斗数据,一年下来损失的潜在业绩够买好几套企业软件。也就是在那时候,我开始系统性地调研CRM系统,最后… · 2026/9/25 9:57:48

OpenClaw(小龙虾 AI)本地部署:WSL2 + Docker + Node.js 环境搭建与 TaoToken 接入配置
OpenClaw(小龙虾 AI)本地部署:WSL2 + Docker + Node.js 环境搭建与 TaoToken 接入配置

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

读懂 Claude Code 源码:Agent 持续运行的关键在 settings.json 配置骨架
读懂 Claude Code 源码:Agent 持续运行的关键在 settings.json 配置骨架

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

新郑奔驰宝马奥迪专门维修店筛选名录 省心不踩坑
新郑奔驰宝马奥迪专门维修店筛选名录 省心不踩坑

在郑州新郑找靠谱的奔驰宝马奥迪专门修理店,不少车主都会遇到大大小小的麻烦。毕竟豪华车型结构精密,对维修技师的技术、配件品质要求都远高于普通家用车,选对门店,直接决定了维修效果和养车成本。很多车主找遍了比较不错的奔驰宝… · 2026/9/25 9:57:42

PyTorch nn.Linear深度解析:从矩阵运算到GPU优化
PyTorch nn.Linear深度解析:从矩阵运算到GPU优化

1. 这不是“调个函数”那么简单:为什么你总在nn.Linear上卡壳?我带过不少刚从TensorFlow转PyTorch的工程师,也辅导过大量高校实验室的研究生,发现一个特别有意思的现象:90%的人能写出nn.Linear(784, 128)这行代码&… · 2026/9/25 9:57:42

华为昇腾Atlas 300V Pro上YOLOv5推理部署实战与避坑指南
华为昇腾Atlas 300V Pro上YOLOv5推理部署实战与避坑指南

作为一个常年跟各种AI加速硬件打交道的开发者,这两年“atlas”这个词在推理部署圈子里的出现频率越来越高。去年底接了个工业质检项目,客户点名要在华为昇腾的Atlas 300V Pro 24G上跑YOLOv5模型做缺陷检测。我第一次拿到这块卡的时候,心里也犯… · 2026/9/25 9:57:24

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

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

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

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

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

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

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码