自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(219)
  • 问答 (1)
  • 收藏
  • 关注

原创 【Silvaco example】GaN diode, Reverse-bias leakage current vs temperature

该示例演示了,GaN肖特基二极管中,因声子辅助隧穿( phonon-assisted tunneling )的反向偏置漏电流的温度依赖性建模。

2022-11-25 17:24:04 4985 2

原创 【Silvaco example】Temperature Ramping - Effect on Leakage

本示例演示了Atlas中任何device的全局温度梯度(global temperature ramping)的正确方法。

2022-11-25 14:01:49 3093

原创 【牛客网】Verilog快速入门-基础语法(1)

【牛客网】Verilog快速入门-基础语法(1)

2022-08-29 20:53:38 1729

原创 【2023秋招】近期硬件公司秋招内推合集以及笔试面试准备

2023秋招笔试面试准备

2022-08-25 19:27:09 2644

原创 数字ic设计——AMBA总线(2)AHB

AMBA AHB 是一种适用于高性能可综合设计的总线接口。它定义了组件之间的接口,例如主设备、互连设备和从设备。

2022-07-12 19:33:53 6369 1

原创 数字ic设计——AMBA总线(1)AMBA总线介绍

AMBA总线介绍AMBA(Advanced Microcontroller Bus Architecture) 总线是由ARM公司提出的一种开放性的片上总线标准,它独立于处理器和工艺技术,具有高速度低功耗等特点。

2022-07-11 21:08:56 9011

原创 数字ic设计——SPI

SPI总线概念SPI ( Serial Peripheral Interface,串行外围设备接口)是一种同步、全双工、主从式,高速接口(UART是异步)。来自主机或 从机 的数据在时钟上升沿或下降沿同步。主机和从机可以同时传输数据。......

2022-07-05 22:27:09 4315 3

原创 数字ic设计——UART

UART 的全称是通用异步收发器(Universal Asynchronous Receiver/Transmitter),是实现设备之间低速数据通信的标准协议。

2022-06-28 16:09:24 5740 5

原创 异步FIFO

异步FIFO

2022-06-21 15:13:40 5217 6

原创 同步电路与跨时钟域电路设计2——多bit信号的跨时钟域传输(FIFO)

多个控制信号跨时钟域 仅仅通过简单的同步器 同步有可能是不安全的 。如何传递两个同时需要的信号(b_load和b_en)? 将 b_load和b_en同步至a_clk时钟域, 如果 b_load和b_en这两个信号有一个小的skew, 将导致在 a_clk时钟域中两个信号并不是在同一时刻起作用,与在b_clk中的逻辑关系不 同 将b_load和b_en信号在b_clk时钟域中合并成一个信号b_lden,然后同步至a_clk中。 问题:遇到不能合并的情况

2022-06-19 22:07:11 4700 4

原创 同步电路与跨时钟域电路设计1——单bit信号的跨时钟域传输(同步器)

即电路中的所有受时钟控制的单元(如触发器Flip Flop、寄存器Register),全部由一个统一的全局时钟控制。例子:两个触发器都受同一个时钟来控制。同步电路设计的优点:同步电路设计的缺点: 因为电路里面所有的触发器都由时钟网络来控制,所以必须要构建时钟树(时钟网络)。 在时钟网络中,触发器距离时钟源点的不同,会产生时钟偏斜(Clock Skew)。时钟偏斜(Clock Skew)、时钟抖动(Clock Jitter)等所有对时钟时序产生影响的因素,都会对触发器有影响。

2022-06-17 18:52:26 5518 2

原创 同步FIFO

FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器。FIFO实际上是做匹配速率的一个match。假设数据通道1的速率比数据通道2速率大(即,速率A>速率B)两个速率不同的数据通道相连,两个数据通道的速率不match。数据的吞吐率就不够,即在数据通道2,跑不了数据通道1这么多数据,这时,需要中间一个缓存起来。数据通道1不是全实时的一个工作,所以建立一个中间的缓冲机制FIFO,让数据进行一个match。 读写指针宽度注意:读写指针其实就是读写的地址,只不过这个地址不能任意选

2022-06-16 20:20:47 8154 2

