ModelSim应用笔记

一、 ModelSim 仿真波形保存与查看

· 应用情况:在数字电路设计中(Verilog or VHDL),ModelSim是常用的仿真工具。当我们仿真大型的工程时,往往需要保留仿真波形,以便分析和以后查看。这就需要学习在ModelSim里面如何保存仿真波形及调用波形。

· 学习网页: http://wjfblack.blog.163.com/blog/static/18005148420117240336431/

· 步骤

  1. 仿真结束后,产生相应的波形。在wave界面,将仿真波形保存为 .do文件(信号文件)。
  2. 切换左边任务栏至“sim”,,点击保存,给将要保存的 .wlf文件(波形文件)命名。
  3. 保存,OK,关闭modelsim。
  4. 重启modelsim,open 之前保存的 .wlf文件,然后 load 对应的 .do文件。
  5. Enjoy

· 备注:.do文件及.wlf文件最后名字保持一致,以便管理

二、 ModelSim中寄存器组值查看工具

   在ModelSim中,当定义了寄存器数组(例如:reg [7:0] ram [0:127]),可以通过Memory List工具查看仿真时的值。步骤:

  1. 定义Reg类型,例如RAM
    module ram_1024Byte
    #(parameter DATA_WIDTH = 16, parameter ADDR_WIDTH = 8)
    (
    	input [(DATA_WIDTH-1):0] data,
    	input [(ADDR_WIDTH-1):0] read_addr, write_addr,
    	input we, clk,
    	output reg [(DATA_WIDTH-1):0] q
    );
    
    	// Declare the RAM variable
    	reg [DATA_WIDTH-1:0] ram[0:(2**ADDR_WIDTH-1)];
    
    	// Initiation
    	initial
    	begin
    		$readmemh("../dev/ram_init.dat", ram);
    	end
    	
    	// Read and Write Operation
    	always @ (posedge clk)
    	begin
    		// Write
    		if (we)
    			ram[write_addr] <= data;
    
    		// Read (if read_addr == write_addr, return OLD data).	To return
    		// NEW data, use = (blocking write) rather than <= (non-blocking write)
    		// in the write assignment.	 NOTE: NEW data may require extra bypass
    		// logic around the RAM.
    		q <= ram[read_addr];
    	end
    
    endmodule
    
  2. 仿真

    新建工程-》编译-》仿真(without optimization)

  3. View->Memory List,便可以查看RAM中寄存器的值

原文地址:https://www.cnblogs.com/garylee/p/2772249.html