当前位置:文档之家› 如何使用Debussy与ModelSim做Co-Simulation (SOC) (Verilog) (VHDL) (Debussy) (ModelSim)

如何使用Debussy与ModelSim做Co-Simulation (SOC) (Verilog) (VHDL) (Debussy) (ModelSim)

如何使用Debussy与ModelSim做Co-Simulation (SOC) (Verilog) (VHDL) (Debussy) (ModelSim)
如何使用Debussy与ModelSim做Co-Simulation (SOC) (Verilog) (VHDL) (Debussy) (ModelSim)

如何使用Debussy與ModelSim做Co-Simulation? (SOC) (Verilog) (VHDL) (Debussy) (ModelSim)

Abstract

本文介紹如何使用Debussy與ModelSim做Co-Simulation,並使用Verilog、VHDL以及Verilog搭配VHDL交叉一起simulation。

Introduction

使用環境:Debussy 5.4 v9 + ModelSim SE 6.3e

我之前一直使用Debussy + NC-Verilog做simulation,Debussy (Verdi)可以說是HDL的Source Insight,是trace與debug的神兵利器,NC-Verilog也是Verilog simulator中速度最快的,可是最近因工作需要,拿到的一包code卻是用Verilog寫RTL,用VHDL寫testbench,所以必須2種語言一起做simulation,我在NC-Verilog一直無法成功讓兩種語言一起simulation。ModelSim雖然支援Verilog + VHDL co-simulation,但用慣Debussy 的我還是無法忘懷其方便的trace code方式,所以若能讓ModelSim也能dump出Debussy 所需要的fsdb檔案,這樣就太完美了。

接下來會分4個方式討論

1.RTL與testbench皆使用Verilog

2.RTL與testbench皆使用VHDL

3.RTL使用VHDL,testbench使用Verilog

4.RTL使用Verilog,testbench使用VHDL

1.RTL與testbench皆使用Verilog

Step 1:

設定ModeSim使用Verilog PLI (因為testbench使用Verilog)

將C:\Novas\Debussy\share\PLI\modelsim_pli\WINNT\novas.dll複製到

C:\Modeltech_6.3e\win32\下

修改C:\Modeltech_6.3e\modelsim.ini,將Veriuser部分修改成如下所示:

; List of dynamically loaded objects for Verilog PLI applications

; Veriuser = veriuser.sl

; use by verilog

Veriuser = novas.dll

; use by vhdl

; Veriuser = novas_fli.dll

复制代码

modelsim.ini是個read only檔,要修改前記得修改其屬性才能存檔。Step 2:

RTL部分(以4 bit counter為例)

counter.v / Verilog

1/*

2(C) OOMusou 2011 https://www.doczj.com/doc/c214750848.html,

3

4Filename : counter.v

5Simulator : ModelSim 6.3e, Debussy 5.4 v9

6Description : ModelSim with debussy

7Release : 01/31/2010 1.0

8 */

9

10module counter (

11 clk,

12 rst_n,

13 cnt

14 );

15

16input clk;

17input rst_n;

18output [3:0] cnt;

19

20reg [3:0] cnt;

21

22always@(posedge clk, negedge rst_n) begin

23if (~rst_n)

24 cnt <= 4'h0;

25else

26 cnt <= cnt + 1'b1;

27end

28

29endmodule

复制代码

Step 3:

Testbench部分

counter_tb.v / Verilog

1/*

2(C) OOMusou 2011 https://www.doczj.com/doc/c214750848.html, 3

4Filename : counter_tb.v

5Compiler : ModelSim 6.3e, Debussy 5.4 v9 6Description : ModelSim with debussy

7Release : 01/31/2010 1.0

8 */

9

10module counter_tb;

11

12reg clk;

13reg rst_n;

14wire [3:0] cnt;

15

16// 50MHz

17always #(10) clk = ~clk;

18

19initial begin

20 #0;

21 clk = 1'b0;

22 rst_n = 1'b0;

23

24 #5;

25 rst_n = 1'b1;

26 #195;

27 $finish;

28end

29

30initial begin

31 $fsdbDumpfile("counter.fsdb");

32 $fsdbDumpvars(0, counter_tb);

33end

34

35 counter u_counter (

36 .clk(clk),

37 .rst_n(rst_n),

38 .cnt(cnt)

39 );

40

41endmodule

复制代码

19行

initial begin

#0;

clk = 1'b0;

rst_n = 1'b0;

#5;

rst_n = 1'b1;

#195;

$finish;

end

复制代码

一搬來說,若在NC-Verilog做simulation,我們會在testbench內指定結束simulation的時間,不過在ModelSim裡,simulation時間是由ModelSim script控制,在testbench內寫$finish並沒有用,所以會省略$finish時間入下。

initial begin

#0;

clk = 1'b0;

rst_n = 1'b0;

#5;

rst_n = 1'b1;

end

复制代码

Step 4:

ModelSim script部分

vsim.do

vlib work

vlog counter.v

vlog counter_tb.v

vsim counter_tb

run 200ns

q

复制代码

其中

vlib work

建立work library。

vlog counter_tb.v

复制代码

編譯RTL:counter.v 與testbench:counter_tb.v,vlog為modelsim的Verilog compiler。vsim counter_tb

以counter_tb為top module進行simulation。

run 200ns

命令ModelSim執行200 ns的simulation。

q

離開ModelSim

Step 5:

執行ModelSim的批次檔

mod.bat

vsim -c -do sim.do

-c 表示ModelSim將以console mode執行,因為在Debussy + ModelSim時,只把ModelSim當成NC-Verilog使用,並沒有用到ModelSim的GUI模式。

-do 表示執行ModelSim script。

執行結果

D:\0Clare\VerilogLab\ModelSim\counter_verilog>vsim -c -do sim.do

Reading C:/Modeltech_6.3e/tcl/vsim/pref.tcl

# 6.3e

# do sim.do

# ** Warning: (vlib-34) Library already exists at "work".

# Model Technology ModelSim SE vlog 6.3e Compiler 2008.02 Feb 2 2008

# -- Compiling module counter

#

# Top level modules:

# counter

# Model Technology ModelSim SE vlog 6.3e Compiler 2008.02 Feb 2 2008

# -- Compiling module counter_tb

#

# Top level modules:

# vsim counter_tb

# ** Note: (vsim-3813) Design is being optimized due to module recompilation... # ** Note: (vsim-3865) Due to PLI being present, full design access is being sp ecified.

# Loading C:\Modeltech_6.3e\win32/novas.dll

# // ModelSim SE 6.3e Feb 2 2008

# //

# // Copyright 1991-2008 Mentor Graphics Corporation

# // All Rights Reserved.

# //

# // THIS WORK CONTAINS TRADE SECRET AND

# // PROPRIETARY INFORMATION WHICH IS THE PROPERTY

# // OF MENTOR GRAPHICS CORPORATION OR ITS LICENSORS

# // AND IS SUBJECT TO LICENSE TERMS.

# //

# Loading work.counter_tb(fast)

# Loading work.counter(fast)

# Novas FSDB Dumper for ModelSim, Release 5.4v9 (Win95/NT) 05/04/2005

# Copyright (C) 1996 - 2004 by Novas Software, Inc.

# *Novas* Create FSDB file 'counter.fsdb'

# *Novas* Start dumping the scope(counter_tb), layer(0).

# *Novas* End of dumping.

# ** Note: $finish : counter_tb.v(27)

# Time: 200 ns Iteration: 0 Instance: /counter_tb

复制代码

Step 6:

執行Debussy批次檔部份

deb.bat

debussy -2001 counter_tb.v counter.v -ssf counter.fsdb -sswr counter.rc

-2001表示支援Verilog 2001語法

-ssf 載入Debussy dump file

