一、 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]; end endmodule - 仿真
新建工程-》編譯-》仿真(without optimization)
- View->Memory List,便可以查看RAM中寄存器的值