原创 《计算机组成与CPU设计实验》5有限状态机的Verilog HDL描述(Finite State Machine,FSM)

多数控制逻辑都可以用有限状态机描述状态机是组合逻辑和时序逻辑的特殊组合状态的数量是有限的,故称为有限状态机(Finite State Machine,简称为FSM)输出仅取决于当前状态。在整个状态周期内输出保持不变,即使输入信号有变化。除当前状态外,输出还直接受输入影响,变化可能出现在任何时刻。玩具小车汽车的速度有四个状态:停止、低速、中速、高速。速度由刹车brake和加速器accelerator绝决定 状态图Verilog描述( Moore型状态机)输出仅取决于当前状态。 Mealy型状态机的描述

2022-06-02 11:51:57 1649

原创 数字ic设计自学ing

绝对零基础开始┭┮﹏┭┮1、基础准备前期基础准备参考《数字后端学习ing》中1-5数字ic后端学习ing2、学习芯片开发所需要的环境Linux环境EDA工具:3、Verilog以下划分,根据自己目前学习的感觉划分的, 仅作参考初级——了解Verilog 语法学习参考视频:B站 Verilog零基础入门、6小时掌握Verilog语法(Verilog语法入门)学习内容整理:(自己根据学习视频记录的笔记)Verilog基础(根据HDLBits整理)Verilog——反相器Verilog——与非门 Verilog—

2022-06-01 18:44:21 4443 1

原创 《计算机组成与CPU设计实验》4 时序逻辑(三)

计数器逻辑功能对输入时钟脉冲进行计数 也可用于分频、定时、产生节拍脉冲等分类按时钟输入方式,分为同步和异步计数器 按进位体制,分为二进制、十进制和任意进制计数器 按计数方向,分为加法、减法和可逆计数器计数器的“模”(Modulo)计数器运行时,依次遍历规定的各状态后完成一次循环,它所经过的状态总数称为计数器的“模”,通常用M表示。例子:一个2位的二进制计数器循环输出00、01、10和11,称为模4计数器。同理,3位的二进制......

2022-05-31 14:47:48 4177

原创 《计算机组成与CPU设计实验》3 时序逻辑(二)

移位寄存器移位寄存器是什么?将若干个D触发器串接级联在一起构成的具有移位功能的寄存器。4位右移移位寄存器原来输出 Q0 Q1 Q2 Q3CLK上升沿到来输出 Q0=DSI Q1=Q0 Q2=Q1 Q3=Q2输出右移一位注意: 为了和图一致,把输出写成 Q[0:3]在逻辑电路中,习惯从左到右这种表达方法,在计算机中是...

2022-05-30 15:45:50 1150

原创 《计算机组成与CPU设计实验》3 时序逻辑(一)

逻辑电路的类型组合逻辑Combinational Logic没有记忆 输出由当前输入值决定时序逻辑Sequential Logic有记忆 输出不仅由当前输入值决定,还和以前的状态有关。D锁存器(D latch)D锁存器功能当使能端E=0时,输出Q保持原来的值不变,在E=1期间,输入端D值将被传输到输出端Q因此,也被称为透明锁存器(Transparent Latch)D锁存器表示符号D锁存器真值表D锁存器波形图...

2022-05-29 21:13:06 4411

原创 《计算机组成与CPU设计实验》2 组合逻辑(二)

编码转换译码器N个输入,个输出。只有一个输出有效(One-hot输出)。例子:2-4译码器Verilog代码module decoder( input [1:0] A, output [3:0] Y ); always_comb begin case(A) 00:Y = 4'b0001; 01:Y = 4'b0010; 10:Y = 4'b0100; 11:Y = 4'b1000; default..

2022-05-28 20:15:22 1865

原创 《计算机组成与CPU设计实验》1 组合逻辑(一)

逻辑电路的类型组合逻辑Combinational Logic没有记忆 输出由当前输入值决定时序逻辑Sequential Logic有记忆 输出不仅由当前输入值决定,还和以前的状态有关。持续赋值语句 Continuous Assignmentassign 语句assign A = B;//等号左边的值始终跟随右边改变例子:使用Verilog描述与非门module nand( input wire a; // wire可以省略 input wire b;.

2022-05-24 17:09:51 1795

