- 博客(69)
- 资源 (1)
- 收藏
- 关注
原创 什么是后仿
Netlist simulation 有些公司也叫gate level simulation,是指将RTL综合后的网表用与仿真的过程。Post netlist simulation 则是将生产的网表和静态时序分析(STA)产生的SDF一起用于仿真。SDF(standarddelay format)描述了网表单元的时序信息。图片来自百度百科。
2024-09-29 21:45:11 784
原创 IC设计验证知识之时序路径
起点是设计中数据由时钟边沿触发的位置。数据通过时序路径中的组合逻辑传播,然后被另一个时钟边沿在终点捕获。输入端口也能被视作起点,是因为输入端口是由外部源触发的。输出端口也能被视作终点,是因为输出端口是在外部捕获的。•Path 2:从时序元件的时钟引脚开始,到时序元件的数据输入。•Path 3:从时序元件的时钟引脚开始,到输出端口结束。•Path 1:从输入端口开始,到达时序元件的数据输入。时序路径的起点是时序元件的时钟引脚或设计的输入端口。•Path 4:从输入端口开始,到输出端口结束。
2024-09-08 22:12:47 329
原创 linux目录误删文件 /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
4.重启后出现这个界面,把光标移动到Troubleshooting,按回车,再选择Rescue a CentOS system,按回车就入救援模式。使用sln命令,可以创建到源文件的符号链接目标文件,它是静态链接的,无需动态链接,可以绕过ln命令。这个时候再使用sudo命令也不好使了,该怎么办。2.启动虚拟机时,选择电源–>打开电源时进入固件,进入启动界面。5.等待一段时间后,会出现如下界面,这里我们直接输入1。1.编辑虚拟机设置,挂载系统镜像,并设置启动时连接。这个时候,会再次看到下面的界面,依然选择。
2024-03-18 00:19:57 1779
原创 -bash-4.2$
使用CentOS7时,出现了-bash-4.2$,而不再是username@localhost格式,是因为用户路径/home/username下的配置文件丢失了。复制配置文件到用户目录下。
2024-03-17 22:52:38 759
原创 I2C 验证中需要注意的问题
但是,看过I2C时序图,也就不会这么想了。这里需要注意的是,如果将Thd配置为0,在DUT打开虑毛刺功能,且外部有毛刺输入时,因为虑波会导致实际进入到逻辑里的SCL信号的下降沿滞后于SDA的变化沿,如果此时SDA信号恰好是发生了变化,DUT可能错误检测到一个Start bit 或者Stop bit,所以无论是设计还是验证,这一点需要注意。此外,在Master对Slave读访问时,在Slave返回最后一笔数据时,Master会相应Nack,表示接下来,Master将要发起Stop bit。
2023-09-11 23:13:23 1160
原创 verilog中函数用法
verilog中函数用法读写文件常用1.1打开文件1.2读写文件2执行系统命令读写文件常用1.1打开文件$fopen打开文件,用法如下:1. $fopen("<文件名>");2. <句柄>=$fopen(“<文件名>”);用法1自然无须多解释,对于用法2,句柄就是任务$fopen返回的多通道描述符,默认为32位,最低位(第0位)默认被设置1,默认开放标准输出通道,即transcript窗口。注意:用fopen打开文件会将原来的文件清空,若要读数据就用fop
2022-04-09 18:25:02 1565 1
转载 systemverilog中的参数传递——ref、input、output
systemverilog中的参数传递——ref、input、output1 静态数组作为参数1.1 input1.2 output1.3 ref2 动态数组或队列作为参数3 类作为参数4 原文链接1 静态数组作为参数sv中的静态数组、动态数组、队列都是用一块内存存放,而他们的名字作为该内存的地址,这点和c一致,但sv中没有指针的概念。传递这种大片内存的值一般只有两种规则:1.地址传递,函数内部修改可以改变函数调用的值。2.值传递,将整片空间复制一份,函数内部修改不会改变函数调用的值。但是,sv
2022-04-09 17:05:12 4829 4
原创 VCS+Verdi 安装过程遇到的问题-CentOS7
VCS+Verdi 安装过程遇到的问题-CentOS71.安装流程1.1文件结构1.2 创建文件目录1.3 解压SynopsysInstaller.rar1.4 安装instller1.5 安装VCS等2.问题记录3.引用跟着大佬分享的文章,安装了VCS+VERDI,中间遇到了许多问题,在此记录一下。1.安装流程VCS+VERDI的一般安装流程有很多,简单说明一下。1.1文件结构链接:https://pan.baidu.com/s/1qgn-AdVLOu3-CdLfC1l9Iw 提取码: 6qx6
2022-01-11 23:31:08 3562
原创 uvm_event 的使用
uvm_event 的使用uvm_event可以用来在不同的组件里实现同步的作用。class exm_driver extends uvm_driver #(data_transaction) uvm_event frame_event ... function void build_phase(uvm_phase phase) super.build_phase(phase); frame_event = uvm_event_pool::get_glo
2021-12-26 18:45:09 1105 1
原创 svn 问题之右键没有checkout 选项
不要在受SVN控制的文件夹里点右键,因为这个文件夹已经在SVN控制之下,当然不会允许在里面嵌套另一个SVN版本库换个不受控的文件夹点右键,比如D盘根目录链接:link
2021-11-22 19:06:45 7960
原创 sv中并行语句
sv中并行语句sv中有fork-join、fork-join_none、fork-join_any三种并行语句,拿一个栗子说明三者的区别。有三个子线程同时运行 ,只要有任何一个线程结束,就退出并行块,以下是三种实现方法。task test(); fork:tag begin sub1(); disable tag; end begin sub2(); disable tag; end begin sub3();
2021-11-10 14:22:23 871
转载 DDRC中的write exclusive
DDRC中的write exclusive为了在硬件层面支持读写互斥,就需要判断一个地址是否已被其他处理器或核心修改,在 ARM 处理器中包含了被称为 Exclusive Monitor 的状态机来维护内存的互斥状态,从而保证读写一致性[2]。状态机的起始状态为 Open,对于某地址的 Load-Exclusive 读操作会将读取的地址标记为 Exclusive 状态;在对同一地址进行 Store-Exclusive 写操作会先检查 Monitor 是否处于 Exclusive 状态,若处于该状态则将内
2021-10-24 22:57:46 422
转载 Systemverilog中$cast()的使用
@Systemverilog中$cast()的使用1 静态转换SV类型转换分两种方法,一种叫静态类型转换,另一种称之为动态类型转换。静态类型转换的语法类似为:int a = 2; real b; b = real'(a); 这种类型`()的静态类型转换,一般不检查转换是否合法,因此具有一定的危险性。2 动态转换但cast的task却不是这样,cast的task却不是这样,cast的task却不是这样,cast是systemverilog中的内建方法,它会进行类型检查。如果转换失败,会
2021-10-17 17:13:07 8086 1
原创 IC设计中的有无符号数计算
IC设计中的有无符号数计算1.两个输入是有符号数,结果自动为有符号数。2.一个有符号数和一个无符号数运算,运算数自动按照无符号数补位。3.为防止溢出,中间结果存储寄存器的位宽要足够大。4.有符号数赋值给无符号数,按照有符号数补位。5.无符号数赋值给有符号数,按照无符号数补位。6.将低位宽的数左右移后赋值给高尾款的数,其在运算时是根据有无符号的情况将位宽补齐后,再进行左右移。7.逻辑右移 >> ,算术右移>>>。总结来说,有符号数和无符号数的区别,在于计算时的补位
2021-08-22 19:40:29 315
原创 Modelsim找不到secureip库
modelsim找不到secureip库ISE联合Modelsim进行仿真时,出现错误“无法访问secureip”的问题。原因在于使用ISE的Simulation Libarary Compilation wizard 进行库编译生成的modelsim.ini文件里缺少关于secureip 部分的路径,可以手动添加如下内容到modelsim.ini,问题解决!secureip = D:\ISE14.7\installation\14.7\ISE_DS\ISE\verilog\mti_se\10.4\n
2021-08-22 17:48:04 831
原创 IC验证之SDIO使用
IC验证之SDIO使用SD控制器和SDIO卡初始化流程如下:1. 配置SD控制器的寄存器:1) 配置控制寄存器CTRL,bit0置高复位控制器,bit1置高复位FIFO,bit2置高复位DMA,bit4置高使能中断,bit5置高使能DMA传输模式,bit25置高使用内部DMAC控制器;2) 配置控制寄存器CTRL,bit0置低控制器复位释放,bit1置低FIFO复位释放,bit2置低DMA复位释放;3) 配置电源使能寄存器PWREN,bit置高,对应卡供电,最高支持16个卡;4) 配置命令寄存器
2021-07-22 19:28:54 1247 1
原创 中断注册函数
中断注册函数typedef void (*(INTC_Handle)) (void);INTC_Handle intcHanles = NULL;void Intc_Register_Handler(INTC_Handle handler){intcHandlers = handler;}__irq void Irq_Handler(void){(*intcHandlers)();}中断使用Intc_Register_Handler(i2c_handler)i2c_hand
2021-07-15 15:14:06 614
原创 Perl 脚本传参
Perl 脚本传参使用perl自带的Long.pm模块use Getopt::Long; Getopt::Long::GetOptions('c=s' => $community, //c是传递的参数标识符,s代表传递的参数是字符串,参数将传递给$community这个变量'H=s' => $host_name,'v=i' => $version, //i代表传递的参数是数字);...
2021-07-15 15:00:43 1342
转载 Inverter vs Buffer Based Clock Tree
转载于知乎:Inverter vs Buffer Based Clock TreeBuffer 是 两个反相器的级联。对于CTS来说 (clock tree synthesis 时钟树综合),使用buffer或者inverters 有何不同呢?构建时钟树时,使用inverter或者buffer各自的优劣势是什么?数字后端工程师在做CTS时,将会考虑哪些因素?基于inverter的时钟树为了便于讨论,我们假设只是用一种 inverter 来做tree, 并且这些 inverter 都等距摆放。原理如图一
2021-07-13 10:25:37 7105 2
原创 IC验证之PLL使用
IC验证之PLL使用PLL在使用时,需要注意,一旦PLL使能并且在一定频率下工作,不允许随意修改配置寄存器的值来修改频率。如果需要修改,需先关闭PLL,再修改频率。否则,PLL输出时钟会出现未知态。另外,PLL在配置新的频率后,生成新的时钟输出需要等待一段时间,软件程序里需要延时等待一段时间。...
2021-07-09 10:05:21 740
原创 Sequence的启动
Sequence的自动启动default_sequence方式启动sequence,只需要在某个component(如my_env)的build_phase中设置如下代码即可:(最好在最顶层的class里面启动sequence,比如uvm_test类或其衍生类,即测试向量 )set的第一个参数和第二个参数构成了sequencer的路径。由于除了main_phase外,还存在其它任务phase,如configure_phase、reset_phase等,所以必须指定是那个phase,从而使sequen
2021-07-05 10:32:51 1831
原创 Vmware下Centos 系统NAT方式连接网络
Vmware下Centos 系统NAT方式连接网络1.配置过程1.1网络配置查看1.2编辑Linux中的网络配置文件1.3查看网络配置1.4重启网络服务1.5测试效果1.6DNS文件配置1.7再 ping www.baidu.com 可以上网2.其他问题参考1.配置过程1.1网络配置查看1.2编辑Linux中的网络配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33 #注 网络配置文件名可能会有不同,添加加粗部分内容,IPADDR、GATEWA
2021-05-23 17:36:13 881 3
原创 VCS编译时导入UVM库
VCS编译时导入UVM库1.test_top.sv引入类在test_top.sv文件里,`include “uvm_macros,svh”import uvm_pkg:: *;2.vcs 命令里添加 -ntb_opts uvm 参数vcs -sverilog -ntb_opts uvm my_file.sv
2021-05-19 20:59:38 4521
原创 Vmware实现与windows下的共享文件
Vmware实现与windows下的共享文件1 .首先你得先设置一下windows下得共享 比如是准备共享D盘 那么右击 ----->属性------->高级共享勾上就OK2.那么vmware怎么设置呢? 打开vmware->虚拟机下面得设置—>选项---->共享文件夹---->勾上总是启用----->添加所要共享得文件夹路径---->重启 ok 3.vmwave里怎么访问D盘呢,在文件->其他位置->mnt->hgfs下
2021-05-16 17:02:09 2556
原创 CAN总线波特率计算方法
CAN总线波特率计算方法1.位时间2.计算公式3.举例4.参考文章1.位时间1个位时间包含4个功能段,分别是同步段,传播段,相位缓冲段1,相位缓冲段2。为了便于编程,有些时候会把传播段和相位缓冲段1合并成一个时间段。位时间的数值相当于1/波特率,就是一位在CAN总线上传递的时间。这一位的值(1或0)由采样点的电平决定。相关参数定义如下:Prescaler:分频很容易理解,控制器的时钟频率进行分频后会得到CAN的时钟,CAN时钟的一个时间周期就是之前提到的最小时间段tscl,也称作时间份额,代表的
2021-04-08 10:39:34 22554 8
转载 SV中的Class知识
SV中的Class知识0. 基础1. static2. shallow copy3. deep copy5. parameterized class6. 继承7. 多态(polymorphism)8. 修改成员函数9. super10. casting11. 公有和私有12. 抽象类(abstract class)12. 域分辨符::13. External14. typedef本文搬运自:SV中的Class,感谢原作者分享,侵删!0. 基础定义: class name;实例化: .new()类中
2021-02-24 14:50:34 3828
原创 C语言之函数指针使用
C语言之函数指针使用概念&例程参考概念&例程在C语言中,函数本身不是变量,但是可以定义指向函数的指针,也称作函数指针,函数指针指向函数的入口地址。这种类型的指针可以被赋值、存放在数组中、传递给函数以及作为函数的返回值等等例程一:#include "stdio.h"#include "string.h"int str_comp(const char *m,const char *n){ if(strcmp(m,n) == 0) return 0;
2021-01-26 16:11:06 255
原创 DDR的相关概念
DDR的相关概念1.存储概念2.物理层级结构3.RANK概念3.1Rank (Depth Cascading)3.2Width Cascading4参考文章这里介绍DDR相关概念,不涉及DDR2、DDR3和DDR4之间的区别!1.存储概念DRAM全称Dynamic Random Access Memory,翻译过来为动态随机读取存储器。所谓随机,指是“想存哪个位置,就存哪个位置”,听起来很自由,很灵活。所谓动态,指的是保存数据过程中,需要不断的补充电量,听起来很耗电,很费劲。但是相比SRAM,DRAM
2021-01-22 09:58:26 6520
原创 CAN总线的CRC校验
CAN总线的CRC校验1.生成多项式2.通讯校验的过程3.CAN总线中使用的生成多项式4.参考文章1.生成多项式理解CRC校验,首先需要了解生成多项式的概念,生成多项式也就是发送方和接受方约定的一个除数而已,发送方和接收方都使用这一个相同的除数进行模2运算,计算结果相同则说明传输数据没有问题,而如果计算结果不同可能传输的数据就出现了问题,目的就是为了保证数据传输的可靠性。上面提到的模二计算本质上就是异或运算,相同的位为0,不同的位为1,也就是不考虑进位、错位的二进制加减法运算,例如:10011011
2020-12-07 14:39:35 24657 8
原创 VHDL中数组赋值写法
VHDL中数组赋值写法VHDL中不允许对数组直接赋值 ,先对变量赋值,再由变量赋值给数组才可以。参考代码中对iram_128_t_mem(i) 赋值写法。library IEEE;use IEEE.std_logic_1164.all;entity iram_128_t is port ( WE : in std_logic; CLK : in std_logic; ADDR : in std_logic_vector(6 downto 0); DATA : in std_log
2020-12-03 13:13:08 10847
原创 SV中interface使用
SV中Interface使用前言例程参考文章前言大型IC设计中,模块中信号数量众多,不仅使用和修改麻烦,而且很难保证在信号连接中不出问题,因此systemverlog中interface出现啦!既然写端口信号十分麻烦,那就单独为信号创建一个interface模块,然后在其他模块中例化,一旦信号名称和数量需要修改,也不必在顶层修改,只需要修改interface模块就可以。例程下面展示一个例程(本例程来自一篇博客,写得非常好,稍作修改,链接在文末,不得不说,本文是我见过将interface写得最清晰的
2020-11-19 16:51:13 2763
原创 systemverilog中的include和import
systemverilog中的include和import前言区别参考文章前言IC验证时报错,最后定位在include和import处,改变 import svt_uart_uvm_pkg:???? 和 include “svt_uart.uvm.pkg” 的顺序后,错误消失,问题很是奇怪,include 必须放在include 之前?百度之。区别include 将文件中所有文本原样插入包含的文件中。这是一个预处理语句,`include在import之前执行。import不会复制文本内容。但是
2020-10-30 15:51:04 3800
原创 FPGA抗辐射加固方法
FPGA工具三模流程1.FPGA三模工具2.Microsemi FPGA三模3.Xilinx FPGA三模1.FPGA三模工具FPGA三模工具包括Precision 和 TMR Tool等。2.Microsemi FPGA三模以A3PE3000L为例,其集成开发工具是Libero,集成了综合工具Synplify pro,布线工具Designer,在线调试工具 Identify。在使用Precision 三模处理后生成.edn文件后,在回到Designer布线工具中进行布局布线操作。新建工程后添加
2020-10-21 17:59:23 2125 2
原创 CAN总线控制器SJA1000
CAN总线控制器SJA10001.CAN总线1.1仲裁过程1.2控制段1.3数据段1.4CRC段1.5ACK段1.6远程帧2.滤波器设置2.1单滤波器设置2.2双滤波器设置3.初始化设置参考资料1.CAN总线控制器局域网总线(CAN,Controller Area Nerwork)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。CAN协议用于汽车中各种不同元件之间的通信,以此取代昂贵而笨重的配电线束。该协议的健壮性使其用途延伸到其它自动化和工业应用。
2020-09-29 19:12:10 20821 3
原创 IC验证之UART模块
IC验证之UART模块一、UART 模块使用二、UART 流控信号三、调试问题一、UART 模块使用二、UART 流控信号三、调试问题
2020-09-29 13:13:33 11572 4
原创 ISE10.1错误之unable to create cdc source
在使用ISE10.1的时候发现无法添加.cdc文件,百度查了很久才发现ISE10.1 中chipscope是需要独立安装的,呵呵! 有需要可以去下载官网下载地址ISE10.1 下面的Chipscope pro !安装在原来的ISE10.1的目录下,这样就可以在原来的工程下添加新的cdc文件啦!...
2020-08-18 17:55:27 1163
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人