自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 verilog手撕代码

1

2022-09-22 15:46:01 387 1

原创 AHB中slave的ready_in和ready_out究竟区别在哪里

1

2022-09-19 18:31:38 850

原创 perl练习

perl

2022-08-23 15:27:31 243

原创 TCL练习题

tcl练习

2022-08-23 14:26:25 356

原创 TCL 学习笔记

tcl

2022-08-21 17:20:23 1418

原创 perl备忘录

perl知识点归纳

2022-08-08 22:02:48 157 1

转载 时序约束基础

1

2022-08-03 12:10:48 101

原创 UVM简单验证平台从0到1

前序本篇文章主要参考《UVM实战:第二章》,虽说只是搭建了一个简单的验证平台,但从书本的零星知识到makefile成功并且dump到正确的波形,还是费了周折,有一定的参考意义。现将过程与学习IC验证的同学分享,也是防止自己日后遗忘。 验证平台拓扑结构(case调用report_phase中的uvm_top.print_topology()函数来打印整个验证平台的拓扑结构):笔者的文件目录:DUTwrapper.vDUT很简单,就是将接收到的数据在下一拍输出,输入输出都由data和valid

2022-05-06 17:49:57 1187

原创 UVM应用指南及源码分析:第五章 sequence机制 学习笔记

sequence机制在UVM验证平台中扮演什么样的角色?UVM验证平台中,sequence相当于子弹,sequencer相当于弹夹,driver相当于手枪。主从关系而言,当driver请求发射的时候告诉弹夹准备好子弹。sequence主要负责transaction的产生,UVM平台需要对DUT施加不同的激励,而激励的不同体现在transaction,本质上是通过不同case中不同的sequence产生不同的激励。drvier完全可以产生激励,并对DUT进行驱动,为什么还要多此一举,加入sequence机

2022-05-02 10:26:34 1213

原创 IC基础:找第一个1的位置

