verilog.docx

上传人:b****7 文档编号:10573698 上传时间:2023-02-21 格式:DOCX 页数:20 大小:99.30KB
下载 相关 举报
verilog.docx_第1页
第1页 / 共20页
verilog.docx_第2页
第2页 / 共20页
verilog.docx_第3页
第3页 / 共20页
verilog.docx_第4页
第4页 / 共20页
verilog.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

verilog.docx

《verilog.docx》由会员分享,可在线阅读,更多相关《verilog.docx(20页珍藏版)》请在冰豆网上搜索。

verilog.docx

verilog

Cadence中Verilog的一些使用方法

一、学习Verilog的必要性。

随着电路规模的增大和复杂,传统的图形输入模式已不可行。

语言描述电路成为潮流。

它的方便性和好的更改性、维护性在实践中得到很好的体现。

尤其现在强大的综合工具,和系统集成对核的需求性使Verilog更有用武之地。

每个硬件工程师应该学习掌握它。

二、Verilog的文本编辑器。

在进入Cadence后在命令行中键入

textedit*.v↙

(此处*为文件名,在textedit命令后应带上文件名)

键入上述命令后进入文本编辑框,和Windows中常用的文本编辑框很象。

图1、textedit文本编辑框界面

图中的主菜单File、View、Edit、Find及各自底下的子菜单和Windws中的

文本编辑器差不多,使用方法相似,这里就不多说了。

编好程序保存可以进

行后续工作了。

三、Verilog的模拟仿真。

1、命令的选择。

在命令行中键入

verilog↙

会出现关于此命令的一些介绍,如下:

-freadhostcommandargumentsfromfile.

-vspecifylibraryfile

-yspecifylibrarydirectory

-ccompileonly

-senterinteractivemodeimmediately

-ksetkeyfilename

-uconvertidentifierstouppercase

-tsetfulltrace

-qquiet

-ddecompiledatastructure

Specialbehavioralperformanceoptions(iflicensed):

+turbospeedupbehavioralsimulation.

+turbo+2+turbowithsecondleveloptimizations.

+turbo+3+turbo+2withthirdleveloptimizations.

+listcountsgeneratecodeformaintaininginformationfor$listcounts

+no_turbodon'tuseaVXL-TURBOlicense.

+noxldisableXLaccelerationofgatesinallmodules

Specialenvironmentinvocationoptions(iflicensed):

+guiinvoketheveriloggraphicalenvironment

在上面的参数选择中,简单介绍几个常用的:

(1)-c

首先应该保证所编程序的语法正确性。

先进行语法的检查,选择参数-c键入

如下命令。

verilog–c*.v↙

根据Cadence的报告,查找错误信息的性质和位置,然后进入文本编辑器进

行修改,再编译,这是个反复的过程,直到没有语法错误为止。

(2)-s

进入交互式的环境,人机交互运行和下面的参数联合使用。

(3)+gui&

verilog仿真有命令和图形界面两种方式。

图形界面友好和windows使用很

象,很好掌握,一般都使用图形方式。

“&”符号是后台操作的意思,不影响

前台工作。

如此时你可以在命令行输入其它的命令。

其它的命令参数选择比较复杂,这里就不介绍了,故我们这里常用的命令是:

verilog–s*.v+gui&↙(*代表文件名)

进入图形交互界面。

$附:

命令行输入

!

!

是执行上一条命令,

命令行输入

!

*↙(*代表字母)

是执行最近的以*开头的命令。

上述附注对命令输入速度提高有所帮助。

2.SimVision图形环境。

SimVision是Verilog-XL的图形环境。

主要有SimControl、Navigator、

SignalFlowBrowswer、WactchObjectsWindow、SimWave等窗口。

(1)SimControl窗口

此窗口是主要的仿真控制窗口,让用户和机器进行交互式操作。

执行各种Verilog-XL命令(菜单),进行仿真、分析、调试你的设计。