-sswr 載入Debussy signal file

執行結果

2.RTL與testbench皆使用VHDL

Step 1:

設定ModelSim使用VHDL FLI (因為testbench使用VHDL)

將C:\Novas\Debussy\share\PLI\modelsim_fli54\WINNT\novas_fli.dll複製到C:\Modeltech_6.3e\win32\下

修改C:\Modeltech_6.3e\modelsim.ini,將Veriuser部分修改成如下所示:

; List of dynamically loaded objects for Verilog PLI applications

; Veriuser = veriuser.sl

; use by verilog

;Veriuser = novas.dll

; use by vhdl

Veriuser = novas_fli.dll

复制代码

modelsim.ini是個read only檔,要修改前記得修改其屬性才能存檔。

複製C:\Novas\Debussy\share\PLI\modelsim_fli54\WINNT\novas.vhd到自己的project底下

(為什麼Verilog不需要這個檔,而VHDL需要這個檔,稍後會解釋)

Step 2:

RTL部分(以4 bit counter為例)

counter.vhd / VHDL

1 -- (C) OOMusou 2011 https://www.doczj.com/doc/c214750848.html,

2

3 -- Filename : counter.vhd

4 -- Simulator : ModelSim 6.3e, Debussy 5.4 v9

5 -- Description : ModelSim with debussy

6 -- Release : 02/05/20111.0

7

8library IEEE;

9use IEEE.std_logic_1164.all;

10use IEEE.std_logic_unsigned.all;

11

12entity counter is

13port ( clk : in std_logic;

14 rst_n : in std_logic;

15 cnt : out std_logic_vector(3downto0));

16end entity counter;

17

18architecture arc of counter is

19signal cnt_r : std_logic_vector(3downto0);

20begin

21process(clk, rst_n)

22begin

23if (rst_n = '0') then

24 cnt_r <= "0000";

25 elsif rising_edge(clk) then

26 cnt_r <= cnt_r + 1;

27end if;

28end process;

29

30 cnt <= cnt_r;

31end arc;

复制代码

Step 3:

Testbench部分

counter.vhd / VHDL

1 -- (C) OOMusou 2011 https://www.doczj.com/doc/c214750848.html, 2

3 -- Filename : counter_tb.vhd

4 -- Simulator : ModelSim 6.3e, Debussy 5.4 v9

5 -- Description : ModelSim with debussy

6 -- Release : 01/31/20101.0

7

8library IEEE;

9use IEEE.std_logic_1164.all;

10use IEEE.std_logic_unsigned.all;

11use work.pkg.all;

12

13entity counter_tb is

14end entity counter_tb;

15

16architecture arc of counter_tb is

17component counter

18port (

19 clk : in std_logic;

20 rst_n : in std_logic;

21 cnt : out std_logic_vector(3downto0)

22 );

23end component;

24

25signal clk : std_logic := '0';

26signal rst_n : std_logic := '0';

27signal cnt : std_logic_vector(3downto0); 28

29begin

30process

31begin -- 50MHz

32 clk_loop : loop

33 clk <= '0';

34wait for10 ns;

35 clk <= '1';

36wait for10 ns;

37end loop clk_loop;

38end process;

39

40process

41begin

42wait for5 ns;

43 rst_n <= '1';

44end process;

45

46process

47begin

48 fsdbDumpfile("counter.fsdb");

49 fsdbDumpvars(0, "counter_tb");

50wait;

51end process;

52

53 u_counter : counter

54port map (

55 clk => clk,

56 rst_n => rst_n,

57 cnt => cnt

58 );

59end arc;

复制代码

11行

use work.pkg.all;

這是因為novas.vhd與VHDL FLI的原因,稍後會解釋。

47行

process

begin

fsdbDumpfile("counter.fsdb");

fsdbDumpvars(0, "counter_tb");

wait;

end process;

复制代码

一樣使用fsdbDumpfile()與fsdbDumpvars()兩個Debussy所提供的函數,不過在VHDL FLI並不需要如Verilog PLI一樣加上$。

wait也一定要加上,否則在ModelSim做simulation時會造成無窮回圈無法停止。

Step 4:

ModelSim script部分

vsim.do

vlib work

vcom novas.vhd

vcom counter.vhd

vcom counter_tb.vhd

vsim counter_tb

run 200ns

q

复制代码

因為是VHDL,所以全部改用vcom編譯。

其中novas.vhd是從Debussy目錄複製過來的,為什麼需要編譯這個檔案呢?

VHDL FLI (Foreign Language Interface)與Verilog PLI (Programming Language Interface)不同的地方在於,當你自己提供由C寫的function給simulator使用時,Verilog PLI 會自己到所提供的dll去找是否有此function,但VHDL FLI需要自己去提供mapping的動作,告訴simulator哪一個function對應dll內那ㄧ個function,novas.vhd就是提供這個mapping的腳色。

若直接使用Debussy所提供的novas.vhd,在執行ModelSim會有以下錯誤訊息。

# ** Warning: (vsim-FLI-3159) Failed to find foreign function 'fliparseVariabl eInFile' in FLI object file "C:\Modeltech_6.3e\win32/./novas_fli.dll".

复制代码

意思是novas.vhd定義的fliparseVariableInFile在novas_fli.dll找不到,致於為什麼會有此錯誤,我並不清楚。

將novas.vhd修改成如下所示:

novas.vhd / VHDL

1package pkg is

2attribute foreign : string;

3

4procedure fsdbDumpfile (file_name : in string);

5attribute foreign of fsdbDumpfile : procedure is"fliparseTraceInit ./nov as_fli.dll";

6

7procedure fsdbDumpvars (depth : in integer;

8 region_name : in string);

9attribute foreign of fsdbDumpvars : procedure is"fliparsePartial ./novas _fli.dll";

10end;

11

12package body pkg is

13procedure fsdbDumpfile(file_name : in string) is

14begin

15assert false report"ERROR : foreign subprogram not called"severity note;

16end;

17

18procedure fsdbDumpvars(depth : in integer;

19 region_name : in string) is

20begin

21assert false report"ERROR : foreign subprogram not called"severity note;

22end;

23end;

24

25entity novas is end;

26

27architecture novas_arch of novas is

28attribute foreign : string;

29attribute foreign of novas_arch : architecture is"fliparseCommand novas_ fli.dll";

30begin

31end;

32

复制代码

也就是僅留下fsdbDumpfile()與fsdbDumpvars()兩個function,其他的都刪除。

根據我使用Debussy的經驗,只要留這兩個function就夠用了,其他Debussy的function 我還真的沒用過。

在novas.vhd也看到了這些是定義在pkg這個package下,所以在counter_tb.vhd必須use work.pkg.all。

Step 5:

執行ModelSim的批次檔

mod.bat

vsim -c -do sim.do

執行結果

D:\0Clare\VerilogLab\ModelSim\counter_vhdl>vsim -c -do sim.do

Reading C:/Modeltech_6.3e/tcl/vsim/pref.tcl

# 6.3e

# do sim.do

# ** Warning: (vlib-34) Library already exists at "work".

# Model Technology ModelSim SE vcom 6.3e Compiler 2008.02 Feb 2 2008 # -- Loading package standard

# -- Compiling package pkg

# -- Compiling package body pkg

# -- Loading package pkg

# -- Compiling entity novas

# -- Compiling architecture novas_arch of novas

# Model Technology ModelSim SE vcom 6.3e Compiler 2008.02 Feb 2 2008 # -- Loading package standard

# -- Loading package std_logic_1164

# -- Loading package std_logic_arith

# -- Loading package std_logic_unsigned

# -- Compiling entity counter

# -- Compiling architecture arc of counter

