01 2024 档案
摘要:覆盖率分为功能覆盖率和代码覆盖率 基于覆盖率驱动的验证技术 覆盖率检测可以采用穷举方法或者是随机检测的方法 功能覆盖率是根据spec提取出功能点然后定义的功能覆盖率 功能覆盖率模型 功能覆盖率收敛 功能覆盖率数据 功能覆盖率数据的归一化和分析 代码覆盖率 断言覆盖率 功能覆盖率 基于覆盖率驱动的验证
阅读全文
摘要:内容 时钟上升沿就是一个事件,event是一个关键字,可以触发事件 mailbox - 用于传递信息,将信息给到mailbox进行传递 内部线程通信 事件传递,对于线程进行控制 对于数据和资源进行传递 内部线程通信机制:Verilog event event - 是一个数据类型 -> - 触发事件
阅读全文
摘要:内容 assign d = a & b; assign e = b | c; begin...end之间的语句是串行执行的 fork....join语句是并行执行的 逻辑仿真工具中的并发性 仿真工具的时间更新,等到一个时刻所有的线程执行完成才会更新仿真时间 并发线程执行 线程遇到等待语句之后才会停止
阅读全文
摘要:Coverage Driver Verification 可约束的随机化验证,用于测试的值可以再一定范围内进行随机,具体的范围可以进行约束,比如可以跑100次,然后查看覆盖率,可以通过覆盖率进行度量验证的进度 内容 随机化的变量往往需要添加一定的约束,通过添加约束让值在一定的范围内进行随机 随机化验
阅读全文
摘要:oop:封装\继承\多态 new() new()函数用于申请内存空间并且进行变量的初始化 多态 父类引用指向子类对象 虚方法看对象,实方法看句柄 ref参数 ref声明的端口信号,在进行参数传递时,共享同一个变量存储空间,即“引用”传递进来的实参,而不是复制传递的参数。 int array[]= {
阅读全文
摘要:根据绿皮书对之前的知识点进行补充 1.验证导论 system verilog硬件验证语言(Hardware verification Language,HVL)特点 受约束的随机激励生成 功能覆盖率 更高层的结构,面向对象编程 多线程以及线程之间的通信 支持HDL数据类型,比如verilog四值逻辑
阅读全文
摘要:静态变量 继承性(Inheritance) 抽象类和虚方法virtual methods 多态(Ploymorphism) 通过基类的变量可以使用子类的对象 基类中定义的virtual functiond都是共工方法,可以被子类使用 子类重写父类的方法能被父类看到,那就需要虚方法。虚方法就是一个基本
阅读全文
摘要:内容 面向对象编程 面向对象的基本概念 对象没有办法直接操作,需要通过handle(指向对象的指针)进行操作 面向对象的基本术语 面向对象的优势 类的定义 实例化对象 new() - 产生具体对象,开辟新的内存空间 句柄handle 对象内存空间释放 使用对象 与其他语言类似通过"."进行调用对象和
阅读全文
摘要:内容 system verilog过程语句:自增和自减操作符 逻辑比较操作符 逻辑值为1bit inside语句 变量类型转换 强制类型转换:$cast() 变量位宽转换 变量符号位转换 for循环语句 for循环中定义的int i和外部的int i是两个变量 for循环控制语句 do...whil
阅读全文
摘要:联合数组 在内存中分配的空间可以是不连续的 联合数组方法 数组的方法 数组使用推荐 结构体 枚举类型 字符串变量类型String 操作符
阅读全文
摘要:动态数组 数组定义的时候不用给定数组元素个数 动态数组实例 例1 队列
阅读全文
摘要:system verilog可以用于设计也可以进行验证 语法规则 SV新数据类型 SV数据类型 bit - 0-255 byte - -127 - 128 # 快速进行sv文件仿真 VCS -R -sverilog xxx.sv // 使用二值逻辑产生时钟,不用给clk赋初值,初始值为0 bit c
阅读全文
摘要:clocking会设置input和output的延时 default input #3ns output #1ns 数据是在时钟上升沿驱动的,在时钟上升沿,将vld驱动到dut,dut中也会在时钟上升沿采样vld 认为加大delay之后,可以直接看到采样到的是什么信号,所以可以通过clocking中
阅读全文
摘要:AHB Bus SD Bus DFT & Interrupt 控制集成需求 功能列表 控制器框架图 顶层信号 硬件集成环境 寄存器描述
阅读全文
摘要:数据类型 内建数据类型 reg - 是变量类型 wire - 是线网类型 system verilog - 是verilog的新版本 system verilog文件都是.sv后缀的 DFF/latch - 对于verilog而言都是使用的reg类型 logic - 可以替代reg/wire log
阅读全文
摘要:同步FIFO设计思路 方法1:使用计数器记录FIFO有效数据,从而产生空满信号 方法2:指针空间扩大一倍,读写指针最高位相同为空,最高位不同,剩下数据位相同为满 异步FIFO设计 读写指针分别在各自的时钟域进行维护 读空的时候需要在读时钟域进行判断,写满的时候需要在写时钟域进行判断,所以需要将读写指
阅读全文
摘要:first in first out,先进先出 fifo是基于RAM进行设计的 双端口RAM设计(16*8) 如果大的RAM可以调用IP RAM的关键参数:深度和宽度 module dual_ram #( parameter ADDR_WIDTH = 4, parameter RAM_WIDTH =
阅读全文
摘要:最近在看B站微机原理视频,习惯看视频的时候记录一下笔记,方便复习,记录在博客中(视频连接:https://www.bilibili.com/video/BV1ZJ411b7Na/?spm_id_from=333.337.search-card.all.click&vd_source=96e5e43b
阅读全文
摘要:循环冗余校验 "冗余"为什么能检验? 数据传输过程中不能保证所有的位数都是正确的,由于电磁干扰会产生错误,假设传输过程中最多只有1位是传输错误的,并且不需要检验出具体哪一位出现错误,只需要考虑检验数据存在错误即可 不添加校验码 最简单的情况是发送方只发送了一位数据,接收正确为1,接收错误为0 接收方
阅读全文
摘要:AXI Channel axi与ahb不同就是分为不同的channel write address channel - 表明一个transaction基本的属性,包含本次传输的地址\类型\大小(多少字节)\包含几次transfer write data channel - 需要有wdata\字节选通
阅读全文
摘要:AHB's problem SoC bus 架构 AXI is used more and more 频率200M使用AHB,频率再升高就使用AXI AHB的问题 AHB协议本身限制要求较高,比如command和data必须是1Cycle的延迟,error response,HREADYOUT和HR
阅读全文
摘要:常用的AHB Bus结构 AHB Matrix AHB Bus Matrix,即总线矩阵,其实际上就是一个互连(Interconnect)。用于连接满足该总线协议的外设,包括Master和Slave。基于该模块,我们可以快速的完成“连连看”工作。将设计好的IP封装成AHB协议,然后挂载上去即可。这样
阅读全文
摘要:规格说明 现在要对addr1进行操作(原addr1中存储的数据为data),现在需要写入data1,下一拍对addr1进行读操作,需要读出data1(读出最新的数据data1,而不是data),这时候需要一个buffer,将上一拍的data1作为读数据进行返回,因为data1可能还没有写到sram中
阅读全文
摘要:AHB2APB Bridge位置 AHB子系统时钟在200Mhz左右,APB时钟在几十Khz到几十Mhz 所以要进行跨时钟域处理,从AHB高时钟频率转到APB低时钟频率 AHB2APB Bridge规格说明 Bridge是APB总线上唯一的主机(也可以通过设计使APB支持多个Master) AHB2
阅读全文
摘要:Hreadyout 每个slave回复hreadyout通过mux给到master master会将hreadyin信号给到每个slave hreadyout开始的时候都为1,如果是为0,会出现问题,当复位的时候所有hreadyout为0,经过mux之后得到的hready信号也一定为0,hready
阅读全文
摘要:Agenda 目的 Verilog概述 Verilog建模 模块 模块组成 书写建议 时延 Verilog基本语法 标识符 可读性 注释 空格 数据类型 操作数 运算符 条件语句 循环语句 函数 Verilog for design module 端口 数据类型 例化模块 参数化 行为描述 过程赋值
阅读全文
摘要:`timescale 1ns/1ps `define DATAWIDTH 32 `define ADDRWIDTH 8 `define IDLE 2'b00 `define W_ENABLE 2'b01 `define R_ENABLE 2'b10 module APB_Slave ( input
阅读全文
摘要:AHB System 外部的memory比如SD card或者是DDR,需要在总线线上挂载相应的接口进行访问 AHB2 AHB2可以有多个master,每个master都会发出相应的控制信号,三个master会发出三组总线信号,对于slave而言,会share一组总线,所以只有一组master的控制
阅读全文
摘要:APB总线并不是只有一个master(AHB2APB Bridge),可以通过设计支持多个APB Master,只是比较复杂 Lattice 实现了一款Multi-Master Interconnect
阅读全文
摘要:基于APB slave mux我们可以快速地将多个apb slave连接在APB上面。在实际的设计当中都是采用这样的方式连接多个APB slave的 DECODE4BIT - 可以理解为master接收到地址之后,进行译码,通过mux进行选择那个APB slave module apb_slave_
阅读全文
摘要:APB Slave位置 实现通过CPU对于APB Slave读写模块进行读写操作 规格说明 不支持反压,即它反馈给APB的pready信号始终为1 不支持错误传输,就是说他反馈给APB总线的PSLVERR始终是为0的 支持4个可读写的寄存器 支持12个只读寄存器 支持字节选通信号,根据字节选通信号进
阅读全文
摘要:APB Usage APB主要用于寄存器和外设(GPIO\TIMER\UART)的访问 CPU 通过AXI接口发出transaction访问外设,AXI-based interconnect接收到AXI transaction,然后通过DRAMC接收到axi访问的请求,访问DRAM数据 DRAMC中
阅读全文
摘要:AMBA介绍 AMBA总线应用:IOT系统/智能手机/网络SoC 何处使用AMBA系统:相机\手机\电脑 应用场景 规格说明 软硬件划分 软硬件划分:哪一部功能软件做,哪一部分硬件做,软件适合做控制比较灵活的工作,硬件适合做运算量大比较规整的操作 主要功能进行音频解码和视频解码 1080P:一幅图有
阅读全文
摘要:scan chain产生之前需要进行scan drc的过程,判断cell是不是能够串到scan chain上去 mux-d scan cell(是最常用的scan cell),还有其他的scan cell measure POs的动作,可以发生在capture PPOs之后吗?为什么? PIs,PP
阅读全文
摘要:How do we use power domain 使用UPF至少有一个power domain power domain可以进行嵌套 Defining Power Domain Example Partitioning Guidelines Scope 没有写scope就是当前design Sc
阅读全文
摘要:Mainstream Low Power techniques clock gating - 低功耗的设计风格,4bit以上可以通过综合工具增加ICG APR的时候可以更换器件VT Advanced Low Power Techniques 不同电压域划分,频率高的电压高,频率低的电压低 所有模块电
阅读全文
摘要:不同上升沿触发器如何进行scan chain DFT实例 Synopsys 工具文档 Mentor DFT脚本 add_clocks 0 clk - 0表示上升沿 Synopsys DFT脚本 更改netlist 需要反相器,实现设计中既有上升沿触发的期间和下降沿触发的 sysnopsys的库文件是
阅读全文
摘要:NVIC-概述 nested vector interrupt control - 内嵌向量中断控制器 传统ARM中断控制在Core的外部,软件接收到中断之后,需要查中断的编号,然后启动相应的中断处理程序,在Core内部设置NVIC,当中断进入之后,通过硬件根据中断的级别直接找到中断处理程序,提高效
阅读全文
摘要:Cortex CM3 内核架构 CM3内核主要包含几个部分:取指(Fetch)\指令译码(Decoder/DEC)\执行(EXEC)\ALU 内存取数通过load & store指令,就是通过一个LSU(Load & Store Unit)单元 Status - 状态上报 内核和外部进行交互都是通过
阅读全文
摘要:Verilog必须掌握 逻辑仿真工具(VCS)和逻辑综合工具(DC) AndOR module AndOr( output X,Y, input A,B,C ); // A B进行按位与运算 assign #10 X = A & B; // B C按位进行或运算 assign #10 Y = B |
阅读全文
摘要:动态显示驱动模块 point:输入小数点信号,高电平有效,这里我们假设要让第二个数码管显示小数点,其余数码管不显示小数点,那么此时 point 的输入的值就应该是 6’b000010。 seg_en:数码管使能信号,这里一直让其拉高即可。 data:输入的十进制数据,假设这里我们输入的十进制数为 9
阅读全文
摘要:数码管动态显示 二进制码转变为BCD码 动态显示驱动模块,是将传入的待显示的十进制数据,转换为位选和段选信号,传入的数据data是由数据产生模块产生的 二进制表示的十进制数需要转变为BCD码表示的十进制数,从而产生位选和段选信号 BCD码是使用四位二进制数表示二进制数 BCD码分为有权码(8421码
阅读全文
摘要:Review scan replacement - 将normal DFF替换为mux gate DFF scan stitching - 将DFF连接起来 scan的作用:将测试困难的时序逻辑转变为易于测试的组合逻辑 scanc测试过程:包含对于组合逻辑测试和时序逻辑测试两个过程,对于时序逻辑进行
阅读全文
摘要:Design For Test 在实际生产过程中产生的physical defect是导致芯片功能出错的根本原因 如何根据结构产生测试向量呢?主要考虑physical defect physical defect有多种,针对不同的physical defect有不同的处理方式 Design - 是为
阅读全文