这篇文章介绍下BASH shell中的文件处理。之前有介绍过shell的其它命令,请参考:BASH shell脚本篇1——基本命令BASH shell脚本篇2——条件命令BASH shell脚本篇3——字符串处理BASH shell脚本篇4——函数在Bash Shell脚本中,可以使用多种方法来对文件进行操作,包括读取文件或写入文件。1. 写入文件bash shell可以利用"重定向"...
这篇文章介绍下BASH shell中的函数。之前有介绍过shell的其它命令,请参考:BASH shell脚本篇1——基本命令BASH shell脚本篇2——条件命令BASH shell脚本篇3——字符串处理函数是代码重用的最重要方式。Bash函数可以定义为一组命令,在bash脚本中多次调用。bash函数使脚本更具可读性,并避免一次又一次地编写相同的代码。它还...
这篇文章介绍下BASH shell中的字符串处理的相关命令。之前有介绍过shell的其它命令,请参考:
这篇文章介绍下BASH shell中的条件相关的命令,包括:if, case, while, until, for, break, continue。之前有介绍过shell的其它基本命令,请参考:BASH shell脚本篇1——基本命令
Live-Simulation (live-sim)模式允许Visualizer调试环境与Questasim进行交互操作,此模式将Visualizer GUI与Questasim仿真相结合,因此可以在线调试当前仿真的结果和波形。在livesim模式中,可以在Visualizer GUI中控制仿真、设置断点(Breakpoints)、单步调试、检查记录或未记录的数据值、以及跟踪类对象。因此,在调试...
LRU(Least Recently Used)算法:该算法会跟踪每个cache line的age(年龄)情况,并在需要时替换掉近期最少使用的cache line。
uvm_sequence_library是从uvm_sequence扩展而来的,它是一个容纳了一系列其它sequences类型的容器,在启动时,它会根据模式从这系列sequences中选择并执行它们。如果处于UVM_SEQ_LIB_RAND模式,它的select_rand属性将会随机并作为选择sequences的索引。如果处于UVM_SEQ_LIB_RANDC模式,它的selec_randc属性将会随机并作...
在硬件电路中,为了使系统在异常情况下能自动复位,一般都需要引入看门狗(Watchdog)。看门狗其实就是一个定时器电路。当看门狗启动后,计数器开始自动计数,经过一定时间,如果没有被清零,计数器溢出就会对CPU产生一个复位信号使系统重启(俗称“被狗咬”)。系统正常运行时,需要在看门狗允许的时间间隔内对看门狗计数器...
前言之前有记录过关于总线的概览学习:【FPGA验证学习(五):SoC的总线架构】[1]【SoC系统结构设计(三):SoC中常用的总线】[2]【关于总线的学习(一):入门篇】[3]本篇来详细学习一下关于AXI总线的相关知识参考的资料博客链接已放在文末,感恩前辈优秀的分享。以AXI4为例,有AXI full/lite/stream之分。在Xilinx系列...
CPU流水线(pipelining)是一种将指令分解为多步,并让不同指令的各步操作重叠,从而实现几条指令并行处理,以加速程序运行过程的技术。指令的每步有各自独立的电路来处理,每完成一步,就进到下一步,而前一步则处理后续指令。
本文旨在帮助大家降低在编码过程中写出低性能和耗内存的概率,只要大家在写代码时稍注意下,积少成多。当然,使用代码分析工具也可以调试优化代码的性能,它可以分析出代码中性能和内存消耗的问题,如果这些地方可以重构,那么代码也可以得到改进。但在没有分析工具的情况下,可视化代码检查是必需。
事件驱动的仿真器顾名思义就是根据事件(event)触发仿真进行的,在进入一个周期中,它会获取每个事件并通过设计传播求值,直到达到稳定状态的条件,接着进入下一个周期。事件被定义为一个设计中的任何输入刺激的变化。由于输入的到达时间和来自下游设计的信号反馈不同,一个设计可能在一个周期中被求值多次。主流EDA工具...
本文讲一下SystemVerilog的time slot里的regions以及events的调度。SystemVerilog语言是根据离散事件执行模型定义的,由events驱动。SystemVerilog描述是由连接的执行thread或processes组成。Process是可衡量的,也具有状态,并且可以响应输入的变化以产生输出。Process是并发调度的元素,例如initial,process其实还包...
定向激励测试是一种为验证设计中的每个特性而编写定向测试用例的方法。受约束随机测试是一种使用约束随机生成器根据设计规范自动生成激励的方法。目前比较推荐的做法是两者一块用,使用受约束随机激励测试来覆盖大部分验证空间,然后定向激励测试覆盖难以到达的边界情况。
在使用UVM搭建环境时,遇到问题时,调试方式有千千万万,但很有必要了解下UVM库提供了哪些内建的调试手段,可以少走弯路,大大提升效率,而不是疯狂加各种打印消息。
在项目中,一个TB通常是很多人一起开发的,大家或多或少都会往log中打印一些信息(message),方便自己debug。但是如果log里信息太多,会造成自己感兴趣的信息被淹没了,只能通过关键字搜索的方式去查找。因此,本文推荐可以使用UVM提供的UVM_LOG功能,只需要增加少量的代码,就可以根据ID或uvm_severity类别,把自己感兴...
在AMBA AHB协议中,AHB master可以用burst传输连续取多笔数据。AHB定义了4、8和16拍的burst传输、未定义长度的burst传输和单次传输。Burst传输中支持incrementing和wrapping。
有些情况下,constraint不能简单用一行来表达,而是需要复杂的计算,如果都写到constraint block内部就比较复杂,而且很乱,这时候可以调用functions来约束随机变量。在constraint内调用function就称为”function in constraints”。它的格式如下:
在systemverilog中,net用于对电路中连线进行建模,driving strength(驱动强度)可以让net变量值的建模更加精确。net变量拥有4态逻辑值(0,1,z,x),它的driving strength有(supply,strong,pull,weak,highz)。net的值由连接到net的driver源(驱动源)决定的,这些driver源可以是连续赋值语句(例如assign),也可以是门级建模原...
任何编程语言,常用的语法和代码结构其实不多的,如果为了快速的掌握入手一门编程语言,我认为只需要把该语言的常见语法和代码记下来,再结合实际需求去拼接成新的代码。这篇博客主要是记录bash shell的一些用法,便于日后复习。所以这篇博客不会一次性写完的,会不断更新新的例子进来。