# Model Technology ModelSim SE vcom 6.3e Compiler 2008.02 Feb 2 2008 # -- Loading package standard

# -- Loading package std_logic_1164

# -- Loading package std_logic_arith

# -- Loading package std_logic_unsigned

# -- Loading package pkg

# -- Compiling entity counter_tb

# -- Compiling architecture arc of counter_tb

# vsim counter_tb

# Loading C:\Modeltech_6.3e\win32/novas.dll

# // ModelSim SE 6.3e Feb 2 2008

# //

# // Copyright 1991-2008 Mentor Graphics Corporation

# // All Rights Reserved.

# //

# // THIS WORK CONTAINS TRADE SECRET AND

# // PROPRIETARY INFORMATION WHICH IS THE PROPERTY

# // OF MENTOR GRAPHICS CORPORATION OR ITS LICENSORS

# // AND IS SUBJECT TO LICENSE TERMS.

# //

# Loading std.standard

# Loading ieee.std_logic_1164(body)

# Loading ieee.std_logic_arith(body)

# Loading ieee.std_logic_unsigned(body)

# Loading work.pkg(body)

# Loading C:\Modeltech_6.3e\win32/./novas_fli.dll

# Loading work.counter_tb(arc)

# Loading work.counter(arc)

# Novas FSDB Dumper for ModelSim 5.4 (FLI), Release 5.4v9 (Win95/NT) 05/04/200 5

# Copyright (C) 1996 - 2004 by Novas Software, Inc.

# *Novas* Create FSDB file 'counter.fsdb'

复制代码

Step 6:

執行Debussy批次檔部份

deb.bat

debussy –vhdl –93 novas.vhd counter_tb.vhd counter.vhd –top counter_tb -ssf co unter.fsdb -sswr counter.rc

复制代码

-vhdl 表示支援VHDL語法,因為Debussy預設支援Verilog

-93 表示支援VHDL 93的語法

-top 指定top module,在Verilog可以不指定top,Debussy可以自動判斷而抓到top module,但是VHDL沒辦法,需要自己指定,若不指定,待會會有GUI要你手動挑選top module

執行結果

3.RTL使用VHDL,testbench使用Verilog

Step 1:

設定ModeSim使用Verilog PLI (因為testbench使用Verilog)

將C:\Novas\Debussy\share\PLI\modelsim_pli\WINNT\novas.dll複製到C:\Modeltech_6.3e\win32\下

修改C:\Modeltech_6.3e\modelsim.ini,將Veriuser部分修改成如下所示:

; List of dynamically loaded objects for Verilog PLI applications ; Veriuser = veriuser.sl

; use by verilog

Veriuser = novas.dll

; use by vhdl

; Veriuser = novas_fli.dll

复制代码

modelsim.ini是個read only檔,要修改前記得修改其屬性才能存檔。

Step 2:

RTL部分(以4 bit counter為例)

counter.vhd / VHDL

1 -- (C) OOMusou 2011 https://www.doczj.com/doc/c214750848.html,

2

3 -- Filename : counter.vhd

4 -- Simulator : ModelSim 6.3e, Debussy 5.4 v9

5 -- Description : ModelSim with debussy

6 -- Release : 02/05/20111.0

7

8library IEEE;

9use IEEE.std_logic_1164.all;

10use IEEE.std_logic_unsigned.all;

11

12entity counter is

13port ( clk : in std_logic;

14 rst_n : in std_logic;

15 cnt : out std_logic_vector(3downto0)); 16end entity counter;

17

18architecture arc of counter is

19signal cnt_r : std_logic_vector(3downto0);

20begin

21process(clk, rst_n)

22begin

23if (rst_n = '0') then

24 cnt_r <= "0000";

25 elsif rising_edge(clk) then

26 cnt_r <= cnt_r + 1;

27end if;

28end process;

29

30 cnt <= cnt_r;

31end arc;

复制代码

Step 3:

Testbench部分

counter_tb.v / Verilog

1/*

2(C) OOMusou 2011 https://www.doczj.com/doc/c214750848.html,

3

4Filename : counter_tb.v

5Compiler : ModelSim 6.3e, Debussy 5.4 v9 6Description : ModelSim with debussy

7Release : 01/31/2010 1.0

8 */

9

10module counter_tb;

11

12reg clk;

13reg rst_n;

14wire [3:0] cnt;

15

16// 50MHz

17always #(10) clk = ~clk;

18

19initial begin

20 #0;

21 clk = 1'b0;

22 rst_n = 1'b0;

23

24 #5;

25 rst_n = 1'b1;

26 #195;

27 $finish;

28end

29

30initial begin

31 $fsdbDumpfile("counter.fsdb");

32 $fsdbDumpvars(1, counter_tb);

33end

34

35 counter u_counter (

36 .clk(clk),

37 .rst_n(rst_n),

38 .cnt(cnt)

39 );

40

41endmodule

复制代码

30行

initial begin

$fsdbDumpfile("counter.fsdb");

$fsdbDumpvars(1, counter_tb);

end

复制代码

$fsdbDumpvars()的第一個參數是填1不是0,若填0會產生以下warning,不過並不影響最後fsdb的結果。

# ** Warning: Unknown scope type: counter_tb.u_counter 1010

# : counter_tb.v(30)

# Time: 0 ns Iteration: 0 Instance: /counter_tb

# ** Warning: Unknown scope type: counter_tb.u_counter 1010

# : counter_tb.v(30)

# Time: 0 ns Iteration: 0 Instance: /counter_tb

# *Novas* End of dumping.

复制代码

Step 4:

ModelSim script部分

vsim.do

vlib work

vcom counter.vhd

vlog counter_tb.v

vsim counter_tb

run 200ns

q

复制代码

VHDL使用vcom編譯,Verilog使用vlog編譯。

Step 5:

執行ModelSim的批次檔

mod.bat

vsim -c -do sim.do

執行結果

D:\0Clare\VerilogLab\ModelSim\counter_vhdl_verilog>vsim -c -do sim.do Reading C:/Modeltech_6.3e/tcl/vsim/pref.tcl

# 6.3e

# do sim.do

# ** Warning: (vlib-34) Library already exists at "work".

# Model Technology ModelSim SE vcom 6.3e Compiler 2008.02 Feb 2 2008

# -- Loading package standard

# -- Loading package std_logic_1164

# -- Loading package std_logic_arith

# -- Loading package std_logic_unsigned

# -- Compiling entity counter

# -- Compiling architecture arc of counter

# Model Technology ModelSim SE vlog 6.3e Compiler 2008.02 Feb 2 2008

# -- Compiling module counter_tb

#

# Top level modules:

# counter_tb

# vsim counter_tb

# Loading C:\Modeltech_6.3e\win32/novas.dll

# // ModelSim SE 6.3e Feb 2 2008

# //

# // Copyright 1991-2008 Mentor Graphics Corporation

# // All Rights Reserved.

# //

# // THIS WORK CONTAINS TRADE SECRET AND

# // PROPRIETARY INFORMATION WHICH IS THE PROPERTY

# // OF MENTOR GRAPHICS CORPORATION OR ITS LICENSORS

# // AND IS SUBJECT TO LICENSE TERMS.

# //

# Loading work.counter_tb(fast)

# Loading std.standard

# Loading ieee.std_logic_1164(body)

# Loading ieee.std_logic_arith(body)

# Loading ieee.std_logic_unsigned(body)

# Loading work.counter(arc)

# Novas FSDB Dumper for ModelSim, Release 5.4v9 (Win95/NT) 05/04/2005 # Copyright (C) 1996 - 2004 by Novas Software, Inc.

# *Novas* Create FSDB file 'counter.fsdb'

# *Novas* Start dumping the scope(counter_tb), layer(0).

# ** Warning: Unknown scope type: counter_tb.u_counter 1010

