自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于最近项目数字前端FLOW的一些总结

6.若设计中存在时钟互采样(如高频采低频),切scan的时候由于时钟均切到scan_clk,此时会出现scan_clk采样自己的情况,所以在scan模式下需要将输入D端的时钟信号切到任意一个寄存器输出信号即可。1.插入scan链需要注意scan_clk/scan_en/scan_in/scan_out/scan_cmpsen的定义。4.切scan模式后,需要主要时钟和复位的切换,时钟都切到scan_clk;其中scan_clk/scan_en/scan_in/scan_out需要复用4个PIN;

2024-07-09 14:19:00 386

转载 BLE协议栈 – 物理层(Physical Layer)

数字调制也分为幅值调制和频率调制,BLE使用频率调制,该技术名称叫:频移键控(Frequency Shift Keying, FSK),通过改变载波的频率,来表征比特信息。BLE跳频技术,会记录每个信道是否拥挤,假如拥挤则标记为坏道,跳频时候避开该信道,等空闲下来,再移除坏道标记。对于BLE的信道,中心频率的容限是±150kHz,举个例子,使用16MHz的外部石英晶振为射频提供时钟,16MHz扩频到2.4GHz需要放大150倍,其误差也将一同放大150倍。为了保证信号频率的精度,要求晶振的精度一定要高。

2024-04-30 09:55:19 158

原创 传递函数硬件化

1M采样率,对应硬件设计模块运行频率。%%-------离散化分子分母转换为C语言程序使用------%%-------分子分母除以z ^ 2=>0.00012。%%-------传递函数离散化------已知一个系统的传递函数,如何进行硬件化呢?其中Ts为离散化采样时间。%%-----阶跃响应验证。

2024-03-08 14:13:50 673

原创 硬件设计中数据运算相关处理方法

7.所谓饱和处理就是如果计算结果超出了要求的数据格式能存储的数据的最大值,那么就用最大值去表示这个数据,如果计算结果超出了要求的数据格式能存储的数据的最最小值,那么就用最小值去表示这个数据。假设一个有符号小数为4’b1011,它的数据格式为4Q2,也就是说它的小数位为2位。2.对一个有符号整数进行扩位的时候为了保证数据大小不发生变化,扩位的时候应该添加的是符号位。假设a是一个9Q6格式的有符号数据,要求把小数位截成3位。5.mQn和aQb数据相乘,积应该用(m+a)Q(n+b)格式的数据进行存储。

2024-03-07 14:04:51 588

原创 数模混合仿真实例(数字verilog作为顶层)VCS+Xa; 跑XA自带的demo存在的问题

通过查找spiceexplorer安装目录发现公司已经安装了2015版本的wv,但是wv &命令默认调用最low的版本,所以通过手动启动2015版本custom waveview把fsdb和vpd波形吃进来,就能正确显示波形了。/gcc-4.5.2-static/bin/gcc(原有路径指到了gcc-4.5.0-static,但看xa安装目录下gcc版本时gcc-4.5.2-static所以改过来了)最近项目需要跑XA+VCS混仿,跑的XA安装目录下的一个关于加法器adder4的demo.

2023-08-09 17:26:08 5071 5

原创 verdi显示数据

signedmagnitude最高位是符号位,0正数1负数;在波形数据上点右键,“2’scomplement”就是大家计算机课上学的“补码”,“1’scomplement”是课上讲的“反码”。

2022-07-19 16:48:40 1891

转载 数字信号处理定点数的表示以及量化问题

字长基本问题字长(位宽)和小数部分字长共同构成了定点数的两个要素。以wl表示字长,fl表示小数部分字长,那么有符号定点数以Fix_wl_fl的形式表示,无符号定点数的字长以UFix_wl_fl的形式表示。对于定点小数,一旦wl和fl确定,那么小数点的位置即可固定。下表给出了Fix_5_3与十进制小数的对应关系:在定点小数中,有一类值得关注,那就是只有一位整数位的定点小数。下表给出了Fix_5_4与十进制小数之间的对应关系。可见,此类定点小数只能表示(-1,1)区间内的纯小数,范围受限。在表2中,

