自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 交换机芯片——TCAM

有了TCAM,就可以支持各种LOOKUP KEY的任何组合查找,任意地MASK掉任何不关心的字段,只有TCAM可以做这样的事情,HASH做不到。一般的CAM存储器中每个bit位的状态只有两个,“0”或“1”,而TCAM中每个bit位有三种状态,除掉“0”和“1”外,还有一个“don’t care”状态,也可以称作“wildcard”,也可以表示为“X”,从中文理解,就是忽略的意思。这也是CAM的最主要用途,它能够从巨大的数据库中进行快速查找,并且返回最佳的匹配地址,最快查找速度能达到每秒一亿次以上。

2023-12-15 11:35:51 2484

原创 低功耗——工具对代码进行RTL级clock gating的小细节

上图的典型综合结果中(即不使用门控时钟的情况),在每个受EN使能控制的寄存器之前加入了一个MUX,当EN信号有效时,寄存器锁存输入信号D;自动 gating 就是要在这短暂的空闲状态时间内关闭掉无用的时钟,而不是像手动 gating 直接关闭掉整个模块的时钟,否则该模块就不能再正常工作。最近在网表后仿发现传统的D触发器,cp不是一直随机时钟翻转的,问题是我这个模块没有做低功耗需求,我们原来做低功耗对于clock gating,都是手动gating, 就是增加时钟使能信号,人为的控制模块工作时钟的有无。

2023-12-15 11:12:49 823

原创 uvm-1.2取消在sequence内控制objection的写法

(2)在uvm-1.2中取消了这种写法,改用set_automatic_phase_objection(1);在sequence的new函数中添加上面这一句就可以自动控制sequence的开始与结束;sequence在执行前后会自动调用raise_objection与drop_objection,详见uvm_sequence_base的start函数;1) 在uvm-1.1中可以通过在seq内raise_objection与drop_objection控制tb的运行;

2023-11-20 18:20:14 429 1

原创 关于使用队列size作为循环的上限易错问题

queue.size()和queue.pop_front()非常常用,对于如下使用很容易出错,记录一下:for(int i=0;i<queue.size();i++)beginqueue.pop_front();...end随着queue的pop,size()大小就变化了,所以这是一段错误的代码,而且很容易忽略;下面两种方法都可以:1.for(int i=0;i<queue.size();i++)beginqueue[i];...endqu

2022-04-21 16:45:39 558

原创 config_db机制传递参数的小技巧

uvm中config_db机制可以实现在各个uvm对象里传递参数,好用,但是极容易错,调试也麻烦,要么是获取不到数值,要么是数据多时需要写多个set/get语句,这里记录两个小技巧:1.传递参数前,通过get_full_name()得到要set的路径,在传递时写好绝对名字,其它路径用*代替,一般是没有问题了;2.需要传递很多数据时,而且又很频繁,可以将其封装在class中,通过类的类型进行传递,有意想不到的效果;...

2022-03-06 15:36:14 874

原创 如何编写覆盖点为N的倍数的覆盖率

在编写覆盖点为N的整数倍的情况下,如何编写,可以定义一个新的变量,用如下方法覆盖:需要覆盖的变量为x,其变化规律为0,1N,2N,...:int x;可以定义一个新的变量y:int y;在采样时,可以使用如下的写法:y = x % N;covergroup sample_y;bin_of_y : coverpoint(y) { bins v = {[0:$]}; // $为上边界;}endgroup对y采样,间接的就进行了x的采样;...

2022-02-18 14:36:32 218

原创 对队列sum约束的一个小问题

定义bit a[$];约束a.size()=8;a.sum()=3;会报错约束失败,提示如下信息,百思不得其解:Solver failed when solving following set of constraintsconstraint len_range{len_q.size() -> (fv_temp_67 == 3);}后面在想是不是因为定义类型是单bit的问题,于是把定义修改为int:int a[$];约束成功;...

2022-02-17 11:18:20 698 3

原创 如何使用uvm_info打印object

在调试的时候,有时候需要打印object.print(),但是正常仿真的时候又不需要,那么如何使用verbose的方式打印object呢?可以使用如下语句:`uvm_info(get_type_name(),{"Debug object print \n", object.sprint()},UVM_DEBUG)就可以通过设置verbosity级别选择打印了...

2021-12-08 16:05:47 2213

原创 linux 软链接

建立软链接:具体用法是:ln -s 源文件 目标文件删除软链接:只删除链接:rm -rf目标文件删除链接与源文件:rm -rf目标文件/ (会把源文件也删掉)

2021-12-08 09:30:29 392

转载 SRAM的电路结构

两种SRAM的电路结构-电子发烧友网SRAM是随机存取存储器的一种。所谓的静态是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。SRAM不需要刷新电路即能保存它内部存储的数据,因此SRAM具有较高的性能。SRAM的速度快,一般用小容量的SRAM作为更高速CPU和较低速DRAM之间的缓存(cache).SRAM也有许多种,如Async SRAM (异步SRAM)、Sync SRAM (同步高速SRAM)、PBSRAM (流水式突发SRAM),还有INTEL没有公布细节的CSRAM等。不.

2021-12-03 10:44:17 7811

原创 uvm_objection/uvm_objection_events/test_done_objection/callbacks_objection/objection_callback

uvm_objection/uvm_objection_events/test_done_objection/callbacks_objection/objection_callback_liu_uestc_新浪博客uvm_objection/uvm_objection_events/test_done_objection/callbacks_objection/objection_callback(2011-10-20 09:52:54)分类:uvm prefaceuvm_o...

2021-11-05 17:50:41 1058

原创 UVM打印级别

预定的打印消息冗余度级别如上所示,可以看到UVM_NONE的冗余度最低、UVM_DEBUG的冗余度最高。使用方法举例:如果将UVM_VERBOSITY设置为UVM_MEDIUM,则冗余度高于UVM_MEDIUM(200)的消息(即UVM_HIGH、UVM_FULL、UVM_DEBUG)都不打印,只有冗余度低于UVM_MEDIUM的消息(即UVM_LOW、UVM_NONE)才打印。...

2021-10-28 14:49:57 4934 2

原创 where to sample functional coverage(to be opt)

1. traditional way: sample in reference mode or scoreboard;2. use callbacksmechanism;3. use sbscriber;

2021-09-27 10:42:57 123

空空如也

空空如也

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

TA关注的人

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