原创 RTL设计指导原则

一、概述RTL级设计的评判标准很多,如时序性能、 所占面积、 可测试性、 可重用性、 功耗、 时钟域的分配、 复位信号设计 是否与所用EDA工具匹配 等。如果设计目标是在FPGA或CPLD等可编程逻辑器件上实现,则还需考虑是否能发挥这些PLD的结构特点等。设计原则根据这些目标的组合和优先级设置,可以派生出很多不同的设计原则。这里仅讨论一般意义的指导原则。通常来说,主要有三个指导原则:面积与速度互换、 乒乓操作、 流水线设计。面积与速度互换原...

2022-05-15 20:46:49 2422

原创 可综合风格——在RTL书写中如何考虑延迟、面积、功耗、布线

在RTL书写中如何考虑延迟举例:多if语句逻辑综合工具会将其映射为有优先级的级联的多路选择器。问题: 假设b信号的延迟较大,到来较晚,那么,电路应该如何修改?原则上,把b信号这个赋值支路放在最后一个mux上,这样可以隐藏其较大的延迟。直接把b这个分支放在最后,这样修改是否可行?修改前电路的功能:sel[0]=0、sel[1]=1、sel[2]=0、sel[3]=0,z=b。如果sel[2]和sel[3]有一个不等于0,z≠b。修改...

2022-05-12 15:42:20 2119

原创 Verilog HDL可综合描述(高质量Verilog书写)

一、VerilogHDL可综合概述1. Verilog HDL 的基本功能之一是描述可综合的硬件电路。对Verilog HDL的常见的误解:很多语法规则与C语言相似,书写时可参考C语言; 追求代码的整洁、简短; 着眼于代码书写,性能优化由综合器实现; 把Verilog代码当做了程序,把电路设计当成了编程;正确认知:HDL : Hardware Description是硬件描述HDL语言仅是对已知]硬件电路的文本表现形式编写前,对所需实现的硬件电路“胸有成竹”Verilog .

2022-05-10 21:32:29 4148

原创 Verilog基础(根据HDLBits整理)

Verilog代码中,每一个bit都对应电路的一部分。模块的声明两种端口声明语法风格:Verilog-2001:更容易阅读并减少拼写错误 verilog-1995:版本比较老下面的两个模块声明是可以接受的和等价的:声明一个模块// top_module模块名//in,out 端口名module top_module( input in, output out );endmodule模块和端口声明创建电路框架和端口。模块上的端口port模块上的端口有方..

2022-05-05 11:53:08 876

原创 【路科V0】SV实验3【Self-Checking】