给定一个输入,求从最高位开始第一个1所在的位置,第一反应是用计数器寻找,那么怎么用组合逻辑在一个周期内完成呢?二分译码module first( input [7 : 0] din, output [3 : 0] pos); wire d0, d1, d2; wire [3 : 0] temp0; wire [1 : 0] temp1; assign d0 = | din[7 : 4]; assign temp0 = d0 ? din[7 : 4

2022-04-26 10:48:11 1025

转载 关于UVM中get_name(),get_full_name(),get_type_name问题

此博文写的很详细

2022-04-19 16:41:15 1005

原创 第一个UVM环境:hello world

参考下载UVM1.1d原码:csdn传送win下解压,将如下文件夹复制到linux

2022-04-19 00:56:06 268

原创 VCS+Verdi makefile成功运行

首先进入自己的文件夹,写好DUT和TB,然后将这两个文件的绝对路径写入到一个.f文件中,最后再写makefile,文件目录如下:![在这里插入图片描述](https://img-blog.csdnimg.cn/a35149a9261e4923b045229d13f1c518.png#pic_centerfilelist.f中:./tb_narrow_trans.sv ./narrow_trans.vmakefile内容:每次改NAME就行#makefile for VCS+Verdi#--

2022-04-19 00:11:16 1179

原创 system verilog:call back机制的理解

什么是callback?它有什么作用呢?引用自《UVM实战》第九章 UVM中代码的重用性:验证人员希望在在一个项目中开发的验证平台能够用于另一个项目,但是,完全重用是很难实现的,不同项目多少存在差异。但是,将两个项目不同的地方使用callback函数来做,而将相同的地方写成一个完整的env,重用时只要改变callback函数env就可以完全重用。上代码来说明什么是callback参考硅芯思见,很不错的博主代码架构如下:cbb是callback函数的基类(这个类是一个虚类或者说是抽象类,可以被扩展

2022-04-15 22:17:11 790 1

原创 python:类中的装饰器

之前我们讨论过装饰器,如果funa作为funb的装饰器,那么funb=funa(funb),在不改变funb内容的前提下修改了funb的方法。类中如何定义装饰器,它的作用是什么?看一段例子:class test : def __init__(self, area) : self.__area = area @property def area(self) : return self.__areamy_test = test(20)print

2022-04-13 22:15:13 824

原创 python:__init__() 类的构造方法

什么是类的构造方法?学过OOP的都懂得类的构造方法,类比于system verilog中类的构造函数new,python的类也有自己的构造函数,init ,一般而言以两个下划线开始和结尾的都有特殊的含义。第一个python的类class my_first_class : def __init__(self) : print("hello, world!")my_class = my_first_class()在实例化class的时候,隐式调用了构造函数,此处的self代

2022-04-13 21:25:53 528

原创 python:装饰器

什么是装饰器?装饰器就是在不改变源函数的前提下,对原函数进行修改的函数。这句话很抽象,我们直接来看一个例子:def funa(fn) : print("still -- ") return fn@funadef funb() : return "hi --"print(funb())def func(fn) : print("still -- ") return fndef fund() : return "hi --"print(fu

2022-04-12 20:54:26 553

转载 iC验证笔试 平头哥

Systemverilog 里面有哪些是四值变量?logic reg wire integer time考察:数据类型bit 二值int unsigned 二值32位无符号整数int 二值32位有符号整数shortint 二值16位有符号整数longint 二值64位有符号整数integer 四值32位有符号整数time 四值64位无符号整数real 二值双精度浮点sv里面动态数组、关联数组、队列各自的优缺点,应用场景。动态数组:用的时候再分配内存,用完可以释放,仿真时分配空间或调整

2022-04-12 19:46:54 277

原创 system verilog:虚接口virtual interface

参考绿皮书第十章:高级接口为什么要引入虚接口?接口(interface)代表了实际的物理信号,是静态的,而验证平台需要动态的连接设计,比如一个driver类要连接DUT的不同接口,但你肯定不希望每个接口都写一个对应的driver类和DUT接口连接,而是通过例化传参的方式连接DUT。因此system verilog提出了一种虚接口(virtual interface)的概念,虚接口是物理接口的句柄,在仿真平台运行时,再决定要传入哪一个物理接口的句柄,并产生相应激励。因此,虚接口将物理DUT和仿真验证平台分

2022-04-11 21:01:16 2320

转载 数字IC面经 海思

问了一些computer architecture的基础知识,比如为什么经典CPU用5级流水线,里面有什么类型的hazard,怎么解决的。参考参考取指 译码 执行 访存 写回结构冲突:多条指令同一周期争用同一组件;原因:资源不够或不完全流水数据相关冲突:当相关指令靠的足够近时,它们在流水线中的重叠执行或重新排序会改变指令读写操作数的顺序,从而导致程序执行逻辑上的错误。解决:结构冲突:结构冲突可以插入暂停周期,停顿一拍再运行;或者设置相互独立的指令存储器和数据存储器,设置相互独立的指令/数据ca

2022-04-11 10:27:30 687 1

转载 IC笔试:华为实习笔试

参考1、下列有关时序分析的描述正确的是()A.recovery时间,是指异步控制信号在有效时钟沿到达之后必须保持稳定的时间 B.时钟信号的建立时间裕度的计算方法是基于数据的到达时间和数据的需要时间C.下面的公式用来计算最大数据达到skew : Maximum Data Arrival Skew = Shortest Data Arrival Path - Longest Data Arrival PathD.removal时间,是指异步控制信号在有效的时钟沿到达之前必须保持稳定的最短时间Brec

2022-04-11 08:51:58 3298

原创 IC笔试:实习笔试

AA参考A:program中不能实例化别的program和module;program中不能有always,可以用initial forever代替program中内部定义的变量最好采用阻塞赋值,当然采用非阻塞仿真器也不会产生error,驱动外部信号则应该采用非阻塞赋值;program中的initial块和module中的initial块执行位置不同,前者在reactive,后者在active块中执行program中存在的多个initial块中,如果有一个initial采用了退出系统函数.

2022-04-09 12:35:34 552

原创 华为面试手撕:窄传输

传送主要由选通信号strobe,case就可以了,当寄存器中数据大于等于8个字节,就输出一次module narrow_trans( input clk, input rst_n, input [31 : 0] i_data, input [3 : 0] i_data_strobe, output reg [63 : 0] o_data, output reg o_vld); //==============defination re

2022-04-09 00:56:02 674 5

原创 IC笔试:​2022紫光展锐数字芯片提前批笔试

1/38一个八位D/A转换器最小电压增量为0.01V,当输10011100时,输出电压为( )VA 1.28B 1.45C 1.54D 1.56

2022-04-09 00:01:32 2522 3

原创 python正则匹配练习

请写段Python代码,打开一个文件,扫描每行,如果该匹配到“biren01”,“biren02”,……“biren99”则以行号Key,将匹配到的“birenxx”保存下来思路:先读入文件的每一行,形成一个列表,然后循环正则列表的每一个元素(其实就是文件的每一行)然后将匹配到的结果放在hash中,排除掉没有匹配上(即匹配返回为空的key,value)。import red = {}file = open('nowcoder.txt')f = file.readlines();print(f)

2022-04-08 16:13:34 759 1

原创 UVM:启动sequence的方法

参考UVM实战6.1.2直接调用start任务启动my_sequence my_seq;my_seq = my_sequence::type_id::creat("my_seq");my_seq.start(sequencer);my_seq的实例化采用type_name::type_id::creat()方式,使用factory机制注册过的类才能使用这种方式实例化,这样才能使用factory机制中最强大的功能。(UVM实战2.3.2)还可以用default_sequence启动,本质上

2022-04-08 11:08:19 648

原创 UVM:filed_automation

参考UVM实战3.3 filed_automation机制`define uvm_file_int(ARG, FLAG)class trans; rand bit [47 : 0] dmac; rand bit [31 : 0] dq []; `uvm_object_utils_begin(trans) `uvm_filed_int(dmac, UVM_ALL_ON) `uvm_filed_array_int(dq, UVM_ALL_ON) `uvm_object_util

2022-04-08 10:39:58 138

原创 UVM:解决phase的执行顺序

uvm中phase有哪些?(参考UVM实战5.1phase机制)build_phaseconnect_phaseend_of_elaboration_phasestart_of_simulation_phaserun_phase(并列:pre,post reset_phase configure_phase main_phase shutdown_phase)extract_phasecheck_phasereport_phasefinal_phasebuild_phase和final

2022-04-08 10:31:08 1407

原创 解决$cast

参考绿皮书8.3;参考博文基类句柄可以指向扩展类对象(向下类型转换),但扩展类句柄不能指向基类对象(向上类型转换),除非基类句柄之前指向了一个扩展类或者扩展类的扩展类对象。class bird; virtual function void hungry(); $display("i am a bird, i am hungry"); endfunction function void hungry2(); $display("i am a bird

2022-04-07 15:24:43 285

原创 IC笔试:2022壁仞数字芯片提前批笔试

(1)、异步FIFO中,指针编码应该使用什么编码方式A、One-hotB、One-coldC、BinaryD、Gray分析:异步FIFO最重要的是指针的跨时钟域传输,而指针计数是循环且每次最多递增1,因此符合格雷码编码跨时钟域处理,即使发生亚稳态,跨时钟域后的结果要么准确要么保守,保证了空满标志的正确或保守(而不是错误)(2)、摩尔定律中写道,IC上可容纳晶体管数量约每多少个月增加一倍?A、10个月B、12个月C、18个月D、24个月摩尔定律是英特尔创始人之一戈登·摩尔的经验之谈,其核

2022-04-07 09:10:09 1877 2

原创 解决FIFO读写位宽不等的问题

上周阿里面试官问ram两侧读写位宽不一样改如何解决?当时含糊了一下,事后再认真分析其中缘由。思路取读写位宽的最大公因数作为ram的位宽,控制读写指针的步进,并预测下一次的步进module sync_dff_wid_fifo#( parameter I_WID = 15, parameter O_WID = 10, parameter FIFO_WID = 5, parameter DEPTH = 8, parameter ADDR_WID = 3, pa

2022-04-06 23:32:25 2521 5

原创 perl每日一练

==============================2022.04.04点(.)是通配符, 它可以匹配任何字符错误:匹配除了换行符以外所有字符请仔细查看下列Perl程序,选出正确输出结果的选项。@array=qw#white black red#;$a =shift(@array);$b =shift(@array);shift @array;unshift(@array,"green");unshift(@array,"yellow");@others =1..3;

2022-04-04 23:19:59 556 2

原创 机组:每日一练

以下不属于总线分类的是哪个选项?数据总线地址总线指令总线控制总线根据功能和规格,巴士可分为五类:数据总线:在需要处理或存储的CPU和RAM之间来回发送数据的通道。地址总线:指存储在随机存取存储器(RAM)中的数据的地址。控制总线:将微处理器控制单元的信号传输给外围设备。扩展总线:用于外部设备和计算机主机之间的数据通信的总线,如ISA总线、PCIgeneral本地总线:代替更快的数据传输的扩展总线。全相联映射中,如果cache的块数为N,主存的块数为M,则映象关系共有多少种?N.

2022-04-04 21:44:20 345 1

原创 操作系统练习2022.4.10

============================= 2022.04.04在 Linux 中,将文件属性设置为所有者只读,其余无任何权限的命令为(假设文件名为 myfile)chmod 400 myfilechmod 改变文件属性;chown改变文件的拥有者;chmod rwxrwxrwx file三组参数分别对应文件所有者权限,同组用户权限,其他用户权限。linux系统中,以下哪个文件会记录用户操作的历史记录?()/var/log/syslog默认RedHat Linux

2022-04-04 17:01:25 879

原创 每天实践SV:过程语句

ref的使用ref引用传递数组,节省空间,如果没有ref修饰,会将数组复制到堆栈,当数组很大的时候代价很大。module ref_(); bit [31 : 0] a []; initial begin a = new[5]; a = '{1, 2, 3, 4, 6}; print_checksum(a); end function void print_checksum(const ref bit [31 : 0] a

2022-03-28 23:57:27 168

原创 IC面试:解决UART

打三排降低亚稳态概率并下降沿检测;保证在波特率的循环周期正中央采样;module uart_tx#( parameter CLK_FRE = 50, parameter BAUD_RATE = 115200)( clk, rst_n, tx_data, tx_vld, tx_pin, tx_rdy ); //==================modport input clk; input

2022-03-28 21:30:17 520

原创 IC面试:解决JESD204B(项目)

JESD204B过程Xilinx技术文档时钟方案SPI配置LTC6952时钟芯片,分别为AD9694和FPGA提供同源时钟(ad_dev_clk;FPGA_dev_clk)和相同频率的参考时钟(sysref);AD采样率400MHz,通过SPI配置AD9694,内部DDC下变频到200MHz,相当于200MHz的采样;AD9694有4个转换器(M=4),链路通道4个(L=4),分辨率16bit(N=16),数据链路层进行了8b/10b编码(每字节扩充为10bit);因此: 线速率(总的每秒吞

2022-03-27 11:58:42 1333 1

原创 每天实践bash

写一个 bash脚本以输出一个文本文件 nowcoder.txt中的行数#!bin/bashline=0while read pdo ((line++))done < ./nowcoder.txtecho $line变量赋值等于号左右无空格;while read line do done < file 重定向,把file文件循环每一行赋值给line循环中可以对line进行操作;echo想输出变量值必须加$,否则输出字符串;======================

2022-03-26 23:49:57 549

原创 每天实践python

实例001:数字组合题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?程序分析遍:历全部可能,把有重复的剃掉。total = 0for i in range(1, 5): for j in range(1, 5): for k in range(1, 5): if((i != j) and (j != k) and (k != i)): print(i,j,k)

2022-03-25 23:23:02 174 2

原创 每天实践SV:数据类型

初始化并遍历多维数组module data_type(); int arr[3][2]; //int arr[0 : 2][0 : 1] initial begin arr = '{'{1, 2}, '{3, 4}, '{5, 6}}; foreach(arr[i,j]) $display("arr[%0d][%0d] = %0d", i, j, arr[i][j]); $finish; endendmod

2022-03-25 22:41:08 775

空空如也

空空如也

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

TA关注的人

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