- 博客(17)
- 资源 (1)
- 收藏
- 关注
原创 同步双端口ram实现
深度16,数据宽度16, 地址宽度7bit//同步双端口ram,位宽16,深度128module DP_RAM #( parameter ADDR_WIDTH = 7, parameter DATA_WIDTH = 16, parameter DATA_DEPTH = 16) ( input cs_n, input [DATA_WIDTH-1:0]wr_data, input [ADDR_WIDTH-1:0]wr_addr, inpu
2021-07-17 16:34:10
503
原创 小数分频设计实现(1.5分频,3.5分频,4.5分频)
module freq_div #( parameter N = 3) ( input clk, input rst_n, output clk_out); //counter reg [3:0] cnt ; always @(posedge clk or negedge rst_n) begin if (~rst_n) begin cnt <= 0; end else if (cnt.
2021-06-07 19:21:17
2862
原创 奇数分频实现----占空比50%
中心思想:利用计数器生成目标频率的一半的两个正交相位时钟,然后通过上升沿和下降沿采样后异或得到输出频率module freq_div #( parameter N = 7) ( input clk, input rst_n, output clk_out); //counter reg [3:0] cnt ; always @(posedge clk or negedge rst_n) begin if (~rst_n).
2021-06-04 22:53:07
482
原创 一种优化协议时序的pipeline
`timescale 1ns / 1ps//////////////////////////////////////////////////////////////////////////////////// Company: // Engineer: // // Create Date: 2021/05/14 21:52:58// Design Name: // Module Name: tb_pipeline2// Project Name: // Target Devices: .
2021-05-14 22:36:08
385
原创 一个简单的pipeline 加法器设计+反压
流水线思想在电路设计中十分重要。一方面在cpu的五级流水设计中,采用pipeline实现同周期指令重叠,(多周期机制划分并插入寄存器。在周期1发起指令1,在进程发起后,周期2再次发起指令1,使得最大程度达到一个周期支持五条指令的执行,基本认为一个周期完成一个指令)增加数据吞吐量;另一方面在复杂组合逻辑单元的采样中,插入寄存器使得单周期内关键路径与延时降低。每一拍进行一次寄存器的更新。下面贴一个流水线加法器的设计:本设计的实现为四个输入相加作为加法器的输入,其中两两相加,分别寄存,最后再加一级寄存算两
2021-05-12 23:01:43
1146
原创 2020-0824system verilog学习笔记
4、连接设计和测试平台1、 测试平台模仿设计的整个运行环境。如处理器模型需要连接到不同的总线和器件,则总线和器件在测试平台中就被建模成总线功能模型。V端口繁琐需要一种更高层次的方法来和设计建立通信--接口。 需要可靠的时序方法在正确的时间点驱动和采样同步信号,避免竞争-----时钟块2/、接口信号必须使用非阻塞赋值来驱动3、 在模块和程序块之外声明接口变量,否则接口变化曾局部变量,对设计其他部分不可见4、 接口interface连接端口port,端口已定义方向信息。module top
2020-08-26 19:06:47
224
原创 2020-08-26 system verilog学习笔记
8 OOP技巧 1、 类的继承,如果父类构造函数无参数和返回类型,则子类扩展类不需要构造函数,如只继承变量类和方法2、 父类的方法定义成虚方法,这样就可以再扩展类中重定义3、 子程序的原型prototype是指明了参数列表和返回类型的第一行。4、 当启动扩展类的时候,构造函数new:如果基类里有参数,那么扩展类必须有一个构造函数new(var),并且必须再构造函数第一行调用基类的构造函数super.new(input int var);5、声明一个虚方法,这样svhi查看存储再tr中的对
2020-08-26 19:04:09
295
原创 SV线程及线程间通信
1、 在测试平台环境里,大多数语句块被模拟成事务处理器(transaction),运行在各自并发执行的线程里。2、 线程间通信:event、事件控制、wait语句、mailbox、旗语3、join none块后语句的执行早于块内的任何语句4、 构造函数new只对数值进行初始化,并不启动任何线程,二者分开允许在执行transaction之前修改任何变量。5、线程中的automatic变量。如果在for循环语句中使用了fork join none,程序program回使用tr来匹配即将到来的
2020-08-25 17:09:16
1532
原创 关于d触发器一些易混点和应用,以及校招笔试中的选择题应用
一、时序电路1.D触发器先来看一个最简单的时序电路:module D1(input D,input CLK,output reg Q);always@(posedge CLK) begin Q <= D; end endmodule 上面描述了一个最简单的边沿触发的D触发器:输入数据D,在下一时钟周期就输出Q。其中,数据的存储时刻是时钟信号的上升沿(跳变瞬间),即寄存器Q在时钟上升沿采样到数据D,并更新存储内容;除了时钟上升沿的其他时刻,无论D如何变化,
2020-08-03 20:18:53
2611
1
原创 sv中关于随机化和数组约束那些事儿----终于整理完了我认为的一些重点
一、为什么需要随机化?当一个项目的功能越来越复杂,功能项成倍增加时,依靠定向测试集的编写来检查功能点未免压力过大了;其次,各个功能点之间的关系才是大多数bug的来源,但这种bug很难用定向测试的编写来筛查。只使用定向测试对回归测试也没有意义。采用受约束的随机测试法(CRT)产生测试集是项目复杂化测试的解决办法,但是CRT的环境建立比普通定向测试环境建立要更加复杂,并且要通过参考模型的建立和线上比较的形式进行对比来验证设计的正确性。参考模型多采用matlab,c,或v语言编写。然而只要搭建好验证环
2020-07-27 18:39:29
5415
原创 随机化句柄数组
随机句柄数组的功能是在调用其所在的随机函数时,随机函数会随机化数组中的每一个句柄所指向的对象。因此随机句柄数组的声明一定要添加rand来表明其随机化的属性,同时在调用随机函数之前要保证句柄数组的每一个句柄元素都非悬空,这要保证在随机化之前为每一个句柄元素构建对象。如果要产生多个随即对象,则需要建立随机句柄数组。和整数数组不同,随机句柄数组需要在随机化之前分配所有的句柄元素,因为求解器是不会创建对象的。使用动态数组可以按照需要分配最大数量的元素,再使用约束减小数组的大小。在随机化时,动态句柄数组的大小可以
2020-07-23 19:38:18
1113
1
原创 uvm的config机制举例
为了增强uvm环境的可复用性,通过外部的参数配置,在环境在创建组件之前就已经实现资源的配置。这些都是通过uvm机制中的uvm_config_db配置类实现的。可以实现:传递virtual interface到验证环境中 传递变量值,如int型变量,string,enum型变量 可传递句柄(object),内含多种变量类型,多个组件变量,打包传递//声明ifinterface uvm_config_if; logic [31:0] addr; logic [31:0] data;.
2020-05-11 13:25:34
903
原创 UVM中域的自动化的声明及copy/compare/print函数举例及仿真
factory机制有对域的自动化的声明,声明之后对于pkg中的一些函数无需定义即可直接使用,包括copy(),compare(),print(),增加代码的可重用性。 typedef enum {WRITE, READ, IDLE} op_t; //枚举类型声明 class trans extends uvm_object; bit[31:0] addr; bit[31:0] data; op_t op; string name; `uvm_objec.
2020-05-10 18:26:22
4564
原创 UVM中组件实例的创建与覆盖
uvm中创建object或者component都要通过工厂机制-factory创建,采用factory机制可以更方便修改实例类型,增加实例创建的可配置性,一定程度上避免了代码冗余,不过uvm看似代码量骤增,多数都是固定格式代码风格,在sv基础上只要记住流程可迅速上手。
2020-05-10 16:36:29
787
1
原创 学习system Verilog,读懂代码的基础
目录数据类型(1)logic类型和bit类型:(2)signed and unsigned无符号类型:logic,bit有符号类型:int,integer,byte,short int(3)数据存储定宽数组:数组宽度在编译和仿真时已经确定时选择定宽数组。packed and unpacked array:foreach实现数组遍历:动态数组数据类型...
2020-03-31 23:49:47
682
原创 AHB总线信号的产生
`timescale 1ns/1ns module bus_wr_tb;reg clk;reg cs;//reg wr;//写入地址reg [31:0] addr;//32bit地址总线reg [31:0] data;//32bit数据总线initialbegincs=1'b1; wr=1'b1;//初始化 #30; bus_wr(32'h1100008a, 3...
2020-03-25 21:05:10
399
原创 D触发器--qustasim仿真
关于D触发器,d触发器在Verilog时序电路设计中是一个基本元件,多存在于单元库调用之中。dff可以形成4位移位寄存器,接下来进行一个简单的1bitd触发器的设计和仿真。代码段module dff(clk,data,q);//端口名定义input clk;input data;output q;reg q;always @(posedge clk) q<=data;/...
2020-03-25 17:59:34
1139
Verilog HDL过程语句.ppt
2020-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人