当前位置:   article > 正文

modelsim独立仿真教程_modelsim可以单独仿真但不能联合仿真

modelsim可以单独仿真但不能联合仿真

一.GUI界面的仿真步骤

1.首先把你需要仿真的设计文本和仿真文本全部放在同一个文件夹下面,注意,文件夹路径不能包含中文。

我的设计文件:counter.v

`timescale 1ns / 1ns
module counter (count, clk, reset);
output [7:0] count;
input clk, reset;

reg [7:0] count;
parameter tpd_reset_to_count = 3;
parameter tpd_clk_to_count   = 2;

function [7:0] increment;
input [7:0] val;
reg [3:0] i;
reg carry;
  begin
    increment = val;
    carry = 1'b1;
    /*
     * Exit this loop when carry == zero, OR all bits processed
     */
    for (i = 4'b0; ((carry == 4'b1) && (i <= 7));  i = i+ 4'b1)
       begin
         increment = val ^ carry;
         carry = val & carry;
       end
  end      
endfunction

always @ (posedge clk or posedge reset)
  if (reset)
     count = #tpd_reset_to_count 8'h00;
  else
     count <= #tpd_clk_to_count increment(count);

/*****************************************************************
Use the following block to make the design synthesizable.

always @ (posedge clk or posedge reset)
  if (reset)
     count = 8'h00;
  else
     count <= count + 8'h01;
******************************************************************/
endmodule
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

我的仿真文件:tcounter.v

`timescale 1ns / 1ns
module test_counter;

reg clk, reset;
wire [7:0] count;

counter dut (count, clk, reset);

initial // Clock generator
  begin
    clk = 0;
    forever #10 clk = !clk;
  end
  
initial    // Test stimulus
  begin
    reset = 0;
    #5 reset = 1;
    #4 reset = 0;
  end
  
initial
    $monitor($stime,, reset,, clk,,, count);   
endmodule
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

2.打开modelsim软件,选择“File > Change Directory”,把目录改为我们在步骤1所创建的文件夹下,如下图所示
在这里插入图片描述

3.选择“File > New > Library”,创建一个新的工作库,如下图所示:
在这里插入图片描述

4.选择“Compile > Compile”,编译我们的设计文件和仿真文件,如下图所示:

在这里插入图片描述
在这里插入图片描述

5.最关键的步骤来了,那些老教程就是缺少这步骤中的关键操作,而导致没有波形输出:可视化并加载我们的设计工程,如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.选择软件右下方的“sim”,再鼠标右击,选择“AddTo > Wave > All items in region”,添加观测信号给波形窗口,如下图所示:
在这里插入图片描述

7.选择软件左下方“wave”,运行仿真,如下图所示:

在这里插入图片描述
在这里插入图片描述

以上就是GUI界面的仿真步骤了。

二.脚本方式的仿真步骤

我个人是不喜欢上述的GUI界面的仿真步骤,太罗嗦了,我喜欢更简单直接的脚本方式的仿真步骤,几行指令即可完成仿真。

下面就是几条主要指令,具体实现,大家还是看modelsim自带英语文档吧。

vlib work      //建库

vmap work work   //映射

vlog counter.v tcounter.v      //编译文本,此指令需要建立project才能运行

vopt +acc test_counter -o testcounter_opt  //可视化module

vsim testcounter_opt   //加载工程

add wave *    //添加观测信号

run -all    //运行全部
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

此内容由EEWORLD论坛网友大辉哥0614原创,如需转载或用于商业用途需征得作者同意并注明出处

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/709047
推荐阅读
相关标签
  

闽ICP备14008679号