# : counter_tb.v(30)

# Time: 0 ns Iteration: 0 Instance: /counter_tb

# ** Warning: Unknown scope type: counter_tb.u_counter 1010

# : counter_tb.v(30)

# Time: 0 ns Iteration: 0 Instance: /counter_tb

# *Novas* End of dumping.

D:\0Clare\VerilogLab\ModelSim\counter_vhdl_verilog>vsim -c -do sim.do

Reading C:/Modeltech_6.3e/tcl/vsim/pref.tcl

# 6.3e

# do sim.do

# ** Warning: (vlib-34) Library already exists at "work".

# Model Technology ModelSim SE vcom 6.3e Compiler 2008.02 Feb 2 2008

# -- Loading package standard

# -- Loading package std_logic_1164

# -- Loading package std_logic_arith

# -- Loading package std_logic_unsigned

# -- Compiling entity counter

# -- Compiling architecture arc of counter

# Model Technology ModelSim SE vlog 6.3e Compiler 2008.02 Feb 2 2008

# -- Compiling module counter_tb

#

# Top level modules:

# counter_tb

# vsim counter_tb

# ** Note: (vsim-3813) Design is being optimized due to module recompilation... # ** Note: (vsim-3865) Due to PLI being present, full design access is being sp ecified.

# Loading C:\Modeltech_6.3e\win32/novas.dll

# // ModelSim SE 6.3e Feb 2 2008

# //

# // Copyright 1991-2008 Mentor Graphics Corporation

# // All Rights Reserved.

# //

# // THIS WORK CONTAINS TRADE SECRET AND

# // PROPRIETARY INFORMATION WHICH IS THE PROPERTY

# // OF MENTOR GRAPHICS CORPORATION OR ITS LICENSORS

# // AND IS SUBJECT TO LICENSE TERMS.

# //

# Loading work.counter_tb(fast)

# Loading std.standard

# Loading ieee.std_logic_1164(body)

# Loading ieee.std_logic_arith(body)

# Loading ieee.std_logic_unsigned(body)

# Loading work.counter(arc)

# Novas FSDB Dumper for ModelSim, Release 5.4v9 (Win95/NT) 05/04/2005

# Copyright (C) 1996 - 2004 by Novas Software, Inc.

# *Novas* Create FSDB file 'counter.fsdb'

# *Novas* Start dumping the scope(counter_tb), layer(1).

# *Novas* End of dumping.

modelsim使用 + 前仿真 + 后仿真 + verilog

Modelsim 6.0 使用教程 1. Modelsim简介 Modelsim仿真工具是Model公司开发的。它支持Verilog、VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等,比quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。 对于初学者,modelsim自带的教程是一个很好的选择,在Help->SE PDF Documentation->Tutorial里面.它从简单到复杂、从低级到高级详细地讲述了modelsim的各项功能的使用,简单易懂。但是它也有缺点,就是它里面所有事例的初期准备工作都已经放在example文件夹里,直接将它们添加到modelsim就可以用,它假设使用者对当前操作的前期准备工作都已经很熟悉,所以初学者往往不知道如何做当前操作的前期准备。 2.安装 同许多其他软件一样,Modelsim SE同样需要合法的License,通常我们用Kengen产生license.dat。 ⑴.解压安装工具包开始安装,安装时选择Full product安装。当出现Install Hardware Security Key Driver时选择否。当出现Add Modelsim To Path选 择是。出现Modelsim License Wizard时选择Close。 ⑵.在C盘根目录新建一个文件夹flexlm,用Keygen产生一个License.dat,然后 复制到该文件夹下。 ⑶.修改系统的环境变量。右键点击桌面我的电脑图标,属性->高级->环境变量-> (系统变量)新建。按下图所示内容填写,变量值内如果已经有别的路径了, 请用“;”将其与要填的路径分开。LM_LICENSE_FILE = c:\flexlm\license.dat

modelsim完美教程

准备事项 1.ModelSim试用版下载 2.范例程序下载(史丹佛大学一门课的期末专题Implememtation of Viterbi Decoder:constrain length K=3, code rate R=1/2, register-exchange) 整个project共含7个Verilog程序:system.v (top-level) |-- clkgen.v |-- chip_core.v |-- controller.v |-- spu.v |-- acs4.v |-- acs1.v (或是另外一个Verilog的简单例子,可以从C:\ SynaptiCAD\ Examples\ TutorialFiles\ VeriLoggerBasicVerilo gSimulation\ add4.v and add4test.v) (或是另外一个VHDL的简单例子,可以从C:\ Modeltech_5.7e\ examples\ adder.vhd and testadder.vhd) ModelSim PE /LE /SE 差别在哪? 本篇文章内容主要在教导软件使用,以Verilog程序为范例。假设各位读者已经熟悉Verilog,废话不多说,让我们马上来见识一下ModelSim ... 快速上手四部曲:建立Project、引进HDL Files、Compile、模拟(Simulate/Loading and Run) 1.建立一个新的Project 1-1 第一次执行程序时,可以从[开始] \ [程序集] \ ModelSim SE \ ModelSim;或是执行ModelSim在桌面的快捷方式

ModelSim-Altera_6.5仿真入门教程

平台 软件:ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 内容 1 设计流程 使用ModelSim仿真的基本流程为: 图1.1 使用ModelSim仿真的基本流程 2 开始 2.1 新建工程 打开ModelSim后,其画面如图2.1所示。

图2.1 ModelSim画面 1. 选择File>New>Preject创建一个新工程。打开的Create Project对话框窗口,可以指定工程的名称、路径和缺省库名称。一般情况下,设定Default Library Name为work。指定的名称用于创建一个位于工程文件夹内的工作库子文件夹。该对话框如图 2.2所示,此外还允许通过选择.ini文件来映射库设置,或者将其直接拷贝至工程中。

图2.2 创建工程的对话框 2. 按照图2.3所示,设置Project Name为LED_FLOW,Project Location为D:/led_flow。 图2.3 输入工程信息 当单击OK按钮后,在主体窗口的下方将出现Project标签,如图2.4所示。 图2.4 Project标签

3. 之后,将出现Add Items to the Project的对话框,如图2.5所示。 图2.5 在工程中,添加新项目 2.2 在工程中,添加新项目 在Add Items to the Project对话框中,包括以下选项: ?Create New File——使用源文件编辑器创建一个新的Verilog、VHDL、TCL或文本文件?Add Existing File——添加一个已存在的文件 ?Create Simulation——创建指定源文件和仿真选项的仿真配置 ?Create New Folder——创建一个新的组织文件夹 1. 单击Create New File。打开图 2.6所示窗口。 图2.6 创建工程文件夹 2. 输入文件名称:LED_FLOW,然后选择文件类型为Verilog。

ModelSim的前后仿真(Quartus)

利用Quartus5.0实现功能仿真 1)打开一个工程文件。 2)打开Settings设置栏,选择Fitting Settings下的Simulator栏。在右边出现的设置栏中将 “Simulation Mode”的下拉菜单选择“Functional”,即可以实现软件下的功能仿真。(下拉菜单中有“Functional”、“Timing”和“Timing using Fast Timing Model”,分别代表可以在Quartus软件下实现功能仿真,时序仿真和快速时序仿真。最后一项一般不选,如果在Settings->Timing Requirement->More Settings下“Report Combined Fast/Slow Timing” 选项设为“On”,就可以选择最后一项。编译的报告里也会分别列出最快和最慢的时序报告。) 3)选择“Processing”菜单下的“Generate Functional Simulation Netlist”命令,否则将无法 启动仿真。 4)新建一个波形仿真文件,文件后缀名为.vwf。选择File菜单下的New->Other Files->Vector Waveform File。如下图所示,左边空白栏处是节点名的列表区,右边空白栏处是仿真波形的显示区。波形编辑窗口默认时间为1us,如果想改变仿真时间,可以选择Edit菜单下End Time,在弹出的对话框中选择需要的时间。将新建的波形仿真文件保存下来。

