关闭

关于使用git进行代码托管下文件的恢复

引言git是一款很好用的代码托管工具。但是如果发生了误操作,丢失的文件如何找回呢?本小节就通过亲身经历来解决这个问题。1,情景产生误操作的如下:首先,甲和乙两个人都在一个分支上进行代码修改,假设分支为develop。其次,两人最后一次同步是在2016年1月8号。在1月12号上午乙已经把自己修改的代码push到了远方服务器上。一切正常。误操作是甲做的,时间是2016年1月12号下午。操作如下:1>修...
阅读(3262) 评论(2)

数字集成电路设计-20-multi-cycle

引言前面我们介绍了流水线的写法(http://blog.csdn.net/rill_zhen/article/details/45980039),流水线是数字设计中很常用的一种设计方法,可以提高运行频率,提高吞吐量。如果组合逻辑延迟较大,一个时钟周期完成不了时,除了插入寄存器将组合逻辑拆分成流水线外,还可以采用multi-cycle的方式。multi-cycle的工作机制很简单,从给定输入之后,等...
阅读(2839) 评论(0)

数字集成电路设计-19-pipeline的写法

引言之前,我们介绍了数字设计中一些基本组合逻辑的写法(http://blog.csdn.net/rill_zhen/article/details/39586191)以及状态机的写法(http://blog.csdn.net/rill_zhen/article/details/39585367),本小节我们通过一个小实验来熟悉一下pipeline的写法。在多数的资料和教课书中提到pipeline时...
阅读(3954) 评论(0)

数字集成电路设计-18-UVM

引言UVM(Universal Verification Methodology)可以理解为形而上的东西,可以理解为是基于System verilog的一个库,提供一些API调用。其实没必要把UVM抬的那么高,上升到形而上的层次。因为在实际的IC验证时,对某个复杂DUT的验证时,一般都会拆分成那几个模块。要对DUT测试,肯定需要先产生测试用例,就是UVM中的sequencer和sequence概念...
阅读(4308) 评论(0)

数字集成电路设计-17-svunit环境构建

引言做IC验证时,除了采用SVA,DPI等验证手段,还可以采用svunit开实现module级别的验证。1,什么是svunit?VUnit is a unit test framework for developers writing code in systemverilog. Verify systemverilog modules, classes and interfaces in iso...
阅读(2821) 评论(0)

数字集成电路设计-16-关于AXI协议

引言AXI协议有可能是我们平时电路设计时经常遇到的一个协议,也是一个不错的协议,本小节我们就来熟悉一下。乍一看,AXI协议的信号众多,眼花缭乱,容易发蒙。但其实其基本思想很简单。只要掌握以下几点:1,valid/ready协议axi协议是典型的基于valid/ready协议的总线协议。valid/ready协议的优势就是master和slave的相对独立性比较好。对于一次传输,作为master的发...
阅读(6664) 评论(0)

数字集成电路设计-15-DPI(续)

引言对于SV,无论是构造测试激励,还是模拟硬件的并行行为,DPI都是非常方便的。上次我们介绍了SV里面通过“import”导入并调用C函数。本小节,我们通过一个简单的例子来说明C语言函数如何调用SV的task和function。1,SV部分/* * test.v Rill create for dpi test at 2014-10-20 */ `timescale 1ns/1ns modu...
阅读(3056) 评论(0)

数字集成电路设计-14-DPI

引言在进行IC验证时,尤其是规模较大的时候,单纯用Verilog和SV来构建testbench,可能会稍显吃力。在这种情况下,使用C或者C++等软件语言往往会大大加快验证速度,提高验证效率。PLI,VPI,DPI正是基于这个原因开发的,很多仿真器都会提供支持。之前,我们介绍过VPI的使用,本小结就来说一下更易使用的DPI。1,基本功能还是惯例,通过一个具体的实验来体会DPI的使用。环境:IUS82...
阅读(3152) 评论(0)

数字集成电路设计-13-常用模块集锦

引言C语言,C++语言等软件编程语言吸引我们的一个很重要的原因是他们都能提供非常丰富的函数库供我们使用,大大提高coding的效率。但是像verilogHDL等HDL语言这方面做的比较弱,尤其是可综合的语法,基本没有通用的模块库供我们使用,所以编码效率会比较低。如果我们把平时经常使用的一些模块积累起来,慢慢的标准化,这样以后我们再设计新的电路时,就会方便很多,今天就是开始。1,判断两个信号是否相等...
阅读(3534) 评论(0)

数字集成电路设计-12-状态机的四种写法

引言在实际的数字电路设计中,状态机是最常用的逻辑,而且往往是全部逻辑的核心部分,所以状态机的质量,会在比较大的程度上影响整个电路的质量。本小节我们通过一个简单的例子(三进制脉动计数器)来说明一下状态机的4中写法。1,模块功能由于我们的目的在于说明状态机的写作方式,所以其逻辑越简单有利于理解。就是一个简单的脉动计数器,每个三个使能信号输出一个标示信号。2,一段式状态机的写法,一般有四种,即一段式,两...
阅读(6310) 评论(0)

朝花夕拾-4-shell

引言shell,我们经常会用到,以其强大的功能,会帮助我们解决很多棘手的问题。最近遇到一个问题,要跑很多case,如果串行的执行,需要很久。能不能让他们并行起来,但又不能所有case都并行运行呢?,因为所有case同时运行,机器会挂掉的。1,方式1比较直接的一种方式是,维护两个文件队列(*.start和*.stop)分别记录所有case的运行状态,然后根据并发数量来获取和分配资源。代码如下:mul...
阅读(2471) 评论(0)

OpenRisc-67-OR的汇编

引言之前我们写过OR的裸机程序,写过基于OR的linux设备驱动程序,也反汇编过OR的机器码。本小节,我们将通过一个简单的实验,对OR的汇编(指令集)做一个简单的梳理和测试。1,基本思想要想了解OR的指令集,其实只要查查OpenRISC architecture manual就可以了,但是不是最好的熟悉方式,也没有必要将其所有指令集记下来。我认为,通过一个实际的工程或者例子,从中了解OR的指令集是...
阅读(3830) 评论(9)

数字集成电路设计-11-SystemC

引言对于稍大一点的project,我们再经过算法验证(C语言/C++语言)之后,直接进行RTL设计,往往比较困难,这时,我们就需要一种介于算法验证和RTL设计之间的形式来实现,而SystemC就是其中比较好的。本小节,我们就熟悉一下SystemC。如果你有C++,C以及verilog HDL的编程经验,你会发现SystemC非常容易使用。1,环境构建SystemC是在C++的基础上扩展了的一个硬件...
阅读(3664) 评论(2)

数字集成电路设计-10-关于采用两级触发器实现双时钟域信号同步方法的分析与验证

引言实现双时钟域数据的交换,最常见的方法就是采用双时钟的异步fifo。但是对于单根信号线,如果仍然采用异步fifo就显得非常stupid,这时,往往通过两级触发器来实现同步。那么,两级触发器是如何实现同步的呢?本小节就做一个简单的分析和验证。1,一段代码下面是我刚刚从ORPSoC的工程里看到的一段代码://'ddr2_writeback_done':generate in ddr2_if_clk...
阅读(4329) 评论(0)

OpenRisc-66-基于ORPSoC对linux进行RTL仿真

引言前面,我们介绍过对裸机程序进行RTL仿真,那些裸机程序规模比较小,只有几KB大小。另外,我们也已经实现了针对O_board的SoC进行了RTL仿真(http://blog.csdn.net/rill_zhen/article/details/21190757),本小节,我们将实现在ML501平台上对linux进行RTL仿真。1,DDR2仿真模型的修改针对ML501的ORPSoC工程中,默认配置...
阅读(5327) 评论(0)
160条 共11页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:789312次
    • 积分:12539
    • 等级:
    • 排名:第1231名
    • 原创:134篇
    • 转载:23篇
    • 译文:3篇
    • 评论:478条
    博客专栏
    openrisc

    文章:66篇

    阅读:308388
    最新评论
    统计