一、 ModelSim 仿真波形保存与查看
· 应用情况:在数字电路设计中(Verilog or VHDL),ModelSim是常用的仿真工具。当我们仿真大型的工程时,往往需要保留仿真波形,以便分析和以后查看。这就需要学习在ModelSim里面如何保存仿真波形及调用波形。
· 学习网页: http://wjfblack.blog.163.com/blog/static/18005148420117240336431/
· 步骤
- 仿真结束后,产生相应的波形。在wave界面,将仿真波形保存为 .do文件(信号文件)。
- 切换左边任务栏至“sim”,,点击保存,给将要保存的 .wlf文件(波形文件)命名。
- 保存,OK,关闭modelsim。
- 重启modelsim,open 之前保存的 .wlf文件,然后 load 对应的 .do文件。
- Enjoy
· 备注:.do文件及.wlf文件最后名字保持一致,以便管理
二、 ModelSim中寄存器组值查看工具
在ModelSim中,当定义了寄存器数组(例如:reg [7:0] ram [0:127]),可以通过Memory List工具查看仿真时的值。步骤:
- 定义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]; endendmodule
- 仿真
新建工程-》编译-》仿真(without optimization)
- View->Memory List,便可以查看RAM中寄存器的值