该窗口可以显示设计的模块和模块,显示和设置断点、强制信号等。

创建用户自己的按钮和执行经常使用的操作。

ManuBar①

ToolBar②

SourceBrowser③

图2、SimControl窗口界面图

ScopeRegion④

I/ORegion⑤

MessageRegion⑥

各部分简介:

1、MenuBar

有许多的子菜单,让你执行各种模拟仿真命令。

这里就不一一介绍,到使用时,在指明其功能和所在位置。

2、ToolBar

各种按钮代表最常用的操作和功能,能快速对选中的物体执行各种命令。

你可以在工具条中加入自己定义的按钮,来代表常用的操作命令。

使用Option-UserButtons-Create菜单项。

用Options-UserButtons-Edit菜单项修改修改按钮。

工具条还显示当前模拟时间,当处于交互式的模拟状态时,会随模拟更新时间。

因为工具条按钮的操作为常用操作,下面各功能详细介绍一下。

运行模拟按钮设置模块按钮对对象执行操作按钮调用其它显示窗口按钮

显示模拟时间

abcdefghijklmn

放用户自定义按钮是否显示程序代码

图3、SimControl窗口中的工具条

a、RunSimulation按钮

运行模拟,若无断点直至完成,图标变为停止模拟图标。

若有断点则运行到断点对应信号再改变的位置。

b、SingleStep按钮

再任何模块每按一下执行到下一个可执行行,即使在子程序中也是单步运行。

c、StepOver按钮

在当前的模块中执行到下一个可执行行,在子程序中步单步执行,而是一步执行完

子程序。

d、SetScope按钮

由当前的调试模块转到被选中的模块。

e、ScopeUp按钮

由当前模块转到它的上一级模块,但若有对象被选中,不执行。

f、ShowExecution按钮

模拟时更新当前模块,显示正在模拟的模块。

在当前刚执行完的代码行左边有一个箭头

g、SetBreakpoint按钮

设置断点,当模拟过程中被选信号变化时发生。

代码左边的行号为高亮的可设为断

点,灰色则不可以。

h、SetForce按钮

弹出一个窗口,里面有当前选中信号的名字和数值。

用户可以强制信号为一个希望

值。

i、ShowValue按钮。

n、程序代码是否显示的切换按钮。

显示当前被选信号的数值。

以下j、k、l、m调用其它调试窗口,具体介绍放到后面。

j、打开Navigator窗口。

k、打开WatchObjects窗口。

显示被选中的对象

l、打开SingalFlowBrowser窗口。

把被选中的对象放到浏览器中

m、打开SimWave窗口。

显示被选中对象的模拟波形。

③、SourceBrowser

显示被调试的程序代码,每行左边有行号。

你可以在其间选择信号和模块。

这种选择会影响其它工具的操作对象,反过来其他工具操作对象的选择也会作用于Source

Browser信号和对象的选择。

可在其间设置断点,如前所说的在行号为高亮的行可设

为断点,灰色则不可以。

可在SourceBrowser中点鼠标的右键选择菜单进行操作。

另一个对选择对象的操作是双击该对象。

如双击信号得到它的数值,双击模块则调到

该模块描述处。

如图3中的n字母代表的按钮,SourceBrowser可被关掉不显示。

④、ScopeRegion

包含scopefield和subscopesfield。

从下拉按钮选择不同的项,跳不同的模

块。

对应的SourceBrowser显示该模块的代码。

⑤、I/ORegion

显示执行的命令和模拟输出的结果。

你也可以直接在此键入命令执行操作。

I/O

Region也可以被关掉不显示,当点击MessageRegion右边的三角按钮可切换显示

与否。

⑥、MessageRegion

显示模拟状态。

3、Navigator窗口

按下图3中j字母所代表的按钮

