中科大Cadence使用手册 - 图文 下载本文

input ENABLE; input RESET;

output [9:0]COUNT; output FULL;

reg [9:0]COUNT_I; reg FULL_I;

always @ (posedge CLK or posedge RESET) begin

if (RESET) // asynchronous reset begin

COUNT_I = 10'b0000000000; FULL_I = 1'b0; end

else // active clock edge begin

if (ENABLE) begin if (COUNT_I == 10'b1111111111) FULL_I = 1'b1; else

COUNT_I = COUNT_I + 1; end end end

assign COUNT = COUNT_I; assign FULL = FULL_I;

endmodule

附2 有限状态机的Verilog代码

// a simple state machine

module stm(clk, in, reset, out); input clk, in, reset; output [3:0] out;

reg [3:0] out; reg [1:0] state;

parameter s0=0, s1=1, s2=2, s3=3;

always @(state) begin

case (state) s0:

out = 4'b0000; s1:

out = 4'b0001; s2:

out = 4'b0010; s3:

out = 4'b0100; default:

out = 4'b0000; endcase end

always @(posedge clk or posedge reset) begin

if (reset)

state = s0; else

case (state) s0:

state = s1; s1:

if (in)

state = s0; else

state = s2; s2:

state = s3; s3:

state = s0; endcase end

endmodule

// end of state machine

Cadence IC设计实验

实验六 NC-Verilog Simulator实验

实验目的:NC_verilog仿真器的使用,包括编译、运行和仿真。

预备工作:

cp /eva01/cdsmgr/ training_IC_data/NCVlog_5_0.tar . tar -vxf NCVlog_5_0.tar

Lab1。运行一个简单的Verilog设计

[1]、设置设计环境

1.cd NCVlog_5_0/lab1-mux

在Solaris窗口,点击左起第3个图标Home Folder, 在File Manager窗口进入:你的学号/NCVlog_5_0/lab1-mux目录;

这个目录包含了用来描述一个多路选择器和其测试平台的verilog 模块。以下是mux_test.v模块内功能模块的端口框图。

建议:如果有时间,你最好看一看各模块(module)的Verilog代码! 2.创建cds.lib文件,

在File Manager窗口,选择File->New File,文件名为:cds.lib,OK 打开cds.lib文件(双击),在其中写入: Define lab1muxlib ./lab1-mux.lib 存盘退出

3.创建(库)文件夹(即目录):

在File Manager窗口,File->Folder,文件夹名:lab1-mux.lib,OK (你也可以在Terminal窗口 mkdir lab1-mux.lib) 4.类似步骤1,创建hdl.var文件,在其中写入:

Define WORK lab1muxlib 存盘退出

5.查看verilog源文件。mux.v是2选1多路选择器MUX2_1 的门级建模源文件,mux_test.v是mux.v的测试台,包含了输入激励信号和监控程序运行的任务语句。

[2]、编译源文件(ncvlog命令):

鼠标回到你原先打开的Terminal(或Console)窗口,目录应为。。。/你的学号/NCVlog_5_0/lab1-mux。点击(激活窗口)。 1. ncvlog mux.v –messages ,这条指令是编译mux.v。 2.打开hdl.var文件,在其后添加:Define NCVLOGOPTS –messages

存盘退出

注:用NCVLOGOPTS变量定义常用的ncvlog命令行操作,从而避免每次都敲入同样的命令行。

3.编译测试平台源文件:

ncvlog mux_test //可以不加后缀.v 4. ncls –all

这一步目的是看一看前面两个ncvlog生成了哪些library objects? 答案是:module lab1muxlib.MUX2_1:module (VST) module lab1muxlib.mux_test:module (VST)

现在你明白lab1muxlib的作用了吗?ncvlog编译后生成的模块放入lab1muxlib工作库中。

[3]、扩展与连接(elaboration详细描述)顶层设计(ncelab命令): 1.ncelab mux_test

2.ncls –all ,查看ncelab生成了哪些library object。

[4]、仿真:

ncsim mux_test

观察仿真器的输出情况。你还可以查看ncls.log, ncelab.log, ncsim.log, ncvlog.log文件内容了解更多的信息。

以下Lab2至lab4是编译、扩展与连接(详细描述)和仿真步骤的高级操作。

Lab2。编译的高级技术

一、Lab2-1:寄存器设计

实验目的:学习如何使用hdl.var中的WORK、VIEW、LIB_MAP和VIEW_MAP 变量。

你将学会使用:

1.分别用hdl.var中的WORK变量和用-work选项忽略WORK变量进行编译。 2.分别用hdl.var中的VIEW变量和用-view选项忽略VIEW变量进行编译。 3.用hdl.var中的LIB_MAP和VIEW_MAP变量进行编译。 4.用hdl.var中的LIB_MAP和VIEW_MAP变量进行阐述。

下图是Lab2实验用到的register和counter的端口框图。