5)将需要仿真的信号加入波形编辑窗口。在列表区任一位置双击或者点击右键选择“Insert Node or Bus…”,弹出的对话框点击“Node Finder”按钮。在“Node Finder”界面中点击“List”按钮,有关信号的列表会出现在界面的左边,双击需要观察的信号加入至界面右边。如果工程中用到了很多信号,在左边列表中也会显示很多(Named编辑框默认的是*通配符),可以在Named编辑框中添加需要的信号名称实现模糊查找。界面中“Filter”下拉框中默认的是“Pins: all”,也就是说将要列出的信号都是IO管脚。如果需要观察一些内部信号,可以改变下拉框的参数,比如“Registers: Pre-Synthesis”。下图显示了仿真信号加入波形编辑窗口的情况。对于有些总线信号可以改变其显示的进制格式,比如二进制、八进制、十进制和十六进制。在列表中对应信号点击右键选择 “Properties”,弹出的对话框中选择“Radix”下拉框实现进制的转换。

ModelSim软件仿真步骤教程

使用ModelSim模擬驗證HDL code 1.在模擬前先準備好我們要模擬的電路檔案(Verilog HDL,TestBench,…) 2. 打開ModelSim,新建一個Project,鍵入Project name 按OK。此處我們的library name 為default library name “work”不必更改。 3.然後再加入我們所要模擬的電路檔案(若尚未準備,可開啟新檔案再將code 鍵入)選Add Existing File,將我們已編輯好的檔案加入。 將我們所需要的檔案加入,按Browse選擇我們所需檔案count.v,

count_test.vt),按下OK。 再將先前所開啟的增加檔案的視窗關閉,按close。 4.按下compile all。

Compile成功沒有顯示出錯誤訊息, 則開始模擬波形 5.按下Simulation, 選擇檔案所在的Library (work), 點選TestBench的Module Name t_Gap_finder 按OK 6.承接上步驟將會跳出以下視窗,若要將所有訊號加入波型中觀察則選擇在 testbench的module name: count_tst按滑鼠右鍵選擇→ Add → Add to Wave。

7.在波型畫面按下Run All開始模擬 跑完後會跳出下面視窗選擇否則可觀察模擬波形,若按下是則會將ModelSim關閉。