(2)SimControl窗口Tools-Navigator菜单项(3图

8中按下和图3中j字母所代表的按钮一样的按钮打开Navigator窗口。

此窗口用图形,在ScopeTree中采用树的形式显示设计中各模块的层次关系。

ObjectsList中显出ScopeTree中被选模块的当前模拟数值和描述。

图4、Navigator窗口

1、MenuBar

提供各种命令和操作,有下拉菜单(如下面的图5)和右键弹出菜单两种。

选中对象点击右键可选择对对象操作所需的命令,如下面的图6。

图5Navigator窗口的菜单

图6、Navigator中的PoP-Up菜单

②、ToolBar

a、设置模块b、对选择对象操作c、调用其他显示窗口

图7、Navigator中的工具条

a、b、c同SimControl窗口中的工具条对应按钮的功能一样,都是对选择对象进

行相应的操作。

只是对象可以在SimControl窗口选择也可以在Navigator窗口中

选择,互相影响。

3、HierarchyPath

显示当前模块的直接路径,其他路径不显示。

可选择其间的模块点击右键弹出菜单进行操作。

④、ScopeTree

对被选中的模块用树的形式表示出来。

在图5中Options-ScopeTree…菜单项中有

关于对象显示的的性质,有Filters、Formatting、Layout三栏,各有一些选项供

选择。

影响当前ScopeTree显示的内容。

⑤、ObjectsList

显示当前调试模块里的信号和当前数值。

在在图5中Options-ObjectsList…菜单

选项有Filters、Formatting两栏,会影响ObjectsList中的显示内容。

在Selcet

子菜单中的选项(如图5)能选取某一类别的信号,如都是Wires型,或是Registers

型。

4、SingalFlowBrowser窗口

该窗口跟踪可疑信号的值,进入有三个方法

(1)按下图3中j字母所代表的按钮

(2)SimControl窗口Tools-SingalFlowBrowser菜单项(3)图7、Navigato中

的工具条中字母c的第二个按钮打开窗口。

(4)WactchObjectsWindow中按下图

3中j字母所代表的按钮的一样的按钮界面如下图。

(没选信号时)

图8、SingalFlowBrowser窗口界面

MenuDriverFrame

ToolBarTracefield

1、Menu

对对象的操作命令。

可查看信号或输入的细节,显示信号的驱动,可用四种进制显示信号的数值见下图。

后面会阐述菜单项的功能。

图8、SingalFlowBrowser窗口菜单

2、ToolBar中的按钮和前面出现的相同的按钮的功能一样这里就不重复了。

3、Tracefield

显示图2SimControl窗口SourceBrowser或者图4、Navigator窗口中ObjectsList所选的信号。

也可在Tracefield输入信号名。

4、DriverFrame

显示被选的信号和数值,以及所有影响该信号的信号及它们的数值。

假设某个时候的Driver和Value如下图。

图9、Driver信号举例

如果在上图中选中Driver信号选图8中View-Driverinfo…的菜单项,将弹出

DriverDetails窗口显示信号的详细信息。

如下图。

图10、Driver信号DriverDetails窗口

当选中图9中的Driver信号,选图8中Trace-showinputs菜单项,或者双击信

号,将得到影响Driver信号的有关信号的信息。

如下图。

图11、Driver信号的inputs信息图

再次双击Driver信号,会隐去这些信息。

5、WatchObjects窗口

显示所选信号及其数值,当模拟中断时,更新数值。

进入有三个方法

(1)按下图3

中k字母所代表的按钮

(2)SimControl窗口Tools-WatchObjects菜单项(3)图7、

Navigator中的工具条中字母c的第一个按钮打开窗口。

(4)SingalFlowBrowser

窗口中按下和图3中k字母所代表的按钮的一样的按钮界面如下图。

(没选信号时)

图12、WatchObjects窗口

你可以在打开WatchObjects窗口前选择观察信号,如在SourceBrowser中点选

择信号,或在SimControl窗口中(图2)的Select菜单下的菜单项选择,或在图4

中Navigator窗口的⑤ObjectsList中选择。

也可以在打开WatchObjects窗口后

再选择信号,如前选择好信号,然后点击图12中工具条上的加号图标,把选好信

号加到窗口中。

窗口的菜单如下图:

菜单项的含义都比较明了,就不多说了。

提一下Options-

HeighlightActivity项使最新变化的信号项用高亮条表示,Options-Continous

Update项使信号随时变化,即使按图3、中的a、RunSimulation按钮也会显示最

后的结果,否则不显示最后结果。

图13、WatchObjects窗口的菜单

⑥、SimWave窗口

显示选择信号的波形和数值。

图14、SimWave窗口界面

四、一个示例。

这里举一个实际工作中编的例子,演示前面所讲的内容,但不一定面面俱到。

程序的清单见附录。

(alu.v)

1、在命令行中敲texteditalu.v↙用textedit编好程序的文本。

2、在命令行中敲verilog–calu.v↙编译通过程序.

3、在命令行中敲verilog–salu.v+gui&↙进入交互式图形界面SimControl窗口。

(见图2)在Scope中选择test.talu

4、在SimControl窗口中的选中Select-Ports项,选择端口。

5、按下图3、SimControl窗口中的工具条中的k键,打开WatchObjects窗口,

并如图13选中Options-Continuous,HighlightActivity两项。

6、按下图3、SimControl窗口中的工具条中的m键,打开SimWave窗口。

7、按下图3、SimControl窗口中的工具条中的a键,

图15、WatchObjects窗口

图16、SimWave窗口波形

附alu.v源程序:

modulealu(sum,c_out,a,b,c_in,m);

output[3:

0]sum;

outputc_out;

input[3:

0]a,b;

inputc_in,m;

wirec4,cn,cout1;

wire[3:

0]sum1,a2;

assigna2[0]=(b[0]&~m)|(~b[0]&m);

assigna2[1]=b[1];

assigna2[2]=(b[2]&~m)|(((~b[2]&b[1])|(b[2]&~b[1]))&m);

assigna2[3]=(b[3]&~m)|(~b[3]&~b[2]&~b[1]&m);

assign{c4,sum1}=a+a2+c_in;

assigncn=c4|(sum1[3]&sum1[2])|(sum1[3]&sum1[1]);

assign{cout1,sum}=sum1+{1'b0,cn,cn,1'b0}+1'b0;

assignc_out=cn;

endmodule

moduletest;

reg[3:

0]ta,tb;

regtc,tm;

wire[3:

0]tsum;

wiretcout;

alutalu(tsum,tcout,ta,tb,tc,tm);

initial

$monitor($time,"c_out=%d,sum%d=%d+%d+%d,m=%d",tcout,tsum,ta,tb,tc,tm);

initial

begin

ta=4'b1001;

tb=4'b1000;

tc=1'b0;

tm=1'b0;

#10ta=4'b1001;

tb=4'b1001;

tc=1'b1;

#10ta=4'b0111;

tb=4'b0010;

tc=1'b0;

#10tm=1'b1;

ta=4'b0111;

tb=4'b0010;

tc=1'b1;

#10ta=4'b0111;

tb=4'b0100;

tc=1'b1;

#10ta=4'b0101;

tb=4'b0010;

tc=1'b1;

#10$finish;

end

endmodule

下图17、18是程序对应的电路图。

图17BCD码加法器

图18ALU原理图

几个打开相关帮助的命令,在命令行中敲入:

openbookvlogtut&↙(Verilog-XLTutorial)

openbookvlogref&↙(Verilog-XLReference)

openbookvloguser&↙(simwaveuserguide)

openbooksimwaveuser&↙(opentheVerilog-XLguide)

校内网站(ftp:

10.12.41.35)有PC机版Verilog仿真工具如Modelshim,ActiveHDL4.2版,Xilinx的FPGA等等,还有Cadence的一些资料(如Verilog-XLReference、user_guide等等)。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1