2022-05-26 09:50:58 2087 1

原创 I2C读写时序简述

I2C读写命令时序如下:这里默认I2C每次传输均按8bit模式传输写时序:1)Master先发送Start bit,开始一笔传输;2)Master发送从机地址 s_addr[7:0],其中s_addr[6:0]包含从机地址。s_addr[7]读写标志位,1:写标志位,注意这里写标志位不表示立刻进入写数据还是读数据,而是表示Master写入写操作的写寄存器地址,或者说是写入读出操作的读寄存器地址。0:表示读标志位,直接进入,读数据状态,Slave会接管SDA的控制权,输出数据。Master发送S

2022-03-11 15:58:38 5860 1

原创 FIFO 最小深度计算 举例 总结

例子 - 1:f_wr > f_rd,连续读写写时钟80MHz。读时钟50MHz。Burst_Len = 120,也就是要求至少安全写入120个数据。连续写入和连续读取,无空闲时间,写入后立即开始读取 ,读写宽度相同。Sol:写速率 > 读速率,FIFO迟早会被写满,但它要求至少写入120个数据后FIFO不满。写入120个数据耗时 120 * 12.5 ns = 1500 ns 。写入开始后FIFO内数据以 30M/Date 速率增加。数据增加持续了 1500 ns ,FIFO

2022-03-08 09:39:25 1004

原创 时域采样,频域为什么周期延拓了

频域周期延拓只是表面现象,其实质是不同的信号采样后的像可能相同,不可区分。如果硬要做实验,还是要有一定的编程基础。起码要整一个声音出来,让你听一听。可是你要重复这一实验可能又太难了,所以我还是讲一讲简单的数学原理, 并用简单的三角函数及程序验证,让你看一看更直观。已知 :(1) 1Hz的连续余弦信号x1(t), 对其采样, 采样频率是 Fs = 10 Hz, 得到了1连串的数值x1[n] ;(2) 11Hz的连续余弦信号x2(t), 对其采样, 采样频率是Fs = 10 Hz, 得到了1连串的数值x

2022-03-07 16:39:00 7742 10

原创 关于复位的一些总结

同步reset(synchronous reset)是说,当reset信号为active的时候,寄存器在下一个时钟沿到来之后被复位,时钟沿到来之前寄存器还是保持其之前的值。异步reset(asynchronous reset)是说,当reset信号为active的时候,寄存器立刻被复位,与时钟沿到来与否没有关系。注意这里老李没有说reset信号为1的时候,而是说active,因为有的时候是为1能够使寄存器复位,这个时候我们说high active,而有的时候是0能够使寄存器复位,这个时候我们说low a

2022-01-15 11:08:13 7111 3

原创 关于滤波器

时域(Time domain)是描述数学函数或物理信号对时间的关系。例如一个信号的时域波形可以表达信号随着时间的变化。是真实世界,是惟一实际存在的域。频域(frequency domain)是描述信号在频率方面特性时用到的一种坐标系。正弦波是频域中唯一存在的波形,这是频域中最重要的规则,即正弦波是对频域的描述,因为频域中的任何波形都可用正弦波合成。任何两个频率不同的正弦波都是正交的。如果将两个正弦波相乘并在整个时间轴上求积分,则积分值为零。这说明可以将不同的频率分量相互分离开。时域分析与频域分析是对

2021-12-16 11:35:17 2800

原创 什么情况下,一条path既有setup violation,又有hold violation?

同一条路径,在同样的PVT条件下,setup和hold违例应该是不会出现在同一个寄存器的D端的。如果是不同PVT条件下,同一条路径,则setup和hold完全可能出现在同一个寄存器的D端。因为PVT条件会影响路径延时。一般在clock gate的检查时,会出现这样的path。工艺越细,SS corner 和 FF corner下cell的delay偏差越大。由于是高频时钟setup要求路径尽量短,但是路径短了之后,放到FF corner下hold check就过不去了。出现setup和hold同时不过。

