Cadence中Verilog的一些使用方法
第四章 Cadence中Verilog 的一些使用方法
§ 4-1 Verilog 的文本编辑器
随着电路规模的增大和复杂,传统的图形输入模式已不可行。语言描述电路成为潮流。它的方便性和好的更改性、维护性在实践中得到很好的体现。尤其现在强大的综合工具,和系统集成对核的需求性使Verilog更有用武之地。每个硬件工程师应该学习掌握它。
在进入Cadence后在命令行中键入
textedit *.v↙
(此处*为文件名,在textedit 命令后应带上文件名)
键入上述命令后进入文本编辑框,和Windows 中常用的文本编辑框很象。
图4-1-1textedit文本编辑框界面
图中的主菜单File、View、Edit、Find及各自底下的子菜单和Windws中的
文本编辑器差不多,使用方法相似,这里就不多说了。编好程序保存可以进
行后续工作了。
§ 4-2 Verilog 的模拟仿真
一.命令的选择。
在命令行中键入
verilog↙
会出现关于此命令的一些介绍,如下:
-f
read host command arguments from file.
-v specify library file
-y specify library directory
-c compile only
-s enter interactive mode immediately
-k set key file name
-u convert identifiers to upper case
-t set full trace
-q quiet
-d decompile data structure
Special behavioral performance options (if licensed):
+turbo speed up behavioral simulation.
+turbo+2 +turbo with second level optimizations.
+turbo+3 +turbo+2 with third level optimizations.
+listcounts generate code for maintaining information for $listcounts
+no_turbo don't use a VXL-TURBO license.
+noxl disable XL acceleration of gates in all modules
Special environment invocation options (if licensed):
+gui invoke the verilog graphical environment
在上面的参数选择中,简单介绍几个常用的:
(1)-c
首先应该保证所编程序的语法正确性。先进行语法的检查,选择参数- c键入
如下命令。
verilog –c *.v↙
根据Cadence的
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
,查找错误信息的性质和位置,然后进入文本编辑器进
行修改,再编译,这是个反复的过程,直到没有语法错误为止。
(2)-s
进入交互式的环境,人机交互运行和下面的参数联合使用。
(3)+gui &
verilog 仿真有命令和图形界面两种方式。图形界面友好和windows使用很
象,很好掌握,一般都使用图形方式。 “&”符号是后台操作的意思,不影响
前台工作。如此时你可以在命令行输入其它的命令。
其它的命令参数选择比较复杂,这里就不介绍了,故我们这里常用的命令是:
verilog –s *.v +gui &↙ (*代表文件名)
进入图形交互界面。
$附:命令行输入
!!↙
是执行上一条命令,
命令行输入
!* ↙ (*代表字母)
是执行最近的以*开头的命令。
上述附注对命令输入速度提高有所帮助。
二.SimVision 图形环境。
SimVision是Verilog-XL的图形环境。 主要有SimControl、Navigator、
Signal Flow Browswer、 Wactch Objects Window 、SimWave 等窗口。
(1) SimControl 窗口
此窗口是主要的仿真控制窗口,让用户和机器进行交互式操作。执行各种Verilog-XL命令(菜单),进行仿真、分析、调试你的设计。该窗口可以显示设计的模块和模块,显示和设置断点、强制信号等。创建用户自己的按钮和执行经常使用的操作。
Manu Bar ①
Tool Bar②
Source Browser③
图4-2-1 SimControl 窗口界面图
Scope Region④
I/O Region⑤
Message Region⑥
各部分简介:
1、 Menu Bar
有许多的子菜单,让你执行各种模拟仿真命令。这里就不一一介绍,到使用时,在指明其功能和所在位置。
2、 Tool Bar
各种按钮代表最常用的操作和功能,能快速对选中的物体执行各种命令。你可以在工具条中加入自己定义的按钮,来代表常用的操作命令。使用Option-User Buttons-Create 菜单项。用Options-User Buttons-Edit 菜单项修改修改按钮。工具条还显示当前模拟时间,当处于交互式的模拟状态时,会随模拟更新时间。因为工具条按钮的操作为常用操作,下面各功能详细介绍一下。
运行模拟按钮 设置模块按钮 对对象执行操作按钮 调用其它显示窗口按钮
显示模拟时间
a b c d e f g h i j k l m n
放用户自定义按钮 是否显示程序代码
图4-2-2 SimControl窗口中的工具条
a、Run Simulation按钮
运行模拟,若无断点直至完成,图标变为停止模拟图标。若有断点则运行到断点对应信号再改变的位置。
b、Single Step按钮
再任何模块每按一下执行到下一个可执行行,即使在子程序中也是单步运行。
c、Step Over 按钮
在当前的模块中执行到下一个可执行行,在子程序中步单步执行,而是一步执行完子程序。
d、Set Scope 按钮
由当前的调试模块转到被选中的模块。
e、Scope Up 按钮
由当前模块转到它的上一级模块,但若有对象被选中,不执行。
f、Show Execution 按钮
模拟时更新当前模块,显示正在模拟的模块。在当前刚执行完的代码行左边有一个箭头
g、Set Breakpoint 按钮
设置断点,当模拟过程中被选信号变化时发生。代码左边的行号为高亮的可设为断点,灰色则不可以。
h、Set Force 按钮
弹出一个窗口,里面有当前选中信号的名字和数值。用户可以强制信号为一个希望值。
i、 Show Value 按钮
n、程序代码是否显示的切换按钮。显示当前被选信号的数值。
以下j、k、l、m调用其它调试窗口,具体介绍放到后面。
j、打开Navigator窗口。
k、打开Watch Objects 窗口。显示被选中的对象
l、打开Singal Flow Browser窗口。把被选中的对象放到浏览器中
m、打开SimWave窗口。显示被选中对象的模拟波形。
③、Source Browser
显示被调试的程序代码,每行左边有行号。你可以在其间选择信号和模块。这种选择会影响其它工具的操作对象,反过来其他工具操作对象的选择也会作用于Source Browser信号和对象的选择。可在其间设置断点,如前所说的在行号为高亮的行可设为断点,灰色则不可以。可在Source Browser中点鼠标的右键选择菜单进行操作。另一个对选择对象的操作是双击该对象。如双击信号得到它的数值,双击模块则调到该模块描述处。如图4-2-2中的n字母代表的按钮,Source Browser可被关掉不显示。
④、Scope Region
包含scope field 和subscopes field。从下拉按钮选择不同的项,跳到不同的模块。对应的Source Browser显示该模块的代码。
⑤、I/O Region
显示执行的命令和模拟输出的结果。你也可以直接在此键入命令执行操作。I/O Region 也可以被关掉不显示,当点击Message Region右边的三角按钮可切换显示与否。
⑥、Message Region
显示模拟状态。
三.Navigator 窗口
按下和图4-2-2中j字母所代表的按钮一样的按钮打开Navigator窗口。此窗口用图形,在Scope Tree 中采用树的形式显示设计中各模块的层次关系。在Objects List中显出Scope Tree中被选模块的当前模拟数值和描述。
图4-2-3 Navigator窗口
1、 Menu Bar
提供各种命令和操作,有下拉菜单(如下面的图4-2-4)和右键弹出菜单两种。选中对象点击右键可选择对对象操作所需的命令,如下面的图4-2-5。
图4-2-4 Navigator窗口的菜单
图4-2-5 Navigator中的PoP-Up菜单
②、Tool Bar
a、设置模块 b、对选择对象操作 c、调用其他显示窗口
图4-2-6 Navigator中的工具条
a、b、c同SimControl窗口中的工具条对应按钮的功能一样,都是对选择对象进行相应的操作。只是对象可以在SimControl窗口选择也可以在Navigator窗口中选择,互相影响。
3 、Hierarchy Path
显示当前模块的直接路径,其他路径不显示。可选择其间的模块点击右键弹出菜单进行操作。
④、Scope Tree
对被选中的模块用树的形式表示出来。在图4-2-4中Options-Scope Tree…菜单项中有关于对象显示的的性质,有Filters、Formatting、Layout三栏,各有一些选项供选择。影响当前Scope Tree显示的内容。
⑤、Objects List
显示当前调试模块里的信号和当前数值。在在图4-2-4中Options-Objects List…菜单选项有Filters、Formatting两栏,会影响Objects List中的显示内容。在Selcet子菜单中的选项(如图4-2-4)能选取某一类别的信号,如都是Wires型,或是Registers型。
四.Singal Flow Browser窗口
该窗口跟踪可疑信号的值,进入有三个方法
(1) 按下图4-2-2中j字母所代表的按钮
(2) SimControl 窗口Tools- Singal Flow Browser菜单项
(3) 图4-2-6 Navigator中的工具条中字母c的第二个按钮打开窗口。
(4) Wactch Objects Window中按下图4-2-2 中j字母所代表的按钮的一样的按钮界面如下图。(没选信号时)
图4-2-7 Singal Flow Browser窗口界面
Menu Driver Frame
Tool Bar Trace field
1、 Menu
对对象的操作命令。可查看信号或输入的细节,显示信号的驱动,可用四种进制显示信号的数值见下图。后面会阐述菜单项的功能。
图4-2-8 Singal Flow Browser窗口菜单
2、 Tool Bar 中的按钮和前面出现的相同的按钮的功能一样这里就不重复了。
3、 Trace field显示图2 SimControl 窗口Source Browser或者图4、Navigator窗口中Objects List所选的信号。也可在Trace field输入信号名。
4、 Driver Frame
显示被选的信号和数值,以及所有影响该信号的信号及它们的数值。
假设某个时候的Driver和Value 如下图。
图4-2-9 Driver 信号举例
如果在上图中选中Driver信号选图4-2-9中 View-Driver info…的菜单项,将弹出
Driver Details窗口显示信号的详细信息。如下图。
图4-2-10 Driver 信号Driver Details窗口
当选中图4-2-9中的Driver 信号,选图4-2-8中Trace-show inputs菜单项,或者双击信号,将得到影响Driver 信号的有关信号的信息。如下图。
图4-2-11、Driver 信号的inputs信息图
再次双击Driver 信号,会隐去这些信息。
五.Watch Objects 窗口
显示所选信号及其数值,当模拟中断时,更新数值。进入有三个方法
(1) 按下图4-2-2中k字母所代表的按钮
(2) SimControl 窗口Tools- Watch Objects菜单项
(3) Navigator中的工具条中字母c的第一个按钮打开窗口。
(4) Singal Flow Browser
窗口中按下和图4-4-2中k字母所代表的按钮的一样的按钮界面如下图。(没选信号时)
图4-2-12、Watch Objects 窗口
你可以在打开Watch Objects窗口前选择观察信号,如在Source Browser 中点选择信号,或在SimControl窗口中(图2)的Select菜单下的菜单项选择,或在图4中Navigator窗口的⑤Objects List中选择。也可以在打开Watch Objects窗口后再选择信号,如前选择好信号,然后点击图4-2-12中工具条上的加号图标,把选好信号加到窗口中。窗口的菜单如下图:菜单项的含义都比较明了,就不多说了。提一下Options-Heighlight Activity项使最新变化的信号项用高亮条表示,Options-Continous Update 项使信号随时变化,即使按图3、中的a、Run Simulation按钮也会显示最后的结果,否则不显示最后结果。
图4-2-13、Watch Objects 窗口的菜单
⑥、SimWave 窗口
显示选择信号的波形和数值。
图4-2-14、SimWave 窗口界面
§ 4-3 一个示例
这里举一个实际工作中编的例子,演示前面所讲的内容,但不一定面面俱到。
程序的清单见附录。(alu.v)
1、 在命令行中敲textedit alu.v↙ 用textedit 编好程序的文本。
2、 在命令行中敲verilog –c alu.v↙ 编译通过程序.
3、 在命令行中敲verilog –s alu.v +gui&↙ 进入交互式图形界面SimControl 窗口。(见图2)在Scope中选择test.talu
4、 在SimControl 窗口中的选中Select-Ports项,选择端口。
5、 按下图3、SimControl窗口中的工具条中的k键,打开Watch Objects 窗口,
并如图13选中Options-Continuous ,Highlight Activity两项。
6、 按下图3、SimControl窗口中的工具条中的m键,打开 SimWave 窗口。
7、 按下图3、SimControl窗口中的工具条中的a键,
图4-3-1、Watch Objects 窗口
图4-3-2、SimWave 窗口波形
附:alu.v源程序:
module alu(sum,c_out,a,b,c_in,m);
output [3:0]sum;
output c_out;
input [3:0]a,b;
input c_in,m;
wire c4,cn,cout1;
wire [3:0]sum1,a2;
assign a2[0]=(b[0]&~m)|(~b[0]&m);
assign a2[1]=b[1];
assign a2[2]=(b[2]&~m)|(((~b[2]&b[1])|(b[2]&~b[1]))&m);
assign a2[3]=(b[3]&~m)|(~b[3]&~b[2]&~b[1]&m);
assign {c4,sum1}=a+a2+c_in;
assign cn=c4|(sum1[3]&sum1[2])|(sum1[3]&sum1[1]);
assign {cout1,sum}=sum1+{1'b0,cn,cn,1'b0}+1'b0;
assign c_out=cn;
endmodule
module test;
reg [3:0]ta,tb;
reg tc,tm;
wire [3:0]tsum;
wire tcout;
alu talu(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;
#10 ta=4'b1001;
tb=4'b1001;
tc=1'b1;
#10 ta=4'b0111;
tb=4'b0010;
tc=1'b0;
#10 tm=1'b1;
ta=4'b0111;
tb=4'b0010;
tc=1'b1;
#10 ta=4'b0111;
tb=4'b0100;
tc=1'b1;
#10 ta=4'b0101;
tb=4'b0010;
tc=1'b1;
#10 $finish;
end
endmodule
下图17、18是程序对应的电路图。
图17 BCD码加法器
图18 ALU原理图
几个打开相关帮助的命令,在命令行中敲入:
openbook vlogtut&↙ (Verilog-XL Tutorial)
openbook vlogref&↙ (Verilog-XL Reference)
openbook vloguser&↙ (simwave user guide)
openbook simwaveuser&↙ (open the Verilog-XL guide)
校内网站(ftp:10.12.41.35)有PC机版Verilog仿真工具如Modelshim,Active HDL4.2版,Xilinx的FPGA等等,还有Cadence 的一些资料(如Verilog-XL Reference、user_guide等等)。
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
� EMBED PBrush ���
PAGE
10