跳到主要内容

开发环境

本章介绍 Verilog 开发环境的搭建,包括仿真工具、编辑器和综合工具。

仿真工具

Icarus Verilog

Icarus Verilog 是一款开源的 Verilog 仿真器。

安装

Windows:

# 下载安装包
# https://bleyer.org/icarus/

# 或使用 scoop
scoop install iverilog

Linux:

# Ubuntu/Debian
sudo apt-get install iverilog

# CentOS/RHEL
sudo yum install iverilog

macOS:

brew install icarus-verilog

编译和仿真

# 编译
iverilog -o sim.vvp counter.v tb_counter.v

# 运行仿真
vvp sim.vvp

# 查看波形
gtkwave waveform.vcd

常用选项

# 指定输出文件
iverilog -o output.vvp source.v

# 包含目录
iverilog -I./include source.v

# 定义宏
iverilog -DDEBUG source.v

# 显示警告
iverilog -Wall source.v

Verilator

Verilator 是一款高性能的 Verilog 仿真器,将 Verilog 编译为 C++ 代码。

安装

# Ubuntu/Debian
sudo apt-get install verilator

# macOS
brew install verilator

使用

# 编译
verilator --cc counter.v --exe tb_counter.cpp

# 构建
make -C obj_dir -f Vcounter.mk Vcounter

# 运行
./obj_dir/Vcounter

ModelSim

ModelSim 是 Mentor Graphics 公司的商业仿真器。

基本使用

# 启动
vsim

# 创建工作库
vlib work

# 编译
vlog counter.v tb_counter.v

# 仿真
vsim tb_counter

# 查看波形
add wave -r /*
run -all

脚本化仿真

# run_sim.tcl
vlib work
vlog *.v
vsim tb_counter
add wave -r /*
run -all
vsim -do run_sim.tcl

Vivado Simulator

Xilinx Vivado 自带的仿真器。

使用流程

  1. 创建项目
  2. 添加源文件
  3. 运行仿真
  4. 查看波形

TCL 命令

# 添加源文件
add_files counter.v
add_files -fileset sim_1 tb_counter.v

# 运行仿真
launch_simulation

# 添加波形
add_wave -r /

# 运行
run 1000ns

波形查看器

GTKWave

GTKWave 是开源的波形查看器。

基本操作

# 打开波形文件
gtkwave waveform.vcd

# 命令行选项
gtkwave -a config.gtkw waveform.vcd

快捷键

快捷键功能
Ctrl+S保存配置
Ctrl+O打开文件
Space放大
Backspace缩小
Home跳到开始
End跳到结束

波形配置保存

# 保存配置文件
# .gtkw 文件包含信号列表和显示设置

编辑器和 IDE

VS Code

推荐扩展

  • Verilog-HDL/SystemVerilog/Bluespec SystemVerilog
  • TerosHDL
  • Digital IDE
  • WaveTrace

配置示例

// settings.json
{
"verilog.linting.linter": "iverilog",
"verilog.iverilog.arguments": "-Wall",
"verilog.ctags.path": "ctags"
}

Vim

插件

  • verilog_systemverilog.vim
  • vim-hdl

配置

" 语法高亮
syntax on
filetype plugin indent on

" 自动补全
set omnifunc=syntaxcomplete#Complete

Emacs

插件

  • verilog-mode.el

配置

(require 'verilog-mode)
(setq verilog-auto-newline nil)

综合工具

Yosys

Yosys 是开源的 Verilog 综合工具。

安装

# Ubuntu/Debian
sudo apt-get install yosys

# macOS
brew install yosys

使用

# 交互模式
yosys

# 脚本模式
yosys synth.ys

综合脚本示例

# synth.ys
read_verilog counter.v
hierarchy -check
proc
opt
fsm
opt
memory
opt
techmap
opt
clean
write_verilog synth.v

Vivado

Xilinx 的综合和实现工具。

综合流程

# 创建项目
create_project my_project ./my_project

# 添加源文件
add_files counter.v

# 设置顶层模块
set_property top counter [current_fileset]

# 综合
synth_design -top counter

# 保存综合结果
write_verilog -force synth.v

Quartus

Intel 的综合和实现工具。

流程

  1. 创建项目
  2. 添加源文件
  3. 设置目标器件
  4. 运行综合
  5. 查看报告

项目管理

Makefile

# Makefile for Verilog simulation

# 变量定义
VLOG = iverilog
VPATH = vvp
VCD = waveform.vcd
GTKW = waveform.gtkw

# 源文件
SRC = counter.v
TB = tb_counter.v

# 目标
SIM = sim.vvp

# 默认目标
all: $(SIM)

# 编译
$(SIM): $(SRC) $(TB)
$(VLOG) -o $@ $^

# 运行仿真
run: $(SIM)
$(VPATH) $<

# 查看波形
wave: $(VCD)
gtkwave $< &

# 清理
clean:
rm -f $(SIM) $(VCD)

.PHONY: all run wave clean

项目结构

project/
├── rtl/ # RTL 源文件
│ ├── counter.v
│ └── top.v
├── tb/ # 测试平台
│ └── tb_counter.v
├── sim/ # 仿真脚本
│ └── run_sim.tcl
├── synth/ # 综合脚本
│ └── synth.ys
├── constraints/ # 约束文件
│ └── top.xdc
├── docs/ # 文档
└── Makefile

调试技巧

波形调试

  1. 添加关键信号

    • 时钟和复位
    • 状态机状态
    • 控制信号
    • 数据通路
  2. 使用断言

    always @(posedge clk) begin
    if (state == IDLE) begin
    assert(data_valid == 0) else $error("Invalid data in IDLE");
    end
    end
  3. 打印调试信息

    always @(posedge clk) begin
    $display("[%0t] State: %d, Data: %h", $time, state, data);
    end

常见问题

编译错误

Error: Unable to bind wire/reg/memory `signal_name'

解决:检查信号是否声明

仿真警告

Warning: Timescale not specified

解决:添加 `timescale 指令

综合问题

Warning: Signal `signal_name` is not driven

解决:检查信号是否被正确赋值

小结

本章介绍了 Verilog 开发环境:

  • 仿真工具:Icarus Verilog、Verilator、ModelSim、Vivado
  • 波形查看器:GTKWave
  • 编辑器:VS Code、Vim、Emacs
  • 综合工具:Yosys、Vivado、Quartus
  • 项目管理:Makefile、项目结构
  • 调试技巧:波形调试、断言、常见问题

搭建完善的开发环境是高效开发的基础。