2021-11-03 09:22:44 3304 1

原创 后仿出现X态原因

1、仿真pattern自身原因,比如程序使用了未初始化(写)的存储区,读出红X的数据并使用,导致红X传播;2、仿真环境或者平台原因,模型或者整chip顶层PIN脚的信号没有驱动,是高阻Z态,进入数字逻辑内部变成红X传播;3、DFF、gating cell等由于setup/hold不满足,或者rst信号的recovery/removal不满足,或者异步逻辑同步的第一拍DFF,产生红X引起传播;4、信号的电平宽度比这个cell的门延时还短的时候,信号经过这个cell后的输出是红X5、不带复位端的DFF引

2021-08-18 11:47:09 7723 3

原创 关于create_generated_clock中get_pins

在RTL里,将现有时钟定义点(比如某个分频计数器输出cnt_div[3])经过一个buffer,这个buffer直接调用库里的单元,综合约束里设置dont_touch。新的时钟定义点设置在这个buffer的输出。这样不论在RTL里,还是综合网表之后,这个定义点永远都在。在RTL里,将现有时钟定义点(比如某个分频计数器输出cnt_div[3])经过一个buffer,这个buffer直接调用库里的单元,综合约束里设置dont_touch。新的时钟定义点设置在这个buffer的输出。这样不论在RTL里,还是

2021-07-02 17:21:59 1286

原创 ADC量化误差

2021-05-21 17:07:44 3514

原创 施密特触发器

2021-05-21 16:51:20 589

原创 Linux下一些实用的命令,脚本

sed -i ‘s/原字符串/新字符串/’ /home/1.txtsed -i ‘s/原字符串/新字符串/g’ /home/1.txt就是把 home目录下 1.txt 中 的 “原字符” 替换成 “新字符”。这两条命令的区别就是,看示例吧这是1.txt的内容#cat 1.txtdddd#ff再看执行这两条命令的区别吧复制代码sed -i ‘s/d/7523/’ /home/1.txt执行结果7523dd#ffsed -i ‘s/d/7523/g’ /home/1.txt执

2021-05-10 11:43:35 258

原创 PWM控制的基本原理

PWM(Pulse Width Modulation)控制——脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。PWM控制技术在逆变电路中应用最广,应用的逆变电路绝大部分是PWM型,PWM控制技术正是有赖于在逆 变电路中的应用,才确定了它在电力电子技术中的重要地位。理论基础:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。冲量指窄脉冲的面积。效果基本相同,是指环节的输出响应波形基本相同。低频段非常接近,仅在高频段略有差异。图1 形状不同而冲

2021-05-08 15:18:34 7632

原创 IC前端设计考率逻辑设计可能造成后端Congestion问题

方法:(1)前端RTL配合梳理数据流,以及做一些额外的代码层次化来给后端做bound,从而方便后端进行人为的物理位置摆放。(2)减少单一cell的扇入和扇出。比如使用多级2-1 mux来代替128-1 mux,复制多份相同逻辑来减少单一逻辑复用等。...

2021-04-14 11:44:05 579

原创 UART波特率:它需要多准确?

