初识数字电路设计
仿真环境搭建
采取精简的原则,选择 VScode + Modelsim 的 Windows 环境作为代码书写及仿真环境,配置参考了 CSDN 教程 Windos下高效Verilog环境搭建。
配置 VScode
下载并配置Universal Ctags 软件及 Win 系统变量。登陆网站:github, 解压后放到软件盘路径,并添加环境变量
需要的 VScode插件列表:
- Verilog-HDL/SystemVerilog/Bluespec SystemVerilog
用于语法检查、代码跳转、自动补全、自动生成实例化代码
插件安装完成之后需要对插件进行配置,在 VScode 中的 File->Preferences->Settings 中搜索 Verilog,对 Verilog. Ctags. Path、Verilog.Linting.Linter、Verilog.Linter.Modelsim.Work进行配置这里的work(必填)是对应modelsim的逻辑库名,不填这个无法做语法检查。
- CTags Support
代码跳转必备软件, 此插件不需要过多配置。
- Verilog_Testbench
自动生成Testbench插件,需添加Python3 chardet库包支持
pip install chatdet
上述的 VScode 配置完成之后,重启 VScode。
安装 Modelsim2019
过程省略,具体参考安装包文件夹中的 Modelsim2019 安装教程。
开始第一个工程
为了验证搭建的环境是否正确及开发流程,新建一个移位操作的电路,并仿真观察波形
- 在 VScode 中 File->Open Folder 打开文件夹作为工作目录,此处新建的工程目录在 F:/Project_Design/Digital_Design/test 中。
- 新建一个 src 文件夹作为模块电路存放的路径,再新建一个 sim 文件夹用于存放 testbench 文件。
- 由于用的仿真器为 Modelsim,因此需要创建一个逻辑库,再 VScode 的 terminal 输入 vlib work 即可,
之后自动生成 work 文件夹,此时一个简单的工作区建立完毕。
开始写 Verilog 代码
- 在 src 文件夹下新建文件 top. v,编写一个移位操作的流水灯代码。
- 在插件的帮助下可以快速生成语法块,并进行语法错误检查。
完整代码如下:
module top (
input clk,
input rst_n,
output reg [31:0] led
);
always @(posedge clk or negedge rst_n) begin
if(~rst_n)
led <= 32'b1;
else
led <= {led[30:0],led[31]};
end
endmodule
- 自动生成 testbench 功能,在 VScode 界面中输入 ctrl+shift+p 打开命令,搜索 testbench,在 terminal 中自动生成代码,在 sim 文件夹下新建 tb_top. v 并粘贴至文件中,注意:此处生成的为代码模板,需要对代码进行必要修改,如仿真时间设置,具体代码如下:
`timescale 1ns / 1ps
module tb_top;
// top Parameters
parameter PERIOD = 10;
// top Inputs
reg clk = 0 ;
reg rst_n = 0 ;
// top Outputs
wire [31:0] led ;
initial
begin
forever #(PERIOD/2) clk=~clk;
end
initial
begin
#(PERIOD*2) rst_n = 1;
end
top u_top (
.clk ( clk ),
.rst_n ( rst_n ),
.led ( led [31:0] )
);
initial
begin
#1000000;
$finish;
end
endmodule
进行仿真
接下来,我们通过命令的方式执行文件的编译,仿真。
- 在终端命令行中对工作区的所有文件进行编译
vlog .\sim\tb_top.v .\src\top.v
此处由于需要对文件夹下的所有. v 文件进行编译,因此我们可以写一个 vflist 文件,将所有的. v 文件的绝对路径添加至文件中,具体可以参考:多个.v文件编译 并执行如下的命令:
vlog -f vflist
- 进行仿真,这里记得加 -voptargs=+acc选项否则新版本的modelsim很容易把object给优化掉:
vsim tb_top -voptargs=+acc
- 执行完以上两两步之后,跳出 modelsim gui 界面
- 添加波形 , 设置仿真时间 ,RUN跑仿真
Cadence 环境下的 nc-verilog 尝试
- 新建一个 SIM_verilog library 用于测试
- 新建一个 SC_AOI12_14_9 的 cellview 且为 verilog 文件格式,此时会打开一个文本编辑器,输入下图中的代码,并编译,若无错误,软件提示会从生成 symbol:
- 接下来将新建一个 sigGen cellview 用于生成测试波形,同上,并以无误,会提示是否生成 symbol,代码如下图所示:
- 新建一个 schematic 的 cellview,用于将激励和被测电路连接,
- 打开 Virtuoso->tool->NC-Verilog, 并将对应的 library 添加至相应的位置,并按如下图标识顺序依次点击按钮:
- 接下来会跳出 Design browser 界面,并将所观察的波形添加至 Waveform 中仿真查看。
- 查看波形