8.觀察波形圖是否與功能符合,若與設計不符則修改設計並重複執行Step 4到 Step 8 Testbench語法 `timescale 1 ps/ 1 ps 前面的1ps代表程式中最小的時間單位 後面的1ps代表運算的精準度

ModelSim作布局布线后仿真的库问题

ModelSim作布局布线后仿真的库问题 Modelsim是目前最流行的应用最广泛的FPGA仿真器,是Mentor Graphics的子公司Model T echnology开发的。因为Modelsim好学易用,调试方便,仿真速度快,功能强大,所以很多芯片厂商的开发系统都OEM Mentor Graphics公司的Modelsim仿真器,包括Xilinx,Alter a,Lattice和Actel等。Modelsim是一个单内核仿真器,同一个内核可以进行VHDL仿真、V erilog仿真和VHDL/Verilog混合仿真;支持所有的VHDL和Verilog标准;采用直接编译技术 (Direct-Compiled),大大提高了HDL编译和仿真速度。 Modelsim支持三个层次的仿真:RTL仿真、综合后仿真和布局布线后仿真。为了加快仿真速 度,一般情况下设计中调用的库都是已经进行编译过的,然后对设计进行仿真,此时仿真器直接调用库中已经编译过的单元,而不是再次对设计中的单元模块进行编译。所以如果要对设计进行综合后仿真和布局布线后仿真,必须先对设计中调用的库进行编译处理。这也是本文的重点内容。因为每个厂商的库不一样,而且同一个厂商,不同的器件库就有可能不同,所以下面就目前国内比较常用的几个公司的芯片的库问题分别进行探讨。1.Xilinx公司的器件: 其库的处理方式有两种,一种是在Xilinx的网站上,我们可以下载到压缩文件xilinx_lib _4.zip,解压缩后有一个xilinx_lib_4.tcl(将来的版本可能会升级)。单独运行Models im,然后在工具菜单中有一项是执行宏(这里Modelsim5.5 和5.6、5.7有一些差异,不过在5.5中仍可以找到执行宏Execute Macro),运行xilinx_lib_4.tcl后可以看到。 你可以根据你的厂商软件版本选择,指定Xilinx 的安装路径,在Install Path中指定你编 译后的数据将要放的目录位置(可以是任何一个目录,最好是设计者数据盘中的某个目录,因为库编译一次就可以了,重新安装软件不需要重新编译库)。对于Xilinx作布局布线后仿真只需要simprim库即可;如果要作综合后仿真,就需要编译Unisim库;如果设计中调用了 CoreGen产生的核就需要编译CoreGen库。这应该根据设计者的具体情况进行选择。 如果编译完了后,在Modelsim中库会自动变为标准库(注意:Xilinx提供的早期脚本文件作不到这一点)。所谓标准库,也就是说这个库会和IEEE这些库一样,当Modelsim启动时,这 些库会自动加载,里面的单元在VHDL代码中可以随意调用。比如:在布局布线后的VHDL 文 件中大家可以看到Library simprim这样的语句。当然也可以自己手动改变这些库的性质,只用修改在Modelsim安装路径下的Modelsim.ini文件即可。比如:修改后的Modelsim.ini 可以看到为 [Library] std = $MODEL_TECH/../std ieee = $MODEL_TECH/../ieee verilog = $MODEL_TECH/../verilog std_developerskit = $MODEL_TECH/../std_developerskit synopsys = $MODEL_TECH/../synopsys modelsim_lib = $MODEL_TECH/../modelsim_lib

QUARTUSⅡ10波形仿真(ModelSim)入门教程

QUARTUSⅡ10仿真(ModelSim)入门教程平台 软件:ModelSim-Altera 6.5e (Quartus II 10.0) Starter Edition 内容 1 设计流程 使用ModelSim仿真的基本流程为: 图1.1 使用ModelSim仿真的基本流程 2 开始 2.1 新建工程 打开ModelSim后,其画面如图2.1所示。 图2.1 ModelSim画面

1. 选择File>New>Preject创建一个新工程。打开的Create Project对话框窗口,可以指定工程的名称、路径和缺省库名称。一般情况下,设定Default Library Name为work。指定的名称用于创建一个位于工程文件夹内的工作库子文件夹。该对话框如图 2. 2所示,此外还允许通过选择.ini文件来映射库设置,或者将其直接拷贝至工程中。 图2.2 创建工程的对话框 2. 按照图2.3所示,设置Project Name为LED_FLOW,Project Location为D:/led_flow。 图2.3 输入工程信息 当单击OK按钮后,在主体窗口的下方将出现Create Project标签,如图2.4所示。 图2.4 Project标签 3. 之后,将出现Add Items to the Project的对话框,如图2.5所示。 图2.5 在工程中,添加新项目 2.2 在工程中,添加新项目 在Add Items to the Project对话框中,包括以下选项:

?Create New File——使用源文件编辑器创建一个新的Verilog、VHDL、TCL或文本文件 ?Add Existing File——添加一个已存在的文件 ?Create Simulation——创建指定源文件和仿真选项的仿真配置 ?Create New Folder——创建一个新的组织文件夹 1. 单击Create New File。打开图 2.6所示窗口。 图2.6 创建工程文件夹 2. 输入文件名称:LED_FLOW,然后选择文件类型为Verilog。 图2.7 输入工程文件信息 3. 单击OK,关闭本对话框。新的工程文件将会在工程窗口显示。单击Close,以关闭Add Items to the Project。 图2.8 新的设计文件LED_FLOW.v 4. 双击打开LED_FLOW.v文件(注意:若是Verilog文件已经关联了其他的文本编辑器,则双击后在关联的文本编辑器中打开)。 图2.9 LED_FLOW代码输入窗口 在LED_FLOW.v输入下面的测试平台代码:

ModelSim入门指导答辩

QUESTA-SIM(QuestaSim)10.2入门指南平台 软件:Questa-Sim 10.2 版本Starter Edition,也适用于高版本的ModelSim软件。内容 一. 设计流程 典型设计流程包括如下所示: (1)设计输入 设计的行为或结构描述 (2)RTL仿真(ModelSim) 功能仿真 验证逻辑模型(没有使用时间延迟) 可能要求编辑设计 (3)综合 把设计翻译成原始的目标工艺 最优化——合适的面积要求和性能要求 (4)布局和布线 映射设计到目标工艺里指定位置 指定的布线资源应被使用 (5)门级仿真(ModelSim) 时序仿真 验证设计一旦编程或配置将能在目标工艺里工作 可能要求编辑设计 (6)时序分析 (7)验证合乎性能规范 可能要求编辑设计 (8)版图设计 (9)仿真版图设计 (10)在板编程和测试器件 使用QuestaSi/ModelSim仿真的基本流程为: 图1.1 使用QuestaSim仿真的基本流程 2 开始 1.1 新建工程 打开QuestaSim后,其画面如图2.1所示。

图2.1 QuestaSim画面 1. 创建工作目录E:/QuestaSim/, 在其路径下创建子文件夹/ip、/prj、/rtl、/tb, prj是QuestaSim工程主文件夹,ip是仿真模型目录,rtl 是代码目录,tb是testbench目录。 2. 选择File>New>Preject创建一个新工程。打开的Create Project对话框窗口,可以指定工程的名称、路径和缺省库名称。一般情况下,设定Default Library Name为work。指定的名称用于创建一个位于工程文件夹内的工作库子文件夹。该对话框如图2.2所示,此外还 允许通过修改初始化文件QuestaSim.ini文件来映射库设置。 图2.2 创建工程的对话框 2. 设置Project Name为BG0806,Project Location为E:/QuestaSim/prj, 勾选Copy Library Mappings ,点击OK。 3. 出现Add Items to the Project的对话框,如图2.3所示,

modelsim仿真详细过程

由于我们只需要了解仿真的完整过程,所以不需要自己写源文件和测试文件(也称为testbench)。一下就是简单的源文件和测试文件(亲自测试过)。 //源文件 module compare(equal,a,b); input a,b; output equal; assign equal=(a==b)?1:0; endmodule //测试文件 `timescale 1ns/1ns `include"./compare.v" module comparetest; reg a,b; wire equal; initial begin a=0; b=0; #100 a=0;b=1; #100 a=1;b=1;

#100 a=1;b=0; #100 $stop; end compare compare1(.equal(equal),.a(a),.b(b)); endmodule 有了源文件和测试文件下面就开始用modelsim进行仿真了。 步骤一:新建工程和.v文件(也就是源文件和测试文件) 打开modelsim软件,点击file,选择new—>project 然后就会弹出下面窗口: 然后在project name那一栏写上工程名(随便去,一般是字母),在project location选择工程路径(路径最好没有中文,听说的),然后点OK。进入下个界面:

然后点击小框里面的“create new file”.弹出界面: 在file name中写下源文件名,由于这是比较两数的大小,我取为:compare。在“add file as type”中选择verilog,点OK,然后有:

Modelsim 仿真步骤总结

Modelsim 仿真步骤总结 Modelsim 仿真主要有以下三个方面:各版本的方法大体一致。(1)建立库并映射库到物理目录; (2)编译源代码(包括testbench); (3)执行仿真; 下面具体演示每一步的操作方法及流程,为力求简洁,其中有多种操方法的只介绍一种。 一)建立库的演示: 步骤为——启动modelsim>点击file菜单>(Change Directory)>new>(project)>library.注括号内的步骤非必须。 1.1)启动modelsim; (1.2)点击file菜单,此时若需更改路径,可以点击其中的Change Directory.(注modelsim会自动默认路径。我们也可以在1.1步骤之前建立一个文件夹用于modelsim的工程,再将路径更改到我们新建的文件夹路径。)

(1.3)点击file子菜单中的new,选择project用于新建立一个modelsim工程。(虽然此步非必须,但是建立一个新工程有益 于接下来整个仿真文件的管理。)

1.4)点击file子菜单new,再点击new下的library,用于建立 一个库。(仔细观察1.3步,新建工程的同时亦可建立库)。 至此,modelsim仿真第一大步建立库的工作完毕。

二)编译源代码(包括testbench): 大家都已知道在quartus中编译源代码的方法,这里说明一下在modelsim中编译源代码及testbench的方法。 步骤为——建立一个新工程(同时建立库)后,会自动提示你四个选项。如图: 选create new file后提示对话框,(也可以在有源文件的情况下选择add existing file到工程中。例如我们用quartus写好文件后,可以用此方法将quartus中的文件添加到modelsim工程中来)让你命名你即将创建的新文件,完毕后,会自动出现一个空白的编辑窗口,在那里输入源代码和testbench。(提示:这样编写完后点保存,便可以直接保存到上面设臵好的work库中。比起另一种方法,不建工程直接建库,再通过菜单栏source添加源

modelsim新手入门仿真教程

Modelsim新手入门仿真教程 1.打开modelsim软件,新建一个library。 2.library命名 3.新建一个工程。

3.出现下面界面,点击close。 4.新建一个verilog文件 键入主程序。下面以二分之一分频器为例。

文件代码: module half_clk(reset,clk_in,clk_out); input clk_in,reset; output clk_out; reg clk_out; always@(negedge clk_in) begin if(!reset) clk_out=0; else clk_out=~clk_out; end endmodule 编辑完成后,点击保存。

文件名要与module后面的名称相同。 5.再新建一个测试文件,步骤同上面新建的主程序文件,文件名后缀改为.vt 程序代码如下: `timescale 1ns/100ps `define clk_cycle 50 module top; reg clk,reset; wire clk_out; always #`clk_cycle clk=~clk; initial

begin clk=0; reset=1; #10 reset=0; #110 reset=1; #100000 $stop; end half_clk m0( .reset(reset), .clk_in(clk), .clk_out(clk_out)); Endmodule 6.添加文件,编译文件 先右键点击左边空白处,选择add to project→existing File 选择刚刚新建的两个文件。按ctrl键可以同时选择两个,选择打开,下一步点击ok

ModelSim新手使用手册

ModelSim最基本的操作,初次使用ModelSim的同学,可以看看,相互学习。 无论学哪种语言,我都希望有个IDE来帮助我创建一个工程,管理工程里的文件,能够检查我编写代码的语法错误,能够编译运行出现结果,看看和预期的结果有没有出入,对于Verilog语言,我用过Altera的Quartus II,Xilinx的ISE,还有ModelSim(我用的是Altera 官网的ModelSim_Altera),甚至MAXPlus II,不过感觉这软件太老了,建议还是前三者吧。 学Verilog,找一本好书很重要,参考网友的建议,我也买了一本夏宇闻老师的《Verilog 数字系统设计教程》,用Quartus II来编写代码,个人觉得它的界面比ISE和ModelSim友好,我一般用它编写代码综合后自动生成testbench,然后可以直接调用ModelSim仿真,真的很方便,但学着学着,发现夏老师书里的例子很多都是不可综合的,比如那些系统命令,导致很多现象都发现不了,偶然间我直接打开了ModelSim,打开了软件自带的英文文档,步骤是:Help ->PDF Documentation->Tutorial如下所示: 打开文档的一部分目录: 往下读发现其实ModelSim可以直接创建工程,并仿真的。下面以奇偶校验为例叙述其使用过程(当然前提是你在Altera官网下载了ModelSim并正确安装了)。 1.打开软件,新建一个工程,并保存到自定义的目录中(最好别含中文路径) 2.点击Project,弹出窗口问是否关闭当前工程,点击Yes,接着又弹出如下窗口

