自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 收藏
  • 关注

原创 正则表达式

1、非打印字符:非打印字符的转义序列2、特殊字符:若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符\ 放在它们前面3、限定符:限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配/[1-9][0-9]*/ #匹配一个正整数/[0-9]{1,2}/ #至少指定一位但至多两位数字, 0~99 的两位数/[1-9][0-9]?/ #匹配 1~99 的正整数表达式/[1-9][0-9]{0,1}/ * 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在

2020-07-23 22:53:05 1672

转载 时钟切换电路(Glitch-free clock switching circuit)

一、有毛刺的时钟切换纯组合逻辑的时钟切换,由于为电平触发,不可避免会产生毛刺输出时钟(OUT CLOCK)由选择信号(SELECT)控制,当SELECT为1时输出CLK1,反之,输出CLK0当SELECT信号由0到1时,out_clock从clk0转为clk1,当前时钟源(CLK0)正好处于高电平,因此,会在输出端产生毛刺;assign outclk = (clk1 & select) | (~select & clk0);二、相关时钟源的时钟切换(1)当SELECT为

2020-07-23 21:04:02 3473

原创 verdi工具的使用

debussy(verdi之前的Debug工具)verdi:若想用Verdi观察波形,需要在仿真时生成fsdb文件,而fsdb在vcs或者modelsim中的生成是通过两个系统调用$fsdbDumpfile $fsdbDumpvars来实现的。而这两个系统调用并不是Verilog中规定的,是Verdi以pli(Programming Language Interface)的方式实现的。这就需要让vcs编译时能找到相应的库。例如:其中波形文件有以下种类:生成FSDB波形使用verdi之前,应配置

2020-07-21 10:56:22 5326

原创 IC数字常见问题(五)跨时钟域的代码检查和跨时钟的综合处理

