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中寄存器的值

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM