IC开发——RTL综合

1. 概念

Verilog 是硬件描述语言,就是用代码的形式描述硬件的功能,最终在硬件电路上实 现该功能。在Verilog描述出硬件功能后需要使用综合器对Verilog代码进行解释并将代码转化成实际的电路来表示,最终产生实际的电路,也被称为网表。这种将Verilog代码转成网表的工具就是综合器。
verilog的代码是否能够综合成实际的电路,综合成的实际电路是否符合要求。都需要通过综合来验证。

2. ASIC和FPGA

Verilog 综合生成 FPGA 和 ASIC 电路之间确实存在一些差异,主要体现在以下几个方面:

  1. 目标器件差异:
    ○ FPGA (现场可编程门阵列)是可编程的半定制芯片,综合工具需要将设计映射到FPGA的可编程逻辑资源上。
    ○ ASIC (专用集成电路)是定制硅芯片,综合工具需要将设计映射到ASIC的标准单元和自定义IP核上。
  2. 优化目标差异:
    ○ FPGA 综合通常需要重点优化电路的时间延迟和资源占用,以充分利用FPGA的可编程性。
    ○ ASIC 综合需要考虑更多的因素,如面积、功耗、制造成本等,以达到最优的电路实现。
  3. 综合约束差异:
    ○ FPGA 综合需要设置时序约束、资源约束等,合理利用FPGA的可编程资源。
    ○ ASIC 综合需要设置面积、功耗、时序约束等,满足ASIC芯片的设计要求。
  4. 综合策略差异:
    ○ FPGA 综合可以利用FPGA特有的资源,如查找表(LUT)、片内存储器等,进行针对性的优化。
    ○ ASIC 综合需要选择合适的标准单元库,并进行电路的结构优化和布局布线。
  5. 综合结果差异:
    ○ FPGA 综合的结果是一个可编程的电路网表,需要进一步进行布局布线。
    ○ ASIC 综合的结果是一个可直接用于芯片制造的电路版图。

3. 综合工具

ASIC综合工具主要包括以下几类:

  1. Synopsys Design Compiler:
    ○ 由Synopsys公司提供的业界领先的ASIC综合工具。
    ○ 具有强大的优化算法和支持多种标准单元库。
    ○ 广泛应用于工业界和学术界的ASIC设计中。
  2. Cadence Genus Synthesis Solution:
    ○ 由Cadence公司开发的ASIC综合工具。
    ○ 集成了电路分析、优化、时序检查等功能。
    ○ 与Cadence的其他设计工具有较好的集成。
  3. Mentor Graphics Precision RTL Synthesis:
    ○ 由Mentor Graphics公司提供的ASIC综合工具。
    ○ 支持多种硬件描述语言和标准单元库。
    ○ 具有良好的性能和面积优化能力。
  4. IC Compiler II:
    ○ 由Synopsys公司开发的一体化ASIC设计解决方案。
    ○ 包含综合、布局、时序分析等多个步骤。
    ○ 针对先进工艺节点提供优化算法。
  5. Xilinx Vivado High-Level Synthesis:
    ○ 由Xilinx公司开发的针对FPGA和ASIC的综合工具。
    ○ 支持C/C++/SystemC等高级语言合成。
    ○ 可以为FPGA和ASIC生成RTL代码。
  6. Yosys:
    ○ 由Clifford Wolf开发的开源综合工具。
    ○ 支持Verilog/VHDL/SystemVerilog等硬件描述语言。
    ○ 具有良好的可扩展性,可以集成到其他EDA工具中。
    ○ 广泛应用于FPGA和ASIC设计中。

4. Yosys

4.1. 安装

4.1.1. 命令安装

sudo apt-get install yosys
yosys
安装完成显示如下:
在这里插入图片描述

从代码安装

命令行安装的版本较旧,从代码可以安装最新版本。

sudo apt-get install build-essential clang bison flex \
	libreadline-dev gawk tcl-dev libffi-dev git \
	graphviz xdot pkg-config python3 libboost-system-dev \
	libboost-python-dev libboost-filesystem-dev zlib1g-dev
git clone https://github.com/YosysHQ/yosys.git
cd yosys
mkdir build && cd build
make -f ../Makefile
suod make install

4.2. 使用

Yosys支持tcl脚本和自定义的ys脚本,内容是样的,只是调用方式略有不同。
verilog代码:

module test(
     input       data,
     input       en ,
     output reg  q) ;

     always @(*) begin
         if (en) q = data ;
     end

 endmodule

4.2.1. TCL脚本

# 读取Verilog源文件
read_verilog test.v

# 设置顶层模块
hierarchy -top test

# 执行综合优化
proc
opt
techmap
opt

# 输出综合结果
write_verilog synth.v

# 显示电路结构
show

yosys -s run.tcl -l syn.log

在这里插入图片描述

4.2.2. YS脚本

# 读取Verilog源文件
read_verilog test.v

# 设置顶层模块
hierarchy -top test

# 执行综合优化
proc
opt
techmap
opt

# 输出综合结果
write_verilog synth.v

# 显示电路结构
show

4.3. show命令

  1. 显示模块层次结构:

show

这会以树状结构显示当前设计的模块层次。
2. 显示指定模块的内部结构:

show -module my_module

这会显示名为my_module的模块的内部结构,包括ports、wires、cells等信息。
3. 显示逻辑优化后的电路结构:

show -format pdf my_module

这会将名为my_module的模块的优化后的电路结构保存为PDF格式的图形。
4. 显示特定对象的属性:

show -attributes my_signal

这会显示名为my_signal的信号的各种属性,如位宽、驱动源、负载等。
5. 显示当前设计的统计信息:

show -stats

  • 27
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值