我个人的习惯是把Project Name和Default Library Name写成一样,自己定义Project Location。又弹出如下窗口: 3.点击Close(我的版本不能Create New File,其实新建好了工程一样可以新建.v文件),然后点击屏幕下方的Project标签: 如果一开始不是如上图所示的界面,那么可以点击如下图所示红色标记的按键变成上图界面:

modelsim详细使用教程(一看就会)

Modelsim详细使用方法 很多的modelsim教程中都讲得很丰富,但忽视了对整个仿真过程的清晰解读,而且都是拿counter范例举例子,有些小白就不会迁移了。这里我们着眼于能顺利的跑通一个自己写的程序,一步一步的讲解,如果你是一个初学者,这再适合你不过了,虽然貌似字写得比较多,那是因为写得相当的详细,一看就会啦O(∩_∩)O~ 一、建立工程 1、在建立工程(project)前,先建立一个工作库(library),一般将这个library命名为 work。尤其是第一次运行modelsim时,是没有这个“work”的。但我们的project 一般都是在这个work下面工作的,所以有必要先建立这个work。 File→new→library 点击library后会弹出一个对话框,问是否要创建work,点击OK。就能看见work.

2、如果在library中有work,就不必执行上一步骤了,直接新建工程。 File→new→project 会弹出 在Project Name中写入工程的名字,这里我们写一个二分频器,所以命名half_clk,然后点击OK。 会出现

由于我们是要仿一个自己写的程序,所以这里我们选择Create New File。 在File Name中写入文件名(这里的file name和刚刚建立的project name可以一致也可以不一致)。注意Add file as type 要选择成Verilog(默认的是VHDL),然后OK。 发现屏幕中间的那个对话框没有自己消失,我们需要手动关闭它,点close。 并且在project中出现了一个half_clk.V的文件,这个就是我们刚刚新建的那个file。 这样工程就建立完毕了。 二、写代码: 1、写主程序:双击half_clk.v文件会出现程序编辑区,在这个区间里写好自己 的程序,这里我们写一个简单的二分频的代码: module half_clk_dai( clk_in, rst, clk_out ); input clk_in; input rst;

modelsim建库流程_vip

Modelsim建库流程 ——在已有的IEEE库中加入新的库文件 1.将所需要的库对应的vhd文件拷贝至C:\Actel\Libero_v9.0\Model\vhdl_src\ieee 文件夹下; 2.确保modelsim不是处于仿真状态下: 3.编译库中的文件,首先需要选中库,确认如下

4.可以在vhdl模块中调用ieee.math_utility_pkg文件了。 采用上述方法,可以加入math_utility_pkg和fixed_pkg等vhdl-93中没有包括的库文件,增加vhdl语言支持的综合功能。 5.点击modelsim项目文件中的presynth.mpf文件,可以打开这个modelsim项目,然后可 以对所有文件进行编译、仿真等操作。 6.对于定点数运算,需要以下两个库: math_utility_pkg.vhdl - Types used in the fixed point package fixed_pkg_c.vhdl - Fixed-point package (VHDL-93 compatibility version) 而这两个库中又会调用floatfixlib库:这个库包含Actel/Libero_v9.1/Model/vhdl_src/floatfixlib 目录下的三个文件:fixed_pkg_c.vhd, float_pkg_c.vhd, math_utility_pkg.vhd,也就是说,要用这三个文件生成floatfixlib库。 ---------------------------------------------------------------------- Modelsim仿真流程-经验总结 7.Modelsim简介 略。 2.modelsim仿真流程:modelsim基本的仿真流程包括建立库、建立工程并编译、仿真、调试、但在libero环境中运行modelsim时,软件自动映射库和生成工程文件。其中功能仿真、综合仿真以及后仿真分别映射presynth、postsynth和postlayout库。 基本流程是:建立工作库→编译源代码→启动仿真→分析、调试。 8.建立库并映射

Modelsim的仿真教程

ModelSim的仿真 1.仿真的分类 仿真过程是正确实现设计的关键环节,用来验证设计者的设计思想是否正确,及在设计实现过程中各种分布参数引入后,其设计的功能是否依然正确无误。仿真主要分为功能仿真和时序仿真。功能仿真是在设计输入后进行;时序仿真是在逻辑综合后或布局布线后进行。1). 功能仿真( 前仿真) 功能仿真是指在一个设计中,在设计实现前对所创建的逻辑进行的验证其功能是否正确的过程。布局布线以前的仿真都称作功能仿真,它包括综合前仿真(Pre-Synthesis Simulation )和综合后仿真(Post-Synthesis Simulation )。综合前仿真主要针对基于原理框图的设计; 综合后仿真既适合原理图设计, 也适合基于HDL 语言的设计。 2). 时序仿真(后仿真) 时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为作出实际地估价。时序仿真使用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激励也是相同的;惟一的差别是为时序仿真加载到仿真器的设计包括基于实际布局布线设计的最坏情况的布局布线延时,并且在仿真结果波形图中,时序仿真后的信号加载了时延,而功能仿真没有。 后仿真也称为时序仿真或者布局布线后仿真,是指电路已经映射到特定的工艺环境以后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想的过程,是否存在时序违规。其输入文件为从布局布线结果中抽象出来的门级网表、Testbench 和扩展名为SDO 或SDF 的标准时延文件。SDO 或SDF 的标准时延文件不仅包含门延迟,还包括实际布线延迟,能较好地反映芯片的实际工作情况。一般来说后仿真是必选的,检查设计时序与实际的FPGA 运行情况是否一致,确保设计的可靠性和稳定性。2.仿真的作用 1).设计出能工作的电路:因此功能仿真不是一个孤立的过程,其和综合、时序分析等形成一个反馈工作过程,只有这个过程收敛,各个环节才有意义。而孤立的功能仿真通过是没有意义的,如果在时序分析过程中发现时序不满足需要更改代码,则功能仿真必须从新进行。因此正确的工作流程是:

