`

Verilog中for语句的使用,简单testbench的写法

阅读更多

1,for语句的使用

`timescale	1ns/1ns	
module add16(a,b,c0,sum,cout);
	input	[15:0]	a,b;
	input		c0;
	output	[15:0]	sum;
	output		cout;
	
    	reg 	[15:0]	p,g,sum;  
    	reg 	[16:0] 	CA;	   
	reg		cout;
    	integer 		i;

	always @(a or b) 
		for(i=0;i<=15;i=i+1)
			begin 
				p[i] = a[i] ^ b[i];
				g[i] = a[i] & b[i];
			end
							
    	always @(p or g or c0)        
		begin					
        			CA[0] = c0;	  //CA[i] : carry to i bit
		         	for( i=0; i<=15; i=i+1)	
				 begin					  
                 				CA[i+1] = g[i] | ( p[i] & CA[i]);
			               		sum[i] 	= p[i] ^ CA[i];
         				end	
			cout=CA[16];
	    	end 
		
endmodule

 

2,简单Testbench的写法

`timescale	1ns/1ns
module	add16_tb;
	reg[15:0]		a,b;
	reg		c0;
	wire[15:0]	sum;
	wire		cout;
	
	add16 test(a,b,c0,sum,cout);
	
	initial 
		begin 		
			$display("");
			$display("+++++++++++++++++++++++++++++++++++++++++++++++");
			$display("********	The start of the test	*****************");
			$display("*******a*******b*******c0*******sum********cout"); 
			$display("============================  | ===============");
			$monitor("       %h,   %h,   %b,     | %h,      %b",a,b,c0,sum,cout);
					a=16'h1111;b=16'h1111;c0=0;
			#100	a=16'hffff;b=16'h0000;c0=0;
			#100	a=16'hffff;b=16'h0000;c0=1;
			#100	a=16'h1111;b=16'h1111;c0=0;
			#100	a=16'h2222;b=16'h1111;c0=0;
			#100	a=16'h1111;b=16'h4444;c0=0;
			#100	a=16'h9999;b=16'h4444;c0=0;
			#100
			$display("============================  | ===============");
			$display("********	The end of the test	*****************");
			$display("+++++++++++++++++++++++++++++++++++++++++++++++");
			$display("");
			#100	$finish;
		end
		
endmodule

 

3,总结

a,for语句i需要定义成integer 类型,另外注意表达式写成i=i+1不要写成i++;

b,另外,Verilog中用任何语句都要在头脑中有个硬件的概念,for语句也是,就如上面的加法器一样,在写hdl前在草图上画一个还是要的;

c,Testbench还是要用Active HDL,modelsim或LDV跑一跑才行;;

分享到:
评论

相关推荐

    verilog testbench的写法

    Verilog作为一种硬件描述语言(HDL),广泛应用于数字电路的设计和测试中,因此,掌握Verilog testbench的编写对于硬件工程师来说尤为重要。 在编写Verilog testbench时,首先需要理解Verilog的基本语法和结构,...

    北大数字集成电路课件--15_Verilog-testbench的写法

    北大数字集成电路课件--15_Verilog-testbench的写法

    testbench的入门和提高

    Testbench是验证数字电路设计的重要工具,特别是在Verilog和SystemVerilog等硬件描述语言(HDL)中。在数字集成电路设计流程中,Testbench扮演着模拟真实世界输入并评估设计功能和性能的角色。以下是对Testbench的详细...

    python自动生成Verilog的testbench脚本

    python自动生成Verilog的testbench脚本。python自动生成Verilog的testbench脚本。python自动生成Verilog的testbench脚本。

    flash verilog 源码 testbench

    在本场景中,"Flash Verilog 源码 Testbench" 指的是使用 Verilog 语言编写的针对 NAND Flash 存储器的测试平台。Testbench 是验证数字电路设计的关键部分,它模拟了实际环境中硬件的行为,帮助工程师检查设计的功能...

    verilog 的testbench的编写

    Testbench 是验证设计功能的关键部分,它模拟真实环境中的输入激励,并观察输出响应,确保设计满足预期的行为。本篇将详细介绍如何编写 Verilog 的 Testbench 及其重要组成部分。 1. Testbench 的结构与功能 - **...

    可以自动生成Verilog的Testbench的Perl脚本

    Testbench在Verilog设计中扮演着至关重要的角色,它是验证设计功能是否正确实现的关键部分。通常,工程师需要手动编写Testbench来模拟不同的输入条件并检查预期的输出,这是一项耗时且需要专业知识的工作。 Perl是...

    教你怎样编写verilog的testbench

    ### Verilog Testbench 编写指南 在数字电路设计领域,Verilog 是一种广泛使用的硬件描述语言(HDL),用于描述数字系统的行为、时序和结构。随着集成电路(IC)和系统级芯片(SoC)设计变得越来越复杂,验证这些...

    Verilog testbench 入门应用笔记

    3. **断言**:在testbench中使用断言(assertion)可以增强设计的健壮性。它们是条件语句,如果条件不满足,则表明设计可能有错误。这有助于早期发现潜在问题。 4. **随机化**:为了提高测试覆盖率,可以使用...

    Test Bench 经典教程.rar

    在硬件描述语言(HDL,如Verilog或VHDL)中,Test Bench是模拟真实硬件环境来测试设计功能的一个虚拟平台。它能帮助工程师们在实际硬件制造前检查和调试设计的正确性。 本教程“Test Bench经典教程”似乎包含了两...

    Modelsim工程建立与testbench写法

    #### 二、Testbench写法 **1. 测试文件的作用** - **产生激励**:为设计文件提供必要的输入信号,模拟实际工作环境。 - **接收反馈**:监控设计文件的输出,以验证其行为是否符合预期。 **2. 变量定义与初始化** ...

    verilog testbench.rar

    Testbench在Verilog中扮演着至关重要的角色,它是验证设计功能正确性的关键部分。以下是对"verilog testbench"的详细解释: 一、Verilog Testbench的基本概念 Testbench是Verilog代码的一部分,它模拟了设计的输入...

    简单verilog testbench

    简单verilog testbench `timescale 1ns/1ns module tb_jet_ctrl_top(); parameter U_DLY = 1; integer i; reg rst_n; reg clk; reg [ 7:0] cpu_dat; reg [11:8] cpu_addr; reg cpu_cs; reg cpu_wr_n; reg prt_...

    spi接口的简单testbench和仿真脚本打包

    本压缩包提供了SPI接口的简单testbench和仿真脚本,用于辅助学习和理解SPI协议以及FPGA设计中的验证方法。 首先,`dac_tb.v` 文件是测试平台(testbench)的Verilog代码,它是验证SPI接口功能的核心。在Verilog中,...

    verilog 写的单个与门以及testbench

    本主题聚焦于如何使用Verilog实现一个简单的与门(AND Gate)逻辑门,并编写相应的测试激励(Testbench)来验证其功能。与门是基本的逻辑运算单元,它的输出只有当所有输入均为高电平时才为高电平。 首先,我们来...

    针对Verilog 的Testbench 例程

    Testbench,或称为测试平台,是Verilog 设计中的关键部分,它模拟了实际环境来测试设计的功能正确性。下面将详细阐述针对Verilog 的Testbench 例程的相关知识点。 首先,理解Testbench 的核心作用至关重要。Test...

    Verilog Testbench

    Verilog Testbench是一种重要的硬件描述语言(HDL)技术,用于在数字系统设计中创建测试平台。这个压缩包文件“Verilog testbench入门资料打包”显然包含了一系列关于如何使用Verilog构建测试平台的基础教程和实例。...

    i2c_master verilog代码+testbench

    修改了原code中不合理的地方:1、不符合I2C标准的端口处理方式 2、增加io_pad接口模块 3、testbench中增加I2C协议上拉电路 4、修改了原设计中sda信号输出方式不完善的地方 5、修改了远设计中SDA,SCL初始状态

    超级全面Testbench教程,Verilog和VHDL的.zip

    Testbench是硬件描述语言(HDL)如Verilog和VHDL中的一种关键设计方法,用于验证数字系统的行为和功能。本教程集合了Testbench在Verilog和VHDL中的全面知识,帮助学习者深入理解如何创建有效的测试平台,确保数字...

    testbench 入门资料——testbench preliminary

    例如,在 Verilog 中定义一个简单的 TESTBENCH 模块如下所示: ```verilog module test_bench; // 定义信号 reg clk; reg reset; wire out; // 产生激励 initial begin // 初始化信号 clk = 0; reset = 1...

Global site tag (gtag.js) - Google Analytics