跨时钟域的代码检查(spyglass)lint (在RTL阶段对代码的语法,可综合性,结构进行深入分析,并且对代码的错误提供完整、可调试的修改方案)SDC(帮助设计人员在设计的整个流程中生成,验证和管理他们的约束文件)CDC(提供了多时钟域的解决方案,能自动识别各种同步手段(包括handshake,FIFO),能采用Formal引擎验证同步方法在功能上的正确性DFT(提供了能够预测ATPG的测试覆盖率分析的能力,基于这个选项,用户可以很容易地预计所作设计的可测试性并利用工具提供的指导来提高设计的可

2020-07-20 22:03:23 2015

原创 IC数字常见问题(四)握手处理和异步FIFO

握手信号握手电路的实现:双方对握手信号(req和ack)分别使用脉冲检测方法进行同步接收方利用脉冲有效沿对传输的数据进行锁存完成数据锁存后通知接收方module handshake( clk, rst_n, req, ack, datain, dataout );input

2020-07-20 14:53:32 3497

原创 IC数字常见问题(三)单比特信号的跨时钟域处理和多比特信号的跨时钟域处理

慢时钟域信号同步到快时钟域的处理方法:两级触发器同步(频率相差2倍以上):不需要考虑快时钟域信号采样的丢失,但可能会采样到冗余信号边沿检测同步器(频率相差2倍以上):为了避免快时钟多次采样,需要对信号进行边沿检测,使用边沿检测同步握手处理(频率相差2倍以下):为了避免快时钟采样丢失,需要进行握手的同步处理上升沿检测:快时钟先将输入信号进行两级同步处理,再进行一个时钟的延迟,延迟后的信号取反与同步信号做与逻辑。得到信号上升沿module posedge_detection ( input

2020-07-19 23:03:44 3032

原创 IC常见问题(二)亚稳态

亚稳态:触发器无法再某个规定时间段内达到一个可确认的状态(会导致功能的错误)既无法预测该单元的输出电平,也无法预测何时输出才能稳定再某个正确的电平上,触发器输出一些中间级电平,或者处于振荡状态(可以沿信号通道的各个触发器级联传播下去)如何处理亚稳态:降低时钟频率使用反应更快的FF引入同步机制,防止亚稳态传播改善时钟质量,用边沿变化快速的时钟信号使用同步器降低亚稳态发生的概率:(二级同步器不能完全隔离亚稳态危害,但能极大降低亚稳态发生的概率)亚稳态需要一段时间才能到达稳态二级寄存器可以

2020-07-19 21:34:19 559

原创 IC数字常见问题(一)时钟

时钟信号:create_clock -period 2 [get_ports clk]时钟偏移(clock skew):同一个时钟信号到达两个不同寄存器之间的时间差值,时钟最长路径减去最短路径的值时钟抖动:两个时钟周期之间存在的差值,在时钟发生器内部产生的,和晶振或者PLL内部电路有关(jitter=T2-T1)set_clock_uncertainty -setup 0.3 [get_clocks CLK]时钟源:(1)数字电路里一般用晶振提供基本的时钟(Quartz Crystal OSC)

2020-07-19 21:11:31 1088

原创 HDLBits 代码输出 Circuits(二)

(1)combinational Logic对于真值表,可以化简为“积之和”的形式(静态冒险:电路的输出在某种输入作用下,不应当发生跳变时却发生了跳变的情况。由于不同扇出路径上的不同传播时延造成的,在输出毛刺是由单个输入信号发生变化而造成时,可以通过在输出表达式的覆盖中引入冗余与项就能够消除静态冒险)1->0->1 静态1冒险;0->1->0 静态0冒险...

2020-07-05 10:52:01 309

原创 乐鑫笔试题

一、将一个串行执行的C语言算法转化为单拍完成的并行可综合verilogunsigned char cal_table_high_first(unsigned char value){ unsigned char i ;unsigned char checksum = value ; for (i=8;i>0;--i) { if (check_sum & 0x80) { check_sum = (check_su

2020-06-09 18:23:25 2716

原创 uvm实战(32位全加器)

(1)首先写明32位加法器的verilog代码(2)my_transaction.sv为激励成员指定rand属性将自定义的事务类向UVM注册(uvm_object_utils,uvm_field_int)约束项,控制随机成员的随机范围解释:1、通过import语句将整个uvm_pkg导入验证平台中,只有导入这个库,编译器才能识别uvm_component类2、uvm_macr...

2020-05-09 12:01:32 3591 2

原创 可编程逻辑及存储器件

PLD(Programmable Array Logic)表示可实现两级组合逻辑的低密度结构:PLA(Programmable Logic Array),PAL(Programmable Array Logic)

2020-05-01 22:38:26 467

原创 数电基础复习(三)

时序逻辑器件:(1)基本双稳态电(具有0,1两种逻辑状态,且一旦进入某一种状态,就能长期保持该状态不变的电路)(2)SR锁存器用或非门用与非门利用SR锁存器,构成去抖动电路门控SR锁存器D锁存器逻辑门控D锁存器传输门控D锁存器触发器与锁存器的区别:触发器分类:(1)根据逻辑功能分类SR触发器JK触发器D触发器T触发器(2...

2020-05-01 12:44:28 1042

原创 数电基础复习(二)

数字电路:组合逻辑电路(1)输入、输出之间没有反馈延迟通路,信号的传递从输入到输出,是单方向的(2)电路中不含记忆单元(即锁存器和触发器)(3)在任何时刻,电路的输出状态只取决于同一时刻的输入状态而与电路的原来的状态无关组合逻辑电路的优化实现:(1)输出多个逻辑函数时需要考虑共享相同乘积项,减少逻辑门数目(2)当限定逻辑门输入端数目,则需要进行逻辑变换竞争与冒险:(1...

2020-04-29 10:04:39 1432

原创 数电基础复习(一)

电信号:模拟电信号:电压或电流的幅值随时间连续变化数字电信号:电压或电流在幅值和时间上都是离散的(可以是多值逻辑,一般采用二值逻辑)主要参数:幅值:高电平的电压值上升时间:上升沿从10%到90%所经历的时间下降时间:下降沿从90%到10%所经历的时间周期:周期性矩形脉冲中,相邻脉冲的时间间隔脉冲宽度:从上升沿中间点(50%)到下降沿中间点(50%)所需的时间占空比:脉冲宽度...

2020-04-27 22:13:04 5156

转载 CRC算法

CRC(Cyclic Redundancy Check):循环冗余检验,在链路层被广泛使用的检错技术。CRC原理介绍:发送端1、在发送端先将数据分组,每组k个数据。假定要传送的数据是M2、在数据M后面添加供差错检测的n位冗余码,然后构成一帧发送出去,一共发送(k+n)位(虽然添加n位冗余码增大了数据传送的开销,但是可以进行差错检测,当传输可能出现差错时,付出这种代价是值得的)冗余...

2020-04-22 17:13:46 767

原创 边界扫描和JTAG端口

边界扫描:通过在ASIC的I/O引脚插入边界扫描单元(Boundary Scan cells),并在芯片周围将他们连接成移位寄存器,从而将扫描链路加入网表中。两个多路选择器控制了单元的数据通路:正常模式:(1)当mode为0时,单元处于正常模式,data_in通过多路选择器传输到data_out,扫描链不影响ASIC工作JTAG操作模式:(1)扫描:当shiftDR为1,数据在clock...

2020-04-21 16:39:49 3207 1

原创 leetcode(二)

1、平面上有 n 个点,点的位置用整数坐标表示 points[i] = [xi, yi]。请你计算访问所有这些点需要的最小时间(以秒为单位)你可以按照下面的规则在平面上移动:每一秒沿水平或者竖直方向移动一个单位长度,或者跨过对角线(可以看作在一秒内向水平和竖直方向各移动一个单位长度)必须按照数组中出现的顺序来访问这些点int minTimeToVisitAllPoints(int**...

2020-04-18 21:54:47 437

原创 leetcode(一)C

1、左旋转字符串字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。char *leftwordsize(char *s,int n){ int i=0; if(n<=0||s[0]=='\0') return s; i=str...

2020-04-16 09:41:48 168

原创 UVM(六)

UVM callback如何改变driver的行为?(1)使用UVM的factory机制和override机制实现(过多的扩展可能会引起继承关系层次出现混乱,应该从哪个类进行扩展?)call back(回调)function or task(回调函数)在一个对象中使用,在另一个对象中定义如何使用UVM callback1、将UVM callback 方法内嵌入组件中2、...

2020-04-15 12:17:07 669

原创 UVM(五)

UVM TLM(Transaction level modeling)TLM为组件之间的通信建立专门的通信信道,避免通信出现混乱(例如reference model只能从master_agent的monitor获取数据)transaction事务的传送分为put(producer主动发起事务的传输)和get(consumer主动从producer获取数据)其中使用port.put()函数(...

2020-04-14 17:21:16 1122

原创 UVM(四)

UVM configuration机制(属性配置工具)传递值传递对象传递interface(1)半个全局变量,避免全局变量带来的风险(2)高层组件可以通过configuration机制在不改变代码的情况下更改所包含的子组件的变量(3)支持通配符和正则表达式对多个变量进行配置(4)支持用户定义的数据类型(5)可以在仿真运行的过程中进行配置1、配置sequence产生tran...

2020-04-13 21:20:37 596 1

原创 UVM(三)

factory机制其中uvm_component_utils和uvm_object_utils即创建注册表使用override结合factory机制,替换列表添加替换项factory机制和override机制联合使用:可以通过factory的print函数查看是否调用成功如果需要只部分修改transaction的类型:同样组件可以类似替换...

2020-04-12 22:51:13 371

原创 UVM(二)

UVM库(在类库中使用继承和封装)TLM(TLM是组件之间通信的标准)structural Elements(不同方法学的通用类:组件、信息系统、仿真阶段等等)methodology(用户实现平台重用的主要接口,用户可以在不改变代码的情况下更改平台配置、替换平台组件、更换不同的激励甚至仿真行为)UVM package 包含三个主要的类:uvm_component(构建UVM te...

2020-04-12 11:46:40 723

原创 UVM(一)

encapsulation(封装)inheritance(继承)polymorphism(多态)

2020-04-11 22:49:26 1268

原创 数字前端常见笔试题

1、什么是竞争和冒险?在组合逻辑中,门电路输入信号由于经过路径不同,到达该门的时间不同,叫做竞争由于竞争而在输出时可能产生尖峰毛刺或脉冲叫做冒险(静态冒险和动态冒险)1->0->1(静态1冒险) ; 0->1->0(静态0冒险)(当输入毛刺由单个输入信号发生变化而造成时)可以通过引入冗余与项来消除静态冒险动态冒险(输出在到达期望值之前发生了二次或多次变化)...

2020-04-03 09:03:49 2053

原创 静态时序分析

tclk:时钟的最小周期tcq:寄存器固有的时钟输出延时tlogic:同步元件之间的组合逻辑延迟tnet:网线的延迟tsu:寄存器固有的时钟建立时间thold:寄存器的保持时间在建立时间和保持时间都满足的情况下,输入端D处的数据在最坏的传播延时之后被赋值到输出端qtclk = tcq +tlogic +tnet + tsutogic +tnet >=thold1、时钟扭...

2020-03-31 18:25:35 1172

原创 数字IC的基本流程

Verilog HDL可以在不同的的抽象层次进行描述电路下面的它们的具体层次分类:可分为前端与后端:前端:spec(确定项目需求)system model(使用C/C++以及matlab等高级语言设置模型)RTL coding形式验证/功能验证后端:逻辑综合(部分公司仍认为是前端,使用DC综合)DFT (design for test)(部分公司仍认为是前端)Auto...

2020-03-30 22:15:13 6973

原创 机器学习(四)

一、神经网络1、非线性假设如果初始特征量比较多,在非线性假设中,会导致特征空间急剧膨胀,且容易造成过拟合。neural networks:origins:algorithm that try to mimic the brainsingle neuronactivation function:g(z)weights:parametersneural network:前...

2020-03-30 20:07:35 139

原创 机器学习(三)

一、多元方程x*theta=y =>theta=x-1 * y =x-1 (xT )-1 xT *y=( (xTx )-1 xT *y对比梯度下降法和方程:如果xT x不可逆?redundant features(线性相关)too much features(m<=n) ->delete some features 或者使用正则化二、向量化三、分类l...

2020-03-29 12:49:40 185

原创 机器学习(二)

一、模型线性回归in supervised learning,have a data set(called a training set)-> to predict the price of the housesymbols of supervised learning:m ->训练样本的数量x ->输入变量(feature)y->目标变量二、代价函数...

2020-03-27 11:06:01 170

原创 python编程(四)

一、Python3 输入和输出输出格式:Python两种输出值的方式: 表达式语句和 print() 函数。第三种方式是使用文件对象的 write() 方法,标准输出文件可以用 sys.stdout 引用。(使用 str.format() 函数来格式化输出值,将输出的值转成字符串,可以使用 repr() 或 str() 函数来实现)>>> for x in range(1...

2020-03-26 20:29:56 270

原创 python3编程(三)

一、python3的数据结构Python 中列表的方法:>>> a = [66.25, 333, 333, 1, 1234.5]>>> print(a.count(333), a.count(66.25), a.count('x'))2 1 0>>> a.insert(2, -1)>>> a.append(333...

2020-03-25 09:54:09 196

原创 python3编程(二)

一、迭代器与生成器迭代器是一个可以记住遍历的位置的对象,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束,迭代器只能往前不会后退。迭代器有两个基本的方法:iter() 和 next(),字符串,列表或元组对象都可用于创建迭代器:#!/usr/bin/python3 list=[1,2,3,4]it = iter(list) # 创建迭代器对象for x in it...

2020-03-24 12:30:05 150

原创 机器学习(一)

一、机器学习的定义Field of study that gives computers the ability to learn without being explicitly programmed(1959)

2020-03-22 23:02:50 205

原创 python3编程(一)

#!/usr/bin/python3 # Fibonacci series: 斐波纳契数列# 两个元素的总和确定了下一个数a, b = 0, 1while b < 10: print(b) a, b = b, a+b计算步骤如下:其中代码 a, b = b, a+b 的计算方式为先计算右边表达式,然后同时赋值给左边。关键字end可以用于将结果输出到同一行,或...

2020-03-22 22:29:14 200

原创 python3基本语法(二)

一、python3解释器1、在linux系统中可以将 python3.x 安装在 /usr/local/python3 目录中。安装完成后,可以将路径 /usr/local/python3/bin 添加到您的 Linux/Unix 操作系统的环境变量中,这样您就可以通过 shell 终端输入下面的命令来启动 Python3 。$ PATH=$PATH:/usr/local/python3/b...

2020-03-22 15:25:43 94

原创 python3基本语法(一)

首先是众所周知的helloworld一、Python3 基础语法默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。注释:#!/usr/bin/python3# 第一个注释print ("Hello, Python!") # 第二个注释多行注释可以用多个 # 号,还有 ‘’’ 和 “”":#!/usr/bin/python3 ...

2020-03-22 13:46:25 569

原创 python3(二)python3的安装与环境搭建

python的下载地址使用dos命令查看是否安装:python -Vpip -V在cmd中输入(设置环境变量):path=%path%;D:\Python 有三种方式可以运行Python:交互式解释器:可以通过命令行窗口进入python并开在交互式解释器中开始编写Python代码。在你的应用程序中通过引入解释器可以在命令行中执行Python脚本,如下所示:$ p...

2020-03-21 20:00:51 111

原创 python3(一)简介

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后...

2020-03-21 10:39:06 440

空空如也

空空如也

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

TA关注的人

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