今天的Lab3的学习目标是:构造一个从路由器输出端进行取样的监视器(Monitor) 构造一个可以验证路由器输出的比较器(Checker) 运行Driver和Monitor程序,检验Checker能否正确比数。在该实验完成时,你将得到如下验证结构。任务一:创建顶层测试环境(Top-Level Test Environment)1、编辑已存在的test.sv文件。2、给pkt2cmp_payload[$]序列添加一个全局声明(global-declaration),位宽为8bit (

2022-05-01 18:56:44 1570 3

原创 【路科V0】SV实验2 【Sending PacketsThrough Router】

Lab2的学习目标是:拓展lab1中的测试平台,从一个输入端向一个输出端发送数据包。 用新的测试平台来编译和仿真设计文件。在这次Lab中,你将继续去搭建测试平台上的相关组件(component) :激励产生器(Stimulus Generator) 驱动器(Driver) 等。你会使用一些的子程序(routine)去把一个数据包从输入端口3发送到输出端口7,并观察到这个数据包的payload。在该实验完成时,你将得到如下验证结构。任务一:声明程序(program...

2022-04-28 16:33:06 2102 2

原创 数字ic验证学习ing

为什么我要学完数字后端学验证呢?不过是因为在找实习的时候发现,后端的岗位比较少少,而且笔试面试的时候,发现,大厂比较喜欢综合的人才。总之,为了增强竞争力,多学一点没坏处!学习的课程:路科验证V0(ing) 。。。。芯片验证V0系列课程-带你了解芯片验证-【路科验证】-路桑亲授建议初学者先从V0学,进阶课有点(非常)难,不是我菜的原因。1、了解数字芯片验证是什么(1)浅谈数字IC验证(2)路科V0的验证概率(√)什么是验证 验证的任务与目标 验证的周期 sys..

2022-04-27 12:06:45 1585 2

原创 【路科V0】SV实验1【SystemVerilogVerification Flow】

lab1实验介绍实验的工具:Questa设计模块介绍实验中的待测试模块(DUT)是一个16输入,16输出的路由器,这个路由器的功能是把数据通过各个输入端(Input)发送到任意输出端(Output)。下面是最终完成的整个验证平台示意图。实验文件打开实验文件,你将会看到如下实验代码的结构,其中rtI中为设计代码,labs中为原始代码,solutions中为参考答案。在Lab1中我们应该掌握以下内容:用SV给待测试模块(DUT)搭建最简单的...

2022-04-24 17:54:38 5841 7

原创 【路科V0】验证环境4——MCDT测试结构(实现激励发生器)

MCDT测试结构如何实现产生数据transaction激励的组件channel generator 将这些数据解析并且驱动到channel interface上的驱动组件channel initiatorchannel simulatorclass chnl_trans ; rand bit[31:0] data[] ; rand int ch_id ; rand int pkt_id; rand int data_nidles ; rand..

2022-04-23 17:43:27 1134

原创 【路科V0】验证环境3——MCDT测试结构(例子)

理解验证环境结构的第三个要点1、学会区分哪一部分属于硬件、哪一部分属于软件,而哪一部分属于软硬件交互的部分。硬件部分:待测设计MCDT软件部分:验证环境(激励发生器、监测器、比较器。都是由类的实例构成)软硬件交互部分:接口(软硬之间发生数据通信,必须依赖这个接口)2、弄清楚验证环境中各个验证组件之间的位置层次关系以及它们之间是否有数据通信。如果对MCDT的数据通道发送数据,必须通过channel interface...

2022-04-23 11:02:03 990

原创 【路科V0】验证环境2——验证环境组件

测试平台(testbench)结构图典型验证结构框图

2022-04-22 11:58:27 2583

原创 【路科V0】验证环境1——验证环境结构

验证环境结构测试平台(testbench)是整个验证系统的总称。它包括验证结构中的各个组件、组件之间的连接关系、测试平台的配置和控制。从更系统的意义来讲,它还包括编译仿真的流程、结果分析报告和覆盖率量化等。从狭义上讲,我们主要关注验证平台的结构和组件部分,他们可以产生设计所需要的各种输入,也会在此基础上进行设计功能的检查。测试平台(testbench)结构图典型验证结构框图验证结构:待测设计:DUT 验证...

2022-04-20 11:12:45 2559

原创 【路科V0】systemVerilog基础21——从功能描述到覆盖率

概述要实现功能覆盖率的收敛,就需要按照以下步骤考虑:哪些功能需要测试 明白在什么条件下需要测试对应的功能 为了测试这些功能,需要提供什么样的测试平台组件以便提供激励和监测 测试平台如何检查这些功能正常工作由于功能覆盖率不是自动的过程,因此它需要将功能描述同设计实现对应起来。提取功能点一般遵循从外部接口到内部功能再到边界情况的方法。提取功能点提取接口功能点对于要验证的设计的各个接口,可通过以下问题来获得接口功能点:必须应用哪些传输? 什么样的取值范围? 什么样的传输顺.

2022-04-16 12:15:15 720

原创 【路科V0】systemVerilog基础20——功能覆盖率

概述功能验证的目标在于确定设计有关的功能描述是否被全部实现了。这一检查中可能会存在一些不期望的情况:(要尽量发现)一些功能没有被实现 一些功能被错误地实现了 一些没有被要求的功能也被实现了我们无法通过代码覆盖率得知要求的功能是否被实现了,而需要显性地通过功能覆盖率与设计功能描述做映射,继而量化功能验证的进程。所以功能覆盖率极其重要,用来量化验证的指标。覆盖组(cover group)覆盖组可以在以下中定义(覆盖组与类相似,在一次定义以后便可以多次...

2022-04-15 12:26:04 3690

原创 【路科V0】systemVerilog基础19——代码覆盖率

代码覆盖率概述代码覆盖是一种技术,可以识别在验证设计中已执行的代码。包含未知错误的设计的问题这个设计看起来就像一个非常好的设计。我们绝对不可能知道被验证的设计在功能上是完全正确的。即便所有测试平台都成功仿真,但是否有部分RTL代码未运行,因此未触发可能的功能错误?这是代码覆盖可以帮助回答的问题。代码覆盖率并不是SV独有的,这项技术已经在软件工程中使用了相当长的一段时间。代码覆盖率的一个优势在于它可以...

2022-04-14 12:02:01 3929

原创 【路科V0】systemVerilog基础18——覆盖率

概述“验证如果没有量化,那么就意味着没有尽头。”伴随着复杂SoC系统的验证难度系数成倍增加,无论是定向测试还是随机测试,我们在验证的过程中终究需要回答两个问题:是否所有设计的功能在验证计划中都已经验证? 代码中的某些部分是否从未执行过?覆盖率就是用来帮助我们在仿真中回答以上问题的指标。覆盖率已经被广泛采用,作为衡量验证进度的重要数据。覆盖率是衡量设计验证完备性的一个通用词语。随着测试逐步覆盖各种合理的组合,仿真过程会慢慢勾画出你的设计情况。覆盖率工具会在仿真过程中收集信息,然后进行后

2022-04-13 22:02:28 1098

原创 【路科V0】systemVerilog基础17——线程的通信

信箱mailbox线程通信的三个类型:event semaphore mailboxmailbox信箱,顾名思义,可以用来收发信息。在SV中,mailbox可以用来存放任何数据类型,也可以从信箱中读取这些数据信箱可以设置尺寸大小,防止存储数据过多,或者占用过多资源信箱存放数据的方式,是同FIFO一致的,即先存放进来的数据,也会被先读出信箱mailbox的内建方法//创建信箱: new ()//将信息写...

2022-04-12 12:14:56 2404

原创 【路科V0】systemVerilog基础16——线程的同步

概述测试平台中的所有线程都需要同步并交换数据。(在测试平台中,不但设计层次的各个硬件模块实例在依靠信号做同步和数据交换,验证环境中的各个组件也需要做同步和数据交换。)一个线程等待另外一个线程结束。验证环境中的同步和数据交换依靠的是软件方式示例:例如验证环境需要等待所有激励结束、比较结束才可以结束仿真。比如监测器需要将监测到的数据发送至检查器,检查器又需要从不同的缓存获取数据进行比较。线程同步类型1——事件(event...

2022-04-11 15:06:44 1323

原创 【路科V0】systemVerilog基础15——线程控制

什么是线程 在SV中,可以认为线程即独立运行的程序。线程需要被触发,可以结束或者不结束。举例:在硬件module中的initial和always,都可以看做独立的线程,它们会在仿真0时刻开始,而选择结束或者不结束。硬件模型的线程的特点硬件模型中由于都是always语句块,所以可以看成是多个独立运行的线程,而这些线程会一直占用仿真资源,因为它们并不会结束。验证环境中线程的特点initial语句中例化的各个验证环境、...

2022-04-10 11:35:05 1055

原创 【路科V0】systemVerilog基础14——任务和函数

概述类似于C语言,函数(function)和任务(task)可以提高代码的复用性和整洁度。它们的目的都在于将大型的过程块切分为更细小的片段,而便于阅读和代码维护。函数与任务之间有相同点和不同点。函数function函数的首要目的在于为运算表达式提供返回值,这样既便于简化原有的代码,也便于大型代码的维护。SV的函数定义与使用与C类似:函数可以指定输入变量和输出变量 函数可以返回数值,也可以不返回数值(不返回数值用v...

2022-04-09 12:37:41 2648

原创 【路科V0】systemVerilog基础13——约束控制

随机方法在类中声明的随机变量,需要伴随着类句柄调用方法randomize(),这是SV类的内建方法:virtual function int randomize();如果随机化成功则会返回1,如果失败则会返回0。class Simpl eSum; rand bit [7:0]x,y,z; constraint c {z ==x + y;}endclassSimpleSum p = new;int success = p.randomi...

2022-04-08 12:16:33 1688

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除