杂散笔记

记录下每天遇到的小问题。无章可循。_


2020.10.1

vcs下verilog 和 vhdl 进行混合编译。

要想进行混合编译,据网上的结果是可以去按vcsmx专门是用来进行混合编译的。

步骤:
  analysis 进行语法检查
  	用vlogan [option] -f file_list 对verilog 和/或SV中进行编译。
  	用vhdlan [option] -f file_list 对 vhdl 编译到逻辑库。
  elaboration
  	用vcs对上面的中间文件进行生成可执行文件simv.
 simulation 
  ./simv 执行。
详细讲解可以看User Guide。我上传的资源里有。可供参考。

%m %0d 静态变量

%m显示语句所在模块的层次。
./driver::new()
%0d自适应显示不会有多余的空格。
class中变量声明成静态的每次调用,可以调用都是对同一个内存空间进行操作。
verilog中function 和task中的变量是静态的,不适合进行递归和重入的过程。如果有多个进程也是对同一块内存进行操作,可能得不到想要的结果。

config_db resource_db 的区别

学习的时候说的resource_db 是global的一种配置,而config是local的一种。
查阅资料表明配置就是配置到uvm_resorce 的一张表中。
说是resource_db配置是last write win的准则。
而 config_db 在end of elaboration 之前都是 parent win,
而在start of simulation之后也就变成了last write win 了。
先放着。要是有更深的理解在更新吧。

TTL 和 CMOS 电平的区别

1.电平标准不同。
2.TTL的驱动能力更强些。
3.CMOS的噪声容限大些。

UVM 中object 和component的区别

1.component继承object,比object有更多的方法。
2.component构成TB的组件,存在于仿真的整个周期中。object用完之后就会析构。

2020.10.19

TLM

1.TLM是系统建模的一种。事物指的是数据和事件。
2.介于寄存器级建模和算法级建模之间。
3.核心思想是吧在建模过程中间运算功能和通信通能分开。
4.相较于RTL模型的话运行速度更快,搭建耗时更短。

sequencer 中的仲裁机制

许个愿:但愿顺利拿到offer(ヾ(◍°∇°◍)ノ゙),反正也没人看。哈哈
由于多个sqr可以连接到一个drv上,所以sqr支持仲裁机制以确保一个时间点上只有一个sequence 可以访问drv。
sequencer中有一个set_arbitration()可以用来设置仲裁方法。总共六种列出如下:
SEQ_ARB_FIFO(Default if none specified)
SEQ_ARB_WEIGHTED
SEQ_ARB_RANDOM
SEQ_ARB_STRICT_FIFO
SEQ_ARB_STRICT_RANDOM
SEQ_ARB_USER

sequence 如何独占sequencer

一个driver可以对多个sequencer,一个sequencer也可以对多个senquence。
当sequence和sequencer通信时不想别打断可以独占sequencre.方法如下:
lock和unlock 同过sqr 得仲裁机制获得对sqr的占据。
grap和ungrap 类似于lock当sqr没有被lock或grap时立即生效。

p_sequencer 和 m_sequencer

m_sequencer 是uvm_sequencer_base类型的句柄,默认情况下在uvm_sequencer 中使用。
m_sequencer用来在sequence中访问测试平台层次结构中的任何成员变量和句柄。
p_sequencer则是用来访问sequencer 的。

uvm_event 和event的区别

1.event 用-> 触发, uvm_event 用trigger 触发。再次触发时需要用reset先进行复位。
2.uvm_event触发时可以携带信息。等待对象通过方法wait_trigger_data(output uvm_object_data) 来获取数据。
3.uvm_event可以通过add_callback来添加回调函数。
4.event不能获取等待它的进程数目,uvm_evnet 可以通过get_num_waiters()获取等待它的进程数。

接口 和 虚接口

1.接口实现了简化模块之间的连接和类与模块之间的通信。
2.虚接口将设计和验证平台分割开来。

UVM中get_name() get_full_name() get_type_name()

在这里插入图片描述

2020.10.16

三段式状态机的设计

步骤:
状态空间的定义
状态跳转
下个状态的判断
各个状态的动作
在这里插入图片描述

D触发器结构

在这里插入图片描述
cp clock pluse
cp = 0 时 G3、G4关闭 G1 G2 构成基本的RS触发器。并且工作在保持状态,即Qn+1(次态)=Qn(现态)。
此时G5 G6 打开 Q5= D~ Q6 = D。
cp 0->1时 G3 G4 打开, Q3 = D Q4 = D~。 Q= D ~Q=D(非)。
cp = 1时 由于反馈线 当 D=0时 G5 关闭。D=1 时 G6 G3关闭。 D任何输入不影响输出。Q保持。
达到上升沿输出的目的。其中RS锁存器达到记忆的目的。

2020.12.1

vsqr 和 vseq

1.什么时候使用vsqr.
	当drv发送的stimuli是混合的sequence需要使用。
2.vsqr的作用。
	管理sqr.
3.vseq 的作用。
	控制 seq的执行顺序。
4.p_sequencer 和 m_sequencer指的作用区别。
	m_sequencr 在sequence启动后会指向当前运行的seq的sqr。 p_sequencer 可以用来访问sqr中的成员。m_sequencr 可以用来访问验证平台中的组件。
5.testcase怎样调用seq.
	通过在test层声明seq.start(sqr)来指明对应的seq。
6.vsqr 和sqr的区别。
	vsqr 中管理sqr。不与 driver连接。不处理item。
7.seq的启动方法.
	uvm_do
	uvm_do_on
	create_item -> start_item-> randmize->finish item
	create -> randmize -> start

SV的特点

oop. constratin  coverpoint assert 

当一个driver和sqr连接好后。seq能发送不同的traction吗。

能够发送子traction。但是不能发送其他的。因为在port处也声明了package的类型。

2021.1.7

一会有个联众的面试。提前准备准备。就想到了个问题,记录一下。明天又能见她了。_

为什么要用run-phase而不是run-time phase

参考知乎大佬:
https://www.zhihu.com/question/363230741
主要是基于两个方面: 灵活性 和兼容性。
因为很多厂家的VIP使用的都是run phase。你在做兼容的时候如果你自己的TB中用的也是run phase,避免了不必要的同步工作。而且run time phase对应的功能能够通过其他的方法实现。

2021.4.5

进程和线程

<<嵌入式实时操作系统 UcosII>>
根据任务是否具有自己的私有空间,把任务分为进程和线程。
具有私有空间的叫做进程,没有私有空间的叫做线程。

2021.4.6

存储介质的速度

学习ucos系统,一直被一句话困扰,程序是在ram中执行的。这咋想咋不对,程序
不应该是在CPU中进行取指令,取数据进行执行到吗。可能这句话不能太较真,它
应该主要表达的是将程序搬到ram中,将死程序变活了。
而且使用qsys时可以指定程序的运行位置。其速度是依赖存储介质的速度区分的。
其: cache > ram > rom。当然在nios中没有cache的选项。
那么疑问就来了。要是不用片外的ram epcs(flash/rom) 。使用片内的ram ,rom呢。
本身fpga就没有rom,使用ram进行模拟的,而ram也是通过M9K模块进行实现的(cyclone IV )。 

2021.4.7

DAC 趋稳时间

在这里插入图片描述

2021.4.14

FPGA 中时序分析的四种路径

oppo的一道面试题。
	reg2reg
	inputpint2reg
	reg2outputpin
	inputpin2outputpin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值