modelsim使用入门(VHDL_

modelsim使用实例(VHDL) 标签: modelsim仿真testbench FPGA 看了几天的modelsim以及如何在quartusII中调用,浏览了N个网页,尝试了N次,......终于初步完成。下面是入门部分介绍。 modelsim是专业的仿真软件,仿真运行速度比同类的其他仿真软件都要快很多。Quartus 自己都不再做仿真器了,普遍使用modelsim,自有其缘由。 这里用的是modelsim-altera(6.6d)版本,与quartus II 11.0搭配。据说Altera公司推出的Quartus软件不同版本对应不同的modelsim,相互之间不兼容。某些功能齐全的modelsim版本可以进行两种语言的混合编程, modelsim-altera只能支持一种语言进行编程(VHDL或者Verilog选其一)。 1、新建工程 打开modelsim-->file-->new-->project 新建工程,输入工程名,文件存放路径后(不可直接放在某盘下,必须放入文件夹中),进入下一步。 在主体窗口下方出现project标签。见下图。

2、新建文件 --create new file:输入名称div10,选择语言VHDL --关闭对话框 新的工程文件将会在工程窗口出现。 3、写入源程序(VHDL) 双击div10.vhd,打开文本编辑器。 实例代码如下(一个十分频的VHDL源代码):library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity div10 is --实体要与工程名相同 port(clk :in std_logic;

Quartus+ModelSim-Altera 联合仿真(Verilog版)

Quartus+ModelSim-Altera联合仿真(Verilog版) 作者:L.xiang (注:默认Next/OK/Finish) Step1:新建工程New Project Wizard...设置路径+工程名+entity名(project、entity必须同名); Step2:选择器件:Cyclone II EP2C5F26C8(例如);

Step3:Simulation设置:ModelSim-Altera+Verilog HDL; Step4:新建文件,选Verilog HDL File; Step5:输入代码,并保存为led(.v文件); Step6:调试,修改直到没有Error为止(工程目录下同时自动生成了simulation文件);

Step7:生成Test Bench文件(.vt):Processing->Start->Start Test Bench Template Writer; Step8:工程目录下C:\altera\text\led1\simulation\modelsim打开led.vt文件,并复制“led_vlg_tst”;

Step9:设置Simulation:Assignments+Settings; Step10:Simulation->仿真扫描时间Time scale:100ps(或其它值),Comple test bench-> Tset Benchse...; Step11:点击New...;

Step12:粘贴Test bench name:led_vlg_tst(Step8中已复制),Top level module in test bench:led_vlg_tst(必须和.vt文件里的module名一致); Step13:添加Test bench files:simulation/modelsim/led.vt,并点击Add; Step14:点击,即启动ModelSim进入仿真;

ModelsimSE仿真步骤

WILDSC ModelsimSE仿真教程 Verilog & VHDL 孙玉阳 2014/6/3 对于ModelsimSE仿真设置网上很难找到详细教程,在此写一篇基于Verilog 和VHDL的ModelsimSE的仿真设置教程,以期缩短大家ModelsimSE学习时间,由于时间仓促,不足之处还请见谅。

目录 1 ModelsimSE仿真——Verilog HDL (2) 1.1 建立资源库 (2) 1.1.1 建立资源库的目的 (2) 1.1.2 建立资源库前准备 (2) 1.1.3 建立资源库的步骤 (3) 1.2 功能仿真 (11) 1.2.1 建立ModelsimSE工程 (11) 1.2.2 添加Quartus工程文件 (12) 1.2.3 编译 (14) 1.2.4 仿真 (18) 1.3 时序仿真 (21) 2 ModelsimSE仿真——VHDL (25) 2.1 建立资源库 (25) 2.1.1 建立资源库的目的 (25) 2.1.2 建立资源库前准备 (25) 2.1.3 建立资源库的步骤 (26) 2.2 功能仿真 (33) 2.2.1 建立ModelsimSE工程 (33) 2.2.2 添加Quartus工程文件 (34) 2.2.3 编译 (37) 2.2.4 仿真 (40) 2.3 时序仿真 (44)

1ModelsimSE仿真——Verilog HDL 1.1建立资源库 1.1.1建立资源库的目的 Quartus Verilog工程文件里面在使用Primitives、Megafunction、LPM等Quartus自带模块时,会调用Quartus本身自带的一些库文件,但是ModelsimSE在仿真Quartus Verilog工程文件时不会自动去调用Quartus的库文件,同时ModelsimSE也不自带与Primitives、Megafunction、LPM相关的库文件。所以在仿真Primitives、Megafunction、LPM等模块时,必须在ModelsimSE里建立与其对应的资源库,否则无法仿真。 1.1.2建立资源库前准备 (备注:若需要后仿真(时序仿真)则进行这一步骤,若只进行前仿真(功能仿真)则跳过此步骤): 打开待仿真的quartus工程,点击菜单Assignments->Settings,打开如下窗口 将以下红色部分设置好,先点击apply,然后点击OK即可

实验五 Modelsim仿真 教案设计

实验五ModelSim仿真 【实验容】 1.仔细阅读ModelSim软件简要使用说明(下文)。(“实例代码”压缩包用于ModelSim软件学习用) 2.Testbench写法简要介绍。(可以参考“Testbench模版”) 3.用ModelSim完成10位全加器的功能仿真。 ModelSim软件简要使用说明 ModelSim是对VHDL,Verilog,SystemC以及混合语言编写的设计文件进行仿真和调试的工具软件。 1.仿真流程 在ModelSim中对一个设计进行仿真的基本步骤如下图所示: 2.仿真具体步骤 Create a new project 选择“File > New > Project”,会弹出对话框,如图所示:

其中: “Project Name”项:填写要创建的工程的名字。 “Project Location”项:确定创建的工程所要存放的位置。请在E盘下建文件夹! “Default Library Name”项:填写工程的工作库的名字。 注: 在用ModelSim进行仿真之前,必须要对设计文件进行编译,生成与设计文件逻辑功能相对应的设计单元。由于ModelSim是用库文件来进行仿真的,所以编译后的设计单元需要存放在库文件里。这个库文件叫作“工作库”。926 以上三项填写完毕后,点击“OK”按钮,会在指定的位置处创建工程及工作库,如图所示: 在工作库文件夹,有一个名为“_info”的特殊格式文件,如图所示:

这个文件指定了此文件夹为ModelSim的工作库文件夹。在编译步骤生成的所有设计单元都会被添加到工作库文件夹。 Adding objects to the project 在上一步点击OK后,ModelSim会弹出一个对话框,如图所示: 其中: “Create New File”项:在工程中创建新的设计文件。 “Add Existing File”项:把已经存在的设计文件加入到工程中。 “Create Simulation”项:在工程中创建仿真配置文件。 “Create New Folder”项:在工程中创建新的文件夹。 (1)创建文件夹。(此步骤也可以不要,不过推荐采用此步骤,便于文件管理)选择“Create New Folder”项,在弹出的对话框中输入要创建的文件夹的名字,如图所示: 点击“OK”按钮,会在“Workspace”列表里显示出新创建的文件夹。如图所示:

Modelsim仿真流程

Modelsim、Synplify.Pro、ISE设计全流程 摘要:本文介绍了如何编译HDL必须的Xilinx库和结构仿真,如何调用Xilinx CORE-Generator,如何使用Synplify.Pro综合HDL和内核,如何进行综合后的项目执行,以及不同类型结构的仿真。 关键词:EDA,Modelsim,Synplify.Pro,ISE,Xilinx库,Xilinx CORE-Generator,HDL,第一章 Modelsim编译Xilinx库 本章介绍如何编译HDL必须的Xilinx库和结构仿真。 创建将被编译库的目录 在编译库之前,最好先建立一个目录(事实上必须建立一个目录),步骤如下。(假设Modelsim 的安装目录是“$Modeltech_6.0”,ISE的安装目录是“$Xilinx”) 在“$Modeltech_6.0/”目录下建立一个名为XilinxLib的文件夹; 启动Modelsim后,从“File”菜单项中点击“Change Directory”并指定到刚刚建立的那个文件夹“XilinxLib”; 接下来要做的事情是将Xilinx库编译到“XilinxLib”文件夹中。有三个库需要被编译。它们分别是“simprims”,“unisims”和“XilinxCoreLib”;(所有这些库文件都在“$Xilinx/verilog/src”目录下) 点击Modelsim中的“Workspace”窗口,建立一个名为Xilinx_CoreLib的新库;(这个操作创建一个名为“Xilinx_CoreLib”的文件夹,你可以在“Workspace”窗口中看到它) 现在开始编译!在“Compile”菜单中点击“Compile”,选择 “$Xinlinx/verilog/scr/XilinxCoreLib”目录中所有的文件,在弹出的对话框中选中刚刚建立的“Xilinx_CoreLib”文件夹,再点击“Compile”按钮就可以了编译了;

相关主题
相关文档 最新文档