最常见的时序敏感任务之一是UART通信。接口缺少外部时钟,只有当内部波特率相等时,Tx和Rx器件才能可靠地共享数据。但当然“相等”并不是一个真正的工程词 - 我们总是要考虑噪声,误差和变化,而对于微控制器的内部振荡器,我们不是在谈论百万分之几。根据我的经验,微控制器很少提供内部振荡器,其精度优于±1.5%。具有±1.5%时钟源的两个微控制器的波特率相差3%。这够好吗?波特率,比特周期和采样(注意:对于剩下的分析,我们将使用Tx器件作为参考;换句话说,我们假设Tx器件始终处于标称波特率,并且Rx器件处于

2021-04-14 10:56:40 1637

原创 DFT设计之scan chain

scan chain的基本原理是将设计中所有的触发器连接成一条链,用统一的scan clk驱动,这样可以使用预先设计好的scan pattern用逐bit移入的方法送入芯片中,然后开启capture使能,这样每个触发器的Q端输出会传入他们所驱动的组合电路,scan chain中的下一级出发器D端会捕获这个组合电路的输出,然后capture失效,捕获到的每一级组合电路输出再被移出scan chain,从而在scan chain输出端得到一组结果向量,这组结果向量与工具预先计算好的预期(当然是与输入scan c

2021-03-31 15:45:04 11575 2

原创 EXCEPTION篇 - 附MCP电路实现方法及命令优先级实例

本篇继续讲述SDC中的各式各样的Exception,大体上可以分为“加严”和“放松”两种类型,如下面几个命令:##更严格##set_max_delayset_min_delayset_data_check…##更放松##set_false_pathset_multicycle_pathset_case_analysisset_disable_timing…需要强调的是需要加严的部分,对于异步路径,往往需要通过set_max_delay来约束,防止路径过长。而且有些跨时钟域(CDC)的

2021-03-19 16:46:33 813

原创 IO约束篇 - 附TOP和BLOCK实战经验以及DDR接口时序

一般地,SDC主要分为三个部分:时钟定义,IO约束,Exception。相应地,我们也分上中下三篇进行讲解,最后还会有最重要的《验收篇》。IO约束在顶层和模块级的主要命令都是以下几个,但是实际应用的复杂程度不可同日而语,本篇会先介绍模块级IO约束实战经验,然后讲解顶层IO约束复杂性,过程中会介绍DDR接口时序。set_input_delayset_output_delayset_driveset_driving_cellset_input_transitionset_load...各个命

2021-03-19 16:25:27 2531

原创 时钟定义篇 - 附CREATE_GENERATED_CLOCK花式定义方法

定义时钟从最早的芯片规格定义分解出系统所需要的时钟和频率,以及各个模块需要的时钟和频率。SoC的时钟一般是由PLL产生,然后经过时钟生成电路和分配网络,最终给具体的功能模块使用。一般地,第三方IP供应商都会提供比较成熟的SDC,SoC集成时需稍作修改。对于自研的IP和SoC顶层,设计人员在提供RTL的同时,也需提供一份时钟结构图,一方面是方便撰写SDC,另一方面对后端PnR有针对性的进行CTS也非常有帮助。时钟结构图分不同的层次,或抽象或具体,看具体的需要了,下面是一颗MCU全局时钟分布的结构图,大家有

2021-03-19 15:58:27 16015 1

原创 仲裁器设计(三)-- Weighted Round Robin 权重轮询调度

作者:李虹江原文:https://mp.weixin.qq.com/s/GY05HFLTYcjLQIly-y4gxg本文授权转自IC加油站微信号,未经作者授权,严禁二次转载。这一篇继续仲裁器的话题,来讲一个更加复杂的仲裁算法,并且给出设计的思路。我们前面一篇仲裁器设计(二)-- Round Robin Arbiter里的Round Robin仲裁算法是一种公平的仲裁算法,每个requestor在得到许可之后优先级自动掉到最后,每个requestor之间都是平等的,大家都request的时候被gran

2021-03-18 11:21:26 6210

原创 仲裁器设计(二)-- Round Robin Arbiter 轮询调度算法

作者:李虹江原文:https://mp.weixin.qq.com/s/r-nckE5nGz9mc5KqjPXKYg本文授权转自IC加油站微信号,未经作者授权,严禁二次转载。上一篇老李讲了固定优先级仲裁器Fixed Priority Arbiter 仲裁器设计(一) – Fixed Priority Arbiter里面提到了,固定优先级仲裁的一个问题就是公平性。以上篇文章里同学举手老师点名的例子来说,如果老师每次都叫学号小的,那学号大的同学会觉得不公平,因为被老师点到的机会小。单纯回答问题的话可能还

2021-03-18 10:41:18 22932 11

原创 数据比对常用的debug技巧

算法类IP由于直接比较结果数据往往debug较为困难。所以,在算法类IP仿真中往往需要输出中间变量与算法同事编写的C model中间变量进行比对,从而定位设计问题,进行debug。以下代码是testebench一种较为典型的中间数据输出形式,要求与算法同事商定好输出数据格式一致,用beyond conpare或是vim diff进行数据比对定位问题。initial begin handle = $fopen("debug file path/deb

2021-03-17 09:51:38 291

原创 VCS门级仿真系列文章之sdf文件和$sdf_annotate反标

SDF文件(Standard Delay File)提供了延迟信息表示的标准ASCII文件格式,VCS支持版本1.0、1.1、2.0、2.1和3.0。在SDF格式中可以指定固有延迟(intrinsic delays),互连延迟(interconnect delays),端口延迟(port delays),时序检查(timing checks),时序约束(timing constraints)和路径脉冲(PATHPULSE)。使用VCS读取SDF文件时,会将延迟值“反向标注(back-annotates)

2021-03-16 14:53:56 19225

原创 Scan technique (扫描链插入)的一些学习总结

Scan technique的原理及过程1.标准单元替换即将标准的DFF转换为SFF,目前MUX-DFF是最常用的扫描结构。另外还有双端口clock scan,LSSD 电平敏感设计,但是很少用。2.扫描链连接没啥说的,就是连起来。注意事项1.同一个设计中有positive和negative的时钟针对这个设计,DFF+ /DFF- 分别代表上升沿触发和下降沿触发的D触发器,如果在插扫描链的过程中要将他们连成一条链,该怎么办?会是如下的哪种状况呢?正沿在前 负沿在后.负沿在前 正沿

2021-03-11 14:26:50 3763

原创 DFT技术介绍和所用工具

DFT是什么?DFT是design for test(可测性设计)的缩写,就是在芯片设计过程中,加入可测性逻辑。有的公司把该职位归到前端设计,有的归到中端实现。DFT职位大多分布于规模较大的数字IC设计公司里,因为大公司对芯片品质要求高,而且规模越大,芯片越贵,DFT就越复杂越重要。DFT主要是通过在芯片中加入可测性逻辑,等芯片制造出来,在ATE(AutomaticTestEquipment,自动测试仪)设备上通过可测性逻辑对芯片进行测试,挑出有制造缺陷的芯片并淘汰掉,留下没有制造缺陷的好芯片。这里需要

2021-03-11 13:43:12 16568

原创 SAR ADC基本原理学习

今天我们来学习SAR ADC喽。逐次逼近寄存器型模数转换器(Successive-Approximation Analog to Digital Converter),是一种常用的A/D转换结构,其较低的功耗表现,还不错的转换速率,在有低功耗要求(可穿戴设备、物联网)的数据采集场景下广泛应用。Sar ADC的历史可以追溯到16世纪,古人使用等比配重的方式称量物体重量。图1是1954年使用全真空管实现的11位 50KSPS的Sar ADC,也是首款商用的产品,歪果人真是厉害。在该领域ADI公司有着突出的表现

2021-03-01 15:07:06 15694 1

原创 SOC中的DFT和BIST对比与比较

ATE:ATE是Automatic Test Equipment的缩写,根据客户的测试要求、图纸及参考方案,采用MCU、PLC、PC基于VB、VC开发平台,利用TestStand&LabVIEW和JTAG/Boundary Scan等技术开发、设计各类自动化测试设备。BIST:BIST是在设计时在电路中植入相关功能电路用于提供自我测试功能的技术,以此降低器件测试对自动测试设备(ATE)的依赖程度。BIST技术的快速发展很大的原因是由于居高不下的ATE成本和电路的高复杂度。现在,高度集成的电路被广泛

2021-02-20 10:35:33 1808

原创 DC综合后文件

也就是说,DC一般完成综合后,主要生成.ddc、.def、.v和.sdc,.sdf格式的文件(当然还有各种报告和log).sdc文件:标准延时约束文件里面都是一些约束,用来给后端的布局布线提供参考。Scan_def.def文件:DFT、形式验证可能用到另外svf文件也可用于formality,记录了DC综合的一些映射信息,门控的插入等,加快比对。里面包含的是一些扫描链的布局信息,需要注意的是,必须在生成ddc网表文件之前生成.def(也就先生成.def文件),以便将def文件包含在ddc文.

2021-02-06 17:44:56 7170

原创 perl获取指定文件夹下文件名

第一种方法:第二种方法借用 ls 命令unlink “name_list.log”;system “touch name_list.log”;system “ls $dir_path >> name_list.log”;list="namelist.log";open(INDIR,"list = "name_list.log";open (IN_DIR,"list="namel​ist.log";open(IND​IR,"list");while($line = <IN_D

2021-02-03 15:37:32 2605

原创 Makefile 语法

makefile的命令行,开头必须用tab键,目前没有发现tabstop的设定值的不同,会引起error。其他的如,make变量的定义、赋值,make内定函数如$(error “strings”)都不能以TAB开头,不然make会将其作为命令来处理!从命令行获取变量方法:例子:test:rm -rf $(objs).v以上是Makefile里面一段程序,那么要删除当前目录下 abab.v,怎么操作呢:$make test objs= abab;这样就将文件名 abab从命令行传递到Make

2021-01-30 15:39:49 217

原创 如何用vcs输出fsdb格式的波形

由于Verdi只能查看fsdb格式的波形,而vcs可以生成供DVE查看的vpd格式波形,如果想要输出fsdb格式的波形,我们就要额外在testbench中加入两个函数,并且用相应的命令进行编译。1.首先了解一些vcs的常用命令:-cm line|cond|fsm|tgl|obc|path  设定coverage的方式+define+macro=value+      预编译宏定义-f filename             RTL文件列表+incdir+directory+         添加

2021-01-30 14:33:19 7916

原创 Verilog设计遇到了Congestion问题怎么办?

Congestion意思为拥塞,一般是在后端PR阶段发现布局布线比较拥挤,可能会导致布线布不过去,出问题也无法做ECO。Congestion也分为几种情况,我遇到的是Logic Congestion(更多关于后端Congetsion问题,查看文末参考文章),主要原因是RTL设计问题导致,这种问题的现象从后端看上去就是Cell数没多少,就是线密。产生Congestion的主要原因有限的面积下,电路面积过大。从一开始预估的面积与最后实际的面积有一定差距,导致该模块面积被限定的情况下,逻辑较多,绕线严重。

2021-01-13 09:18:41 2061

原创 什么是CPU调度?

我们知道,程序需要获得CPU的资源才能被调度和执行,那么当一个进程由于某种原因放弃CPU然后进入阻塞状态,下一个获得CPU资源去被调度执行的进程会是谁呢?下图中,进程1因为阻塞放弃CPU资源,此时,进程2刚IO操作结束,可以获得CPU资源去被调度,进程3的时间片轮转结束,也同样可以获得CPU资源去被调度,那么,此时的操作系统应该安排哪个进程去获得CPU资源呢?这就涉及到我们操作系统的CPU调度策略了。根据生活中的例子,我们很容易想到以下两种策略CPU调度的直观想法:1.FIFO谁先进入,先调度谁,这是一

2021-01-06 09:01:20 468

原创 ARM的BUS Matrix的作用

ARM的BUSMatrix就是多主(Core,DMA等),多从(内部RAM,APB,外部总线等)的交联和仲裁。目的是为了提高不同主机访问不同外设情况下的带宽,另外一个就是简化BusMaster的协议设计。比如,DMA把片内RAM的数据搬运到APB的外设,如串行口。同时Core从外部总线,SDRAM取指令。如果单一总线,那么Core和DMA控制器就需要先仲裁总线控制权,然后才能访问对应的外设,此时单一总线的带宽不一定够。如果用交联矩阵,那么Core可以直接访问SDRAM,同时DMA访问APB外设。如果没有

2020-12-25 13:49:28 4889

空空如也

空空如也

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

TA关注的人

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