Synlig 项目使用教程
synlig SystemVerilog support for Yosys 项目地址: https://gitcode.com/gh_mirrors/sy/synlig
1. 项目介绍
Synlig 是一个用于 SystemVerilog 的合成工具,它使用 Surelog 作为 SystemVerilog 2017 的预处理器、解析器和详细说明器,并以 Yosys 作为合成框架。Synlig 旨在提供对 SystemVerilog 语言的全面支持,使得用户能够更方便地进行硬件设计和验证。
2. 项目快速启动
安装 Synlig
首先,确保你已经安装了所有必要的依赖项:
apt install -y jq curl wget tk
然后,使用以下脚本下载 Synlig:
curl https://api.github.com/repos/chipsalliance/synlig/releases/latest | jq -r '.assets | .[] | select(.name | startswith("synlig")) | .browser_download_url' | xargs wget -O - | tar -xz
下载完成后,设置环境变量以确保 Synlig 可用:
export PATH=`pwd`/synlig:$PATH
使用 Synlig
以下是一个简单的示例,展示如何使用 Synlig 进行 SystemVerilog 文件的合成:
# 读取 SystemVerilog 文件
read_systemverilog counter.sv
# 执行 Xilinx 合成
synth_xilinx
# 输出 EDIF 文件
write_edif counter.edif
3. 应用案例和最佳实践
案例:计数器设计
考虑以下 SystemVerilog 代码,它定义了一个简单的计数器模块:
module top (
input clk,
output [3:0] led
);
localparam BITS = 4;
localparam LOG2DELAY = 22;
wire bufg;
BUFG bufgctrl (
.I(clk),
.O(bufg)
);
reg [BITS+LOG2DELAY-1:0] counter = 0;
always @(posedge bufg) begin
counter <= counter + 1;
end
assign led[3:0] = counter >> LOG2DELAY;
endmodule
使用 Synlig 进行合成:
read_systemverilog counter.sv
synth_xilinx
write_edif counter.edif
最佳实践
- 使用绝对路径:在处理大型设计时,建议使用绝对路径以避免文件路径问题。
- 调试模式:使用
-debug
标志可以打印 UHDM 树和转换后的 Yosys AST,有助于调试。 - 多文件设计:对于多文件设计,可以使用
-defer
标志逐个加载文件,最后使用-link
标志进行详细说明。
4. 典型生态项目
Surelog
Surelog 是 Synlig 使用的 SystemVerilog 2017 预处理器、解析器和详细说明器。它提供了对 SystemVerilog 语言的全面支持,是 Synlig 的核心组件之一。
Yosys
Yosys 是一个开源的硬件合成框架,Synlig 使用 Yosys 作为其合成引擎。Yosys 支持多种硬件描述语言,并提供了丰富的合成和优化功能。
OpenTitan
OpenTitan 是一个开源的硬件信任根(RoT)项目,Synlig 被用于其硬件设计的合成和验证。通过 Synlig,OpenTitan 能够更高效地进行硬件设计和验证。
Ibex
Ibex 是一个开源的 32 位 RISC-V 处理器核心,Synlig 被用于其硬件设计的合成和验证。通过 Synlig,Ibex 能够更高效地进行硬件设计和验证。
通过以上模块的介绍,您应该能够快速上手并使用 Synlig 进行 SystemVerilog 的合成工作。
synlig SystemVerilog support for Yosys 项目地址: https://gitcode.com/gh_mirrors/sy/synlig