![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
芯片设计
tbzj_2000
目前负责ADAS相关算法和实现研究
展开
-
Windows 下安装 Emacs 并加入 Evil-mode和verilog-mode
Windows 下安装 Emacs 并加入 Evil-mode和verilog-mode1)Evil modeEvil是emacs的插件,可以在emacs下使用gvim类似的命令操作。a)下载解压 Emacs:b)下载解压 config.7z,运行 config.sh。(要安装 GitBash) 以上打包文件,参见:emacs_verilog_evil.rarhttp...原创 2018-08-15 12:14:46 · 3247 阅读 · 1 评论 -
ctags在verilog代码浏览中的应用
我们通常习惯于使用verdi等GUI界面来浏览RTL代码,好处是非常直观,操作简捷方便;但前期的准备工作也比较繁琐,比如需要准备一个RTL文件列表include.f,然后用类似以下命令读入: verdi -2001 -f include.f我们还可以使用ctags工具,linux os一般情况下都已安装该工具。仅通过vim就可以完成项目所有rtl的浏览,跳转等。假设我们的RT...原创 2019-12-04 18:30:30 · 2919 阅读 · 0 评论 -
DDR3基本概念7 - 写操作,以及Lattice DDR3 SDRAM controller实战
DDR3 memory支持六种写命令: WR : BL8或BC4固定burst长度写; Mode register0 的A1,A0: 00, fixed BL8;10, fixed BC4 WRS4/WRS8: BC4 or BL8 on the fly, 通过A12来区分:0, BC4; 1, BL8 ...原创 2019-03-08 18:17:35 · 2040 阅读 · 0 评论 -
DDR3基本概念2 - 上电复位时序
复位信号RESET#和时钟使能信号CKE信号之间要求满足以下时序:对上图中的1, 2, 3和4说明如下:1)CKE在RESET#有效区间,可以有一段时间不稳定2)在RESET#释放之前,要求CKE必须在10ns之前稳定为03)RESET#释放之后,需要等待500us之后,CKE才可以置为14)在电源稳定后,RESET# 需保持至少200us在RTL设计的仿真阶段,200us的...原创 2019-03-03 18:04:49 · 5055 阅读 · 0 评论 -
Cadence IUS 之二: 生成波形
Cadence IUS支持生成其浏览分析工具simvision可读取的波形, 波形文件的后缀为*.trn。以下为一个在testbench中生成波形的一个例子。initial begin: DUMP_WAVE $shm_open("./waves/my_wave/"); $shm_probe("AC"); $shm_probe(u_I2C_BFM.WRITE, "AC")...原创 2019-03-03 17:56:06 · 3190 阅读 · 0 评论 -
DDR3基本概念4 - 预充电和刷新,以及Lattice DDR3 SDRAM controller实战注意事项
Prechage:需要precharge的原因,关闭当前行,打开新行时,要求新的bit line充电到VDD/2。具体原理参见:https://blog.csdn.net/tbzj_2000/article/details/88042986 DDR3基本概念1 - 存储单元结构和原理Refresh:存储单元的电容,最大保持电平时间为64ms(温度小于85度),或32ms(温度大于85度)。完成...原创 2019-03-06 09:55:40 · 12715 阅读 · 0 评论 -
Lattice clarity designer在linux平台下无法找到已安装的IP的解决办法
在home路径下建立一个ipsetting_l.lstcd ~touch ipsetting_l.lst然后编辑该文件,加入已安装的IP的路径,如:[Installed_IP]ddr3_sdram_common_v3.0 = /tools/lattice/ip/3.10.0/ddr3_sdram_common_v3.0 = /tools/lattice/ip/3.10.0/...原创 2019-03-05 20:56:06 · 347 阅读 · 0 评论 -
verilog 基础原理1 - RTL中对数据位宽的管理
我们通常非常清楚,对于每一个数据都必须定义其位宽,如:reg [7:0] a;reg [19:0] b;但进行计算时我们通常会忽视中间结果的位宽从而出现难以理解的仿真错误。如wire [19:0] c;assign c = a*b >> 8;仿真发现c并非我们想要的结果。原因可能是仿真工具认为a*b的计算值的位宽为a和b中最大的位宽,即20位。正...原创 2019-02-28 19:59:28 · 2938 阅读 · 2 评论 -
DDR3基本概念1 - 存储单元结构和原理
一个基本存储单元结构图如下图, storage capacitor为一个基本存储单元,当access transitor被选通时,可读可写:一个4行3列的DDR 存储器如下图所示:上图中蓝色的为bit line。相邻行的对应bit的bit line之间有一个两个反相器首尾相连的sense amplifier。红色的为word line,连接了同一行的所有的存储电容的transist...原创 2019-02-28 19:47:07 · 10059 阅读 · 2 评论 -
AXI 总线基本概念1 - 如何理解outstanding传输
在AXI4的总线规范中提到AXI4的总线特性之一: Support for issuing multiple outstanding addresses.从字面理解,outstanding表示正在进行中的,未完成的意思,形象地说就是“在路上”。简单讲,如果没有outstanding,或者说outstanding能力为1,则总线Master的行为如下(AHB总线就没有outstandi...原创 2019-02-28 19:37:12 · 46942 阅读 · 0 评论 -
*Error* illegal LHS in continous assignment
以下一段代码在verdi中编译报出如题错误信息genvar i;generate for(i=0; i<step; i=i+1) begin:fiford assign rdata[i] = mem[raddr+i]; endendgenerate从语法看没有任何问题。原因是rdata原来是在always中被赋值的,后来才改为assign赋值,定义没有...原创 2019-02-19 14:39:29 · 6556 阅读 · 2 评论 -
DDR3基本概念3 - 复位初始化实战举例Lattice DDR3 IP仿真
1) 通过lattice clarify designer 配置DDR3 IP,最新版本是3.1版本2) 配置完成后,自动生成了一套包括testbenches在内的仿真环境。 以上1和2的详细过程,将在另一篇文章中说明。3)启动仿真 且记: Lattice DDR3的仿真环境中各个rtl使用了不同的timescale,所以在仿真时,必须保留每一个rtl中的timescale,...原创 2019-03-03 19:23:22 · 2102 阅读 · 0 评论 -
DDR3基本概念5 - DDR仿真中出现的Memory overflow错误的处理
ERROR: Memory overflow. Write to Address 7000fe with data xxxxxxxxxxxxxxxx4634899aabe03499 will be lost You must increase the MEM_BITS parameter of define MAX_MEM.出现该问题的原因分析: ddr3_paramete...原创 2019-03-06 19:42:24 · 2603 阅读 · 2 评论 -
DDR3基本概念6 - Write leveling(写入均衡)
为了提供更好的信号完整性,DDR3的memory controller可以使用write leveling来调整DQS差分对和CK差分对的相对位置,利用DQS差分对路径上的可调整延时来达成该目的。 对于简单的运用,比如on-board DDR memory,并且仅有一颗DDR内存的情况下可以考虑不需要做write leveling。 T型布线,如下图。该布线方式同步切换噪声(Si...原创 2019-03-07 14:33:59 · 26743 阅读 · 3 评论 -
ncverilog编译时Unrecognized system task or function: $fsdbDumpfile问题的解决方法
log中报出以下问题:Unrecognized system task or function: $fsdbDumpfile (did not match built-in or user-definee name)通过以下设置解决该问题。1)环境变量设置 以下假设使用的是csh。用echo $SHELL可看到当前所使用的shell的类型。 将verdi的PLI库路径加入环境...原创 2019-07-15 16:13:24 · 8421 阅读 · 0 评论 -
DDR3基本概念10 - DDR MT/S的理解
MT/S指每秒传输多少个数据(Mega-transfer per second),和时钟频率是两个不同的概念。DDR(dual data rate)是双边沿传输数据。因此MT/S是时钟频率的两倍。参见下表。...原创 2019-06-04 15:41:57 · 17570 阅读 · 2 评论 -
DDR3基本概念9 - 8n pre-fetch architecture的含义
在DDR3标准中提到"The DDR3 SDRAM uses a 8n prefetch architecture to achieve high-speed operation".n表示DDR内存颗粒的位宽(一般为4/8/16bits). 8表示burst的最大数据量。为了获取最佳的性能,DDR3一次读写数据位数为8 x n。如下图所示,READ 通道有一个32数据到8个4位burst数...原创 2019-06-04 09:15:00 · 5705 阅读 · 1 评论 -
DDR3基本概念8 - 如何理解RTT和VTT
为ODT的有效阻抗。由MR1寄存器的A9,A6和A2来设定RTT的大小。标准中提到的RZQ电阻为240欧姆,连接在ZQ管脚和VSSQ之间。例如{A9,A6,A2}=001时,RTT=RZQ/4=60欧姆。参见下图(来自DDR3标准) .参考电压VDDQ/2, 又称为VTT。其中VDDQ是DQ的供电电压。在DDR3 标准中定义了两种RTT,即RTT_nom 和RTT_wr,两者分别在MR...原创 2019-06-04 09:03:10 · 16501 阅读 · 0 评论 -
Lattice FPGA 使用指南4 - 全局复位网络GSR的使用
Lattice FPGA 之GSR (全局复位网络)使用GSR可以节省布线资源, 并消除难于解决的setup和hold时序违例。从以下语句来看, Lattice仅有一个GSR网络,所以最好设计仅有一个复位,则全部逻辑都可用GSR来复位。若有多个不同复位,建议GSR用于负载最重的一个复位,从而尽量减小对布线资源的占用。There are two primary ways to take a...原创 2019-05-24 17:29:32 · 2953 阅读 · 0 评论 -
Cadence IUS 之四:生成verdi的fsdb波形时的问题分析
报出*E, MSSYSTF :User Defined system task or function ($fsdbDumpfile) registered during elaboration and used within the simulation has not been registerd during simulation.原因之一,未设定verdi的环境变量;原因之二,在i...原创 2019-05-21 09:16:35 · 3656 阅读 · 0 评论 -
Lattice FPGA 使用指南3 - 如何用第三方仿真工具跑后仿及波形分析
假设设计名为mydesign1)生成网表和sdf文件在综合时,Map Design选项中选中 Verilog Simulation file,则综合完成后,会生成网表和sdf反标文件:mydesign_mapvo.sdf (sdf file)mydesign_mapvo.vo (verilog netlist)2)在testbench中读入sdf,如: initial ...原创 2019-04-23 21:30:15 · 2215 阅读 · 0 评论 -
Cadence IUS 之三:代码覆盖率分析
1)irun 由irun产生coverage数据。 irun 加-coverage all(表示对所有类型的coverage都产生数据)和-covtest TB_NAME(指定将要产生的数据名称): irun -coverage all -covtest TB_CASE1 ... 跑完仿真,自动生成cov_work/scope/TB_CASE1 覆盖率数据。2)imc...原创 2019-04-23 21:08:41 · 8461 阅读 · 0 评论 -
verilog 基础原理1 - Testbench的initial中的时间节点的判断
testbenchinitial begin: TEST1@(posedge s1);$display("start to get data");@(posedge s2);@(posedge clk);$display("The data is %h", data_in);end说明:s1的上升沿,s2的上升沿以及对应的clk的第二个时钟上升沿实际上是在一个时...原创 2019-04-04 20:53:09 · 2787 阅读 · 0 评论 -
Cadence IUS 之一:简介
一套芯片设计集成仿真工具,包括:irun, nclaunch, ncverilog, ncelab, simvision, iccr( 最新版本改为imc)等。1)仿真- 通过命令行方式,可用单步irun命令,也可以用多步的ncverilog和ncelab等- GUI方式跑命令 ,可用nclaunch工具波形分析:simvision覆盖率:imc2)ius工具安装路径下有两...原创 2019-02-24 19:16:49 · 3076 阅读 · 0 评论 -
Emacs Verilog mode 简单使用指南
可实现自动生成instance,wire,parameter等,方便设计的上层模块连接设计,免去手打代码的重复工作。(参考博客 https://blog.csdn.net/tbzj_2000/article/details/81702009 安装后,给gvim也添加了verilog mode,即用emacs和gvim都可编辑verilog,并使用verilog mode下的各种功能)/*...原创 2019-02-28 14:21:05 · 9141 阅读 · 1 评论 -
Lattice diamond 编程时工具报出 ID错误问题的解决
error"failed to verify the ID (Expected : 0x012C0043 Read:0x01113043)"解决办法:修改impl/impl1.xcf , 将其中的0x01113043,都改为所期望的0x012C0043。(ID号每一个人的情况不一样,根据实际报出的ID号来修改)注意:通过SPI烧写flash时,也会碰到类似的check ID error,此时同样...原创 2018-06-27 20:50:07 · 7274 阅读 · 7 评论 -
TestKompress 对EDT压缩链分析时报出的F9错误分析
使用TestKompress 对EDT压缩链分析时报出以下F9错误而中断。从Tessent shell reference manual看,F9错误属于EDT finder rules(F rules)问题。tessent分析EDT chain,向前追溯时出现了block或disturb。// Begin EDT Finder analyses. // ------------------...原创 2018-05-04 14:30:18 · 1280 阅读 · 1 评论 -
Tessent shell atpg流程
Tessent shell atpg流程1) 指定netlist中已插入的edt logic set_edt_instances -edt_logic_top set_edt_instances -decompressor set_edt_instances -compactor2) 指定已插入的scan chain add_scan_groups groups名 "test...原创 2018-05-04 14:05:43 · 4825 阅读 · 0 评论 -
gvim使用指南(学好就可下山了)
vim 使用指南1. 基本的鼠标操作 h:逐字符左移; l:逐字符右移; k:上移一行;j:下移移行; ctrl + f:向前翻页; ctrl + d:向前翻半页 ctrl + b:向后翻页; ctrl + u:向后翻半页 gg:返回到第一行; ctrl + g:至最后一行2. 文本编辑 r:替换一个字符; R:...原创 2018-04-19 09:39:38 · 2317 阅读 · 2 评论 -
scandef格式详细说明
scandef 文件格式说明作者:tbzj_2000 @ foxmail . com1) scan chain number 例子: SCANCHAINS 8 ; 表示stub chain的个数,与设计中的实际scan chain个数不一定相同。 例如,因RETIMING DFF的插入,一条实际的scan chain在scandef中可能被拆分成两条stub chain。该类s...原创 2018-04-18 09:46:02 · 4281 阅读 · 2 评论 -
linux下nerdtree安装方法
1) 进入GitHub https://github.com/scrooloose/nerdtree2) 点击右上角的clone or download,然后选择"download zip"3) 下载nerdtree-master.zip后, 在linux环境下解压4) 将解压后的文件夹下的所有文件包括doc,lib,plugin等复制到你自己的linux home路径下的.vim文件夹,若...原创 2018-03-16 14:52:29 · 2943 阅读 · 1 评论 -
TCL中有关regexp匹配表达式的说明
基本概念:regexp 把匹配整个正规表达式的子字符串赋给第一个变量;然后在匹配整个正则表达式的子字符串中匹配正规表达式的最左边的子表达式的子字符串赋给第二个变量,依次类推。语法:regexp ?switches? exp string ?matchVar? ?subMatchVar subMatchVar ...?说明:1)以“-”开始的是一个匹配选项switch,比如-nocase,表示忽略字...原创 2018-04-15 22:01:31 · 18640 阅读 · 0 评论 -
如何编写Xilinx ISE环境下的综合约束文件ucf
XILINX ISE FPGA开发环境下ucf文件的生成方法。原创 2017-12-27 18:46:44 · 5315 阅读 · 1 评论 -
xilinx iMpact 923 warning信息的解决 (can not find cable,check cable setup!)
64-bit的操作系统如64-bit win7要使用相应的64-bit的impact。否则提示如下信息:原创 2018-01-11 17:12:22 · 7167 阅读 · 0 评论 -
在ncverilog仿真条件设置中+nospecify ,+notimingcheck 和 +delay_mode_zero之间有什么区别
+nospecify ,+notimingcheck 和 +delay_mode_zero 三个选项的详细分析说明原创 2017-12-21 20:28:11 · 22300 阅读 · 3 评论 -
RGB to YUV 转换
8位 数字 RGB到数字YCbCr的转换 公式 为:(RGB值在 16 ~ 235之间)Y = 0.299R + 0.587G + 0.114BCb = -0.172R - 0.339G + 0.511B + 128Cr = 0.511R - 0.428G - 0.083B + 128若RGB数据为256位,则相应地,Cb和Cr为:Cb = -0.172R - 0.339G +...原创 2018-07-27 18:09:55 · 1954 阅读 · 0 评论 -
cadence IUS (ncsim) code coverage 流程
1)irun 由irun产生coverage数据。 irun 加-coverage all(表示对所有类型的coverage都产生数据)和-covtest TB_NAME(指定将要产生的数据名称): irun -coverage all -covtest TB_CASE1 ... 跑完仿真,自动生成cov_work/scope/TB_CASE1 覆盖率数据。2)imc...原创 2018-09-10 19:18:16 · 5233 阅读 · 1 评论 -
在gvim中使用Emacs verilog mode的verilog代码自动插入和自动插入撤销的方法。
方法1。给emacs工具安装evil mode,使得在emacs的文件编辑方式和gvim基本一致。但仍然没有直接调用gvim方便。 emacs evil mode和verilog mode的安装方法参见: https://blog.csdn.net/tbzj_2000/article/details/81702009方法2。在gvim中调用emacs的verilog ...原创 2019-02-28 13:27:33 · 4591 阅读 · 4 评论 -
何谓“pessimistic”异步FIFO的full和empty信号
full:full信号在写端产生.在写端,若判断到写指针已经回绕到等于读指针,full信号会被置起。在此期间,读指针可能还在递增,在两个周期的同步时钟后,该新的读指针才会被同步到写时钟域,并将full信号拉低。即full信号相对来说是比较悲观的(pessimistic),即写端可能因full信号长度比实际的FIFO为空的时间长,而因此多了几个周期停止写操作,稍损失了性能,但功能不受影响。...原创 2019-02-16 17:52:55 · 2358 阅读 · 0 评论 -
verilog timescale的两种仿真处理方法
1) 若所有的设计都使用同一个timescale,则可以不需要在每一个module前都定义timescale, 如使用cadence ius的irun仿真工具,则可加timescale选项,如: -timescale 1ps/1ps +ncoverride_timescale 则irun将强制将所有的timescale都设置为 1ps/1ps2) 对于复杂的设计,为了加快仿真...原创 2019-01-22 18:21:58 · 6146 阅读 · 0 评论