CN104866640A - 一种全fifo电路设计方法及其通用验证平台 - Google Patents
一种全fifo电路设计方法及其通用验证平台 Download PDFInfo
- Publication number
- CN104866640A CN104866640A CN201410065564.3A CN201410065564A CN104866640A CN 104866640 A CN104866640 A CN 104866640A CN 201410065564 A CN201410065564 A CN 201410065564A CN 104866640 A CN104866640 A CN 104866640A
- Authority
- CN
- China
- Prior art keywords
- module
- data
- signal
- corresponding levels
- fifo circuit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明的一种全FIFO电路设计方法及其通用验证平台,涉及大规模集成电路设计及其仿真验证领域,旨在解决现有集成电路芯片接口方式复杂、缺乏通用性,同时也缺乏可通用的集成电路芯验证平台等技术问题。本发明的一种全FIFO电路设计方法,电路中顺次串接的各功能模块均包括输入端、功能逻辑单元和输出端三个部分,功能逻辑单元设于输入端和输出端中间;输入端由串接的本级接收状态机和本级接收FIFO电路组成,发送端由串接的本级发送FIFO电路和本级发送状态机组成;本发明的一种全FIFO电路设计方法的通用验证平台,由测试用例解析模块、前端模块、后端模块、消息检测模块、错误检测模块构成。
Description
技术领域
本发明涉及大规模集成电路设计及其仿真验证技术领域,特别是一种适用于对数字信号做分步处理的FPGA或ASIC芯片电路设计方法及其通用仿真验证平台。
背景技术
在今天变化快速的市场上,芯片能否尽早供应将直接影响产品的市场销售量和价格。这就要求设计人员必须尽快完成产品的设计、测试和制造,然而随着芯片集成度增加和芯片规模扩大,使得设计和验证变得更复杂,需要更长时间周期。因此如何方便、快捷地进行ASIC设计和验证成为技术人员感兴趣的问题。
从设计角度讲,设计的可重用性已经在业界推广了很多年。设计可重用的核心思想就是模块化设计,把设计中特定功能包装成一系列功能模块,并提供标准接口用于模块间互联,其中标准接口可以使用通用的片内总线,如ARM公司的内部先进微控制器总线结构(AMBA,Internal Advanced Microcontroller Bus Architecture),IBM公司的片上设备总线(OPB,On-Chip Peripheral Bus)以及OpenCores维护的Wishbone等,但是这些标准接口是面向复杂度比较高的模块间互联,完成复杂的数据和控制信息的交互。在一些交互比较单一的应用中,也可以使用简化的接口方式,只要是各个模块间都使用统一的方式,也满足设计可重用性的要求。
从验证角度讲,随着芯片集成度增加和芯片规模扩大,验证越来越成为设计的关键。在ASIC设计中,验证时间在整个项目的比重可达50%~75%,因此验证的成败成为了决定整个项目是否成功的关键,如何在验证过程中,尽可能减少工作量成了ASIC设计中核心的问题,所以验证的可重用性和验证自动化成为了验证中急需解决的问题。一般来讲,验证分为模块级和芯片级验证两个层次,首先对各模块做模块级验证,功能正确之后集成在一起做芯片级验证。对于模块级验证,每个模块都需要搭建与之对应的验证平台,编写测试向量等,这些工作有很大的重复性,减少模块级验证工作量能够有效的减少验证的时间,加快开发过程。
在现有的加快设计与验证的专利中,往往都是基于单一方式,或者是基于特殊应用背景不具有通用性。如中国专利CN200510103217.6“一种快速生成逻辑电路的方法”使用Perl脚本的方法自动生成RTL代码,减少人工参与的工作量加快芯片设计过程,与本发明通过系统设计加快芯片的方法完全不同。中国专利CN200810104678.9“视频处理芯片的验证方法和系统”是一种如何对视频处理芯片进行验证的方法和系统,其应用范围单一,不具有通用性。综上所述,现有的专利和技术都没有涉及到通过统一的电路设计和通用的验证平台提高设计和验证的工作效率的方法。
发明内容
本发明旨在解决现有集成电路芯片接口方式复杂、缺乏通用性,同时也缺乏通用的集成电路芯片验证平台等技术问题, 提供一种简单通用的接口方式、通过统一的验证平台即可完成系统中所有模块验证的全FIFO电路设计方法及其通用验证平台。
本发明的目的是通过以下技术方案实现的。
本发明的一种全FIFO电路设计方法,其中电路中各功能模块均包括输入端、功能逻辑单元和输出端三个部分,功能逻辑单元位于输入端和输出端中间;输入端由串接的本级接收状态机和本级接收FIFO电路组成,本级接收状态机接收前一级功能模块输入的交互数据并将数据存入本级接收FIFO电路;发送端由串接的本级发送FIFO电路和本级发送状态机组成,本级发送状态机根据本级发送FIFO电路中是否有数据以及后一级功能模块是否能接收数据把数据从本级发送FIFO电路中读出,并传送给后一级功能模块。
本发明的一种全FIFO电路设计方法,其中相连的前后级功能模块间通过特定的标准化接口进行通讯,该接口包含trdy,irdy,data,frame_start,frame_end五个信号,其中data信号的位宽可由参数调整。
本发明的一种全FIFO电路设计方法,其中本级功能模块的trdy信号分别连接前一级功能模块与后一级功能模块的irdy信号,本级功能模块的irdy信号分别连接前一级功能模块与后一级功能模块的trdy信号,本级功能模块的data信号、frame_start信号、frame_end信号分别对应连接前一级功能模块与后一级功能模块的data信号、frame_start信号、frame_end信号。
本发明的一种全FIFO电路设计方法,其中功能模块间的数据传输包括如下步骤,
步骤一:本级发送端有数据需要发送时,有效frame_start信号一个时钟周期,后一级接收状态机收到该信号后从空闲状态转到接收状态等待本级发送端的数据准备好信号;
步骤二:本级发送FIFO电路内有数据时,本级发送状态机有效本级发送端irdy信号通知后一级接收端,在没有完成该数据传输之前irdy信号会一直有效;
步骤三:如果后一级接收FIFO电路非满,表示其可接收数据,后一级接收状态机有效后一级接收端irdy信号完成一次数据传输,在有效irdy信号一个时钟周期之后有效后一级接收FIFO电路的写指示信号,把数据存入后一级接收FIFO电路;同时会判断后一级接收FIFO电路状态,如果其非满,则会一直有效该irdy信号,否则使irdy无效表明后一级接收端不能再接收数据;
步骤四:本级发送状态机检测到接口上irdy和trdy同时有效后,会判断本级发送FIFO电路中是否还有数据需要发送,如果有,持续有效trdy并且把新的数据放在数据总线上;如果没有则无效trdy信号;
步骤五:完成一帧发送之后,本级发送状态机有效frame_end信号一个时钟周期,后一级接收端状态机收到该信号后从跳到空闲状态等待本级发送端启动下一帧的传输。
本发明的一种全FIFO电路设计方法的通用验证平台,由测试用例解析模块、前端模块、后端模块、消息检测模块、错误检测模块构成,被测式模块一端连接前端模块的输入输出端口,另一端连接后端模块的输入输出端口;前端模块的输入端口连接测试用例解析模块的一个输出端口,其两个输出端口分别使用事件驱动的方式连接一个消息检测模块和一个错误检测模块;后端模块的输入端口连接测试用例解析模块的另一个输出端口,其两个输出端口分别使用事件驱动的方式连接另一个消息检测模块和另一个错误检测模块;前端模块和后端模块分别与待测试模块通过特定的标准化接口进行通讯,该接口包含trdy,irdy,data,frame_start,frame_end五个信号。
本发明的一种全FIFO电路设计方法的通用验证平台,其中所述的前端模块和后端模块均采用任务层、协议层和应用层三层架构,由上层任务调用下层任务完成各层次指定的功能,任务的进入和退出均设置于时钟上升沿。
本发明的一种全FIFO电路设计方法的通用验证平台,其中所述测试用例解析模块通过IO接口连接外部输入设备,该模块的操作包括如下步骤:
步骤一:根据仿真参数读入测试用例文件;
步骤二:调用模块中的指令解析器分析指令,之后将任务嵌入测试环境中;
步骤三:启动仿真,并检测仿真过程中的异常情况;
步骤四:比较仿真结果,完成一个测试用例的仿真。
本发明的一种全FIFO电路设计方法及其通用验证平台和方法的有益效果:
1. 通过本全FIFO电路方法,模块设计人员只需要关注功能的实现而不用关心接口实现方式,大大简化了芯片集成过程;
2. 只需要一个验证平台就可以完成系统中所有模块的验证,省略了模块级验证中的重复劳动;
3. 大大提高了整个芯片设计和仿真的效率,缩短了产品研发周期。
附图说明
图1为全FIFO电路设计的架构和接口连接方式示意图
图2为接口连接方式示意图
图3为本发明中通用验证平台架构示意图
图4为接收状态机状态转移图
图5为接收端接口时序图
图6为发送状态机状态转移图
图7为proc_ramdom_ack任务verilog实现的代码片段
具体实施方式
本发明详细结构、应用原理、作用与功效,参照附图1-7,通过如下实施方式予以说明。
本发明通过如下的两个方面以实现发明目的:
第一是全FIFO电路设计:该设计思想通过统一的架构和标准的接口实现。该设计主要应用在对数字信号做分步处理的FPGA或ASIC芯片电路设计中,具体来讲,信号从输入端送入功能模块,经过功能模块做一系列处理之后再通过输出端送入下一功能模块进行处理。对一个功能模块,全FIFO电路设计的架构参见图1所示的电路实现方框图,输入端由接收状态机和接收FIFO组成,接收状态机负责与上一模块交互数据并且把数据存入接收FIFO,其中最主要的功能是产生与本发明所述的接口方式相匹配的时序;发送端由发送FIFO和发送状态机组成,发送状态机根据发送FIFO中是否有数据以及下一模块是否能接收数据把数据从发送FIFO中读出来送给下一功能模块,其中接收FIFO和发送FIFO大小以及是否需要缓存一定的数据之后才开始处理和发送可以设计成可配置的参数,根据具体的应用随意调整。对一个功能模块,全FIFO电路设计中标准的接口在输入端和输出端都包含下表所示的几个信号:
功能模块间的连接方式如图2所示,前后模块的irdy与本模块的trdy相连,本模块的irdy分别与前后模块的trdy相连,数据、帧开始和帧结束与前后模块的对应信号分别相连。该接口标准的核心思想是只有在时钟有效沿采样到irdy和trdy同时有效时才完成一次数据的传输。具体来讲,前后模块间的数据传输的步骤如下:
步骤一:本级发送端有数据需要发送时,有效frame_start信号一个时钟周期,后一级接收状态机收到该信号后从空闲状态转到接收状态等待本级发送端的数据准备好信号;
步骤二:本级发送FIFO电路内有数据时,本级发送状态机有效本级发送端irdy信号通知后一级接收端,在没有完成该数据传输之前irdy信号会一直有效;
步骤三:如果后一级接收FIFO电路非满,表示其可接收数据,后一级接收状态机有效后一级接收端irdy信号完成一次数据传输,在有效irdy信号一个时钟周期之后有效后一级接收FIFO电路的写指示信号,把数据存入后一级接收FIFO电路;同时会判断后一级接收FIFO电路状态,如果其非满,则会一直有效该irdy信号,否则使irdy无效表明后一级接收端不能再接收数据;
步骤四:本级发送状态机检测到接口上irdy和trdy同时有效后,会判断本级发送FIFO电路中是否还有数据需要发送,如果有,持续有效trdy并且把新的数据放在数据总线上;如果没有则无效trdy信号;
步骤五:完成一帧发送之后,本级发送状态机有效frame_end信号一个时钟周期,后一级接收端状态机收到该信号后从跳到空闲状态等待本级发送端启动下一帧的传输。
在上述步骤中提到的本级发送端、本级发送FIFO电路、本级发送状态机属于一个功能模块,而所提到的后一级接收端、后一级接收状态机、后一级接收FIFO电路属于与前述功能模块相连接的功能模块。对一个功能模块来讲,其输入端对应于接口的接收端,其输出端对应于接口的发送端。
第二是通用验证平台:首先来讲,使用上述的全FIFO设计使得模块间接口方式统一,这就为搭建通用验证平台提供了基础。该验证平台的架构如图3所示,待测试的模块(DUT,Design Under Test)位于中心,被测试平台(Testbench)环包着,Testbench提供输入给DUT并监测和比较模块的输出。其中Testbench由五部分构成,位于上方的是测试用例解析模块(Testcase Parse Module),DUT左边的是前端模块(Front End Module),右边的是后端模块(Back End Module),消息检测模块,错误检测模块。其中前端模块和后端模块与DUT使用上述的标准接口方式连接,在对不同功能模块进行验证的时候只需要修改测试向量(Verification Vector)和基准输出(Gold Output),而不用重新搭建验证平台和是修改其中的模块和接口,这样就做到了使用一个验证平台对不同的功能模块进行验证的目的。
通用验证平台中每个模块的功能和实现方式为:
测试用例解析模块:在本发明中对于验证强调两方面的特性,1)验证可重用,其实现方式在前面已经重点描述了;2)验证自动化,测试用例解析模块在实现该特性时起到了承上启下的作用,它解析测试用例然后调用前端模块和后端模块中的任务(task)完成对功能模块的验证。
前端模块:负责验证DUT的接收端接口时序的正确性,并为DUT产生激励数据,以验证其数据处理功能的正确性。相应地,该模块的验证分为两个阶段,第一阶段为随机化生成各种接口时序,验证DUT的接口时序功能;第二阶段从测试向量文件中提取数据,送到DUT中进行处理。从设计角度,该模块的设计借鉴了TCP/IP协议中分层次的思想,在逻辑上从下到上分为任务层、协议层和应用层三个层次,每个层次的具体功能都是用task的方式来实现的,上层task调用下层task完成指定的功能,但是在写测试用例的时候,各个层次的task可以混合使用。
后端模块:其功能主要为验证DUT的后端接口时序及输出数据的正确性。其功能要求配合DUT的时序接口,并以多种方式来响应,以达到验证的目的;另一方面,把DUT的输出数据存入到文件中,以配合文件比较的高层验证;同时,读入对应于某个testcase的基准输出,和DUT的输出数据达到每周期对比验证,并且把比较的结果写入验证日志文件中方便后期调试。后端模块的设计方式和前端模块一样,也是分为任务层、协议层和应用层三个层次。
上述三个模块中各个层次的功能和实现了哪些task,以及整个验证平台的验证流程将会在后面的具体实施方式中详细说明。
消息检测模块:采样前端模块和后端模块在运行期间发出的消息事件的小模块。有开始监测和结束监测控制信号,能够在testbench中通过控制这两个信号设置监测时间段,并且还可以设置希望监测到的事件个数,当在确定的时间段中监测到设置的发生次数则该模块输出为真。前端模块和后端模块都对应有一个该模块。
错误检测模块:和消息检测模块功能一样。只是监测的是前端模块和后端模块在运行期间发出的ERROR事件。
以下结合附图及具体技术实现细节,对本发明作更进一步的详细说明。
本发明电路设计的架构如图1所示,其工作方式为:接收状态机控制接口信号和接收FIFO的写时能信号把输入数据存入接收FIFO,中间的功能逻辑根据接收FIFO的非空指示信号或者是另外加入的FIFO数据个数计数器把数据从接收FIFO中读出来进行一系列处理之后写入到发送FIFO,发送状态机会根据后一模块的可接收数据指示信号和发送FIFO非空指示信号完成数据的发送操作。其中接收端和发送端电路详细设计如下:
在接收端,接收状态机状态转移图如图4所示,各个状态的定义如下:
S0:空闲状态,初始化之后状态机位于该状态,等待帧开始指示信号;
S1: 准备接收状态,收到帧开始指示信号之后跳到该状态,在该状态判断接收FIFO是否能够接收数据,如果能跳到数据接收状态,否则跳到等待状态。具体设计中,如果功能逻辑的配置操作需要时间,那么状态机停在该状态等待配置完成;
S2:数据接收状态,该状态完成数据的接收。在状态下,如果接收FIFO非满,那么一直使可以接受数据指示信号irdy有效;
S3:等待状态,在该状态等待接收FIFO能够接收数据。
图5为接收端时序图,为了方便说明假设接收FIFO的深度为4,其中时间点说明如下:
t0:在此之前接收状态机位于空闲状态,该时刻采样到frame_start信号有效,状态机跳到准备接收状态;
t1:在准备接受状态判断FIFO满指示信号无效,状态机跳到数据接收状态;
t2:进入数据接收状态之后irdy信号有效,因为此时trdy信号也有效,通过使接收FIFO写指示信号有效完成一次数据接收,t2时刻之后FIFO中数据个数为1,表明完成了一次数据接收,同时因为FIFO满指示无效,故保持irdy信号有效;
t3:trdy信号无效,表明上一模块发送数据还没有准备好,故此时不作任何操作;
t4:完成第二个数据的接收,并且随后的两个时钟有效沿都会接收数据;
t7:前面已经完成了4个数据的接收, FIFO中数据个数已经达到4个,FIFO满指示信号效,故irdy信号无效并且状态机跳到等待状态;
t8:功能逻辑读出了数据使得FIFO非满,状态机从等待状态跳到数据接收状态;
t11:frame_end有效,表示完成了一帧数据的传输,状态机跳到空闲状态,同时irdy信号无效。
在发送端,发送状态机状态转移图如图6所示,各个状态的定义如下:
S0:空闲状态,初始化之后状态机位于该状态,等待发送FIFO非空;
S1: 帧开始状态,当发送FIFO非空或者根据具体设计发送FIFO中数据量达到设计数量之后,发送状态机跳到该状态。在该状态时,与接收状态机类似,如果功能逻辑的配置操作需要时间,那么状态机停在该状态等待配置完成,配置完成之后使得帧开始信号有效;
S2:数据发送状态,该状态完成数据的发送。在状态下,使当前模块数据准备好指示信号irdy有效;
S3:等待状态,当完成一个数据发送之后跳到该状态,根据发送FIFO中是否有数据和帧是否发送完成条件跳到空闲状态完成本次发送,或者是跳到数据发送状态继续发送数据。
发送端接口时序图与接收端接口时序图一样,只是其控制的是frame_start、frame_end和trdy信号。故在此就不再累述了。
本发明验证平台的架构如图3所示,待测试的模块位于中心,被测试平台环包着,Testbench提供输入给DUT并监测和比较模块的输出。在本发明中Testbench由五部分构成,为于上方的是测试用例解析模块,DUT左边的是前端模块,右边的是后端模块,消息检测模块,错误检测模块。其中前端模块和后端模块与DUT使用上述的标准接口方式连接,而消息检测模块和错误检测模块使用事件驱动的方式与前端和后端模块连接在一起。
测试用例解析模块解析测试用例然后调用前端模块和后端模块中的任务(task)完成对功能模块的验证。测试用例是采用功能语言编写的,该功能语言是根据前端模块和后端模块提供的任务而设计的一组指令集。该模块内部有文件IO接口,使其具备了文件的读写功能。该模块的操作步骤为:
步骤一:根据仿真参数读入测试用例文件;
步骤二:调用模块中的指令解析器分析指令,然后把任务嵌入到整个测试环境中;
步骤三:启动仿真,并检测仿真过程中的异常情况;
步骤四:比较仿真结果,完成一个测试用例的仿真。
前端模块负责验证DUT的接收端接口时序的正确性,并为DUT产生激励数据,以验证其数据处理功能的正确性。从设计角度,该模块在逻辑上从下到上分为任务层、协议层和应用层三个层次,每个层次的具体功能如下:
任务层主要完成基于时钟周期的时序生成,所有的任务都以task为前缀,表明其属于任务层(task layer),包括:
任务名称 | 任务参数和功能描述 |
task_clk_gen | 参数:生成时钟名称,时钟频率;功能:生成时钟信号 |
task_reset_gen | 参数:复位信号名称,复位有效持续时间;功能:复位信号产生、结束 |
task_Init_port | 输入端口初始化为默认值 |
task_init_data | 内部变量、数据结构初始化。根据配置参数打开所需文件,并将输入文件中数据读入到仿真RAM中。该过程必须在功能验证的最初阶断执行 |
task_always_ack | 端口时序任务,一直应答方式。进入任务之后前端模块的irdy信号有效 |
task_passive_ack | 端口时序任务,被动应答方式。等待trdy信号有效之后irdy才有效 |
task_delay_ack | 端口时序任务,延迟应答方式。等待参数指定的时钟周期之后irdy有效 |
task_frame_start | 帧开始信号生成 |
task_frame_end | 帧完成信号生成 |
task_sim_control | 仿真控制任务,在该任务中控制仿真结束条件和时间 |
task_data_dump | 数据导出任务,导出波形文件,保存数据到输出文件中 |
其中的三个端口时序任务,帧开始/完成信号生成任务是任务层提供给协议层的接口,协议层通过调用这几个任务完成协议层的功能。数据在仿真RAM的位置是这三个端口时序任务的共同参数,用于指定任务发送的数据。
以图5为例来说明这三个端口时序任务的功能,其中的irdy信号为前端模块到DUT的输出信号。
t0~t2:被动应答任务,在t0进入任务后irdy无效,直到t1时刻检测到trdy有效时irdy才有效。在irdy和trdy同时有效的t2退出任务。该任务中有一个数据被传送。
t2~t4:一直应答任务,在t2进入任务后irdy有效。在irdy和trdy同时有效的t4退出任务。该任务中有一个数据被传送。
t4~t5,t5~t6:都是一直应答任务。
t6~t9:延迟应答任务,在t6进入任务后延迟两个时钟之后的t8时刻,irdy才有效。在在irdy和trdy同时有效的t9退出任务。该任务中有一个数据被传送。
由上述的几个任务描述可以知道端口时序任务的几个共同点:1)进入和退出都在时钟上升沿,保证任务之间是连续的,换句话说就是在所有时刻都对端口信号可控,不会出现异常情况;2)每个任务的退出都是在irdy和trdy同时有效之后的上升沿;3)每个任务内有一次有效的数据传输。
协议层主要负责提供基于帧的数据传输功能,通过调用协议层提供的任务完成一帧的传输。所有的任务都以proc为前缀,表明其属于协议层(protocol layer),包括:
任务名称 | 任务参数和功能描述 |
proc_always_ack | 调用任务层一直应答时序接口任务完成一帧的传输 |
proc_passive_ack | 调用任务层被动应答时序接口任务完成一帧的传输 |
proc_delay_ack | 调用任务层延迟应答时序接口任务完成一帧的传输,延迟为可变参数 |
proc_ramdom_ack | 以随机方式调用任务层的三种应答模式,测试DUT的时序接口 |
proc_error_insert | 错误数据插入任务,其参数为插入的错误数据和插入位置 |
帧长度,帧数据在仿真RAM中的起始地址是上述几个任务的共同的参数。图7以proc_ramdom_ack任务为例给出了一个verilog实现的代码片段,从中可以看出协议层是如何通过调用任务层的任务来完成一帧的传输的。、
应用层主要完成基于激励文件的数据传输,通过调用协议层的任务完成一个激励文件中所有数据的传输。任务都以app为前缀,表明其属于应用层(application layer),包括:
任务名称 | 任务参数和功能描述 |
app_vector_trans | 以随机方式调用协议层的四种帧传输方式完成激励文件的传输。 |
因为本层的任务与DUT的功能密切相关,在此不给出具体的例子。验证人员可以根据DUT的功能设计相应的应用层任务。测试用例调用本层的任务完成系统某种功能的测试。
后端模块主要为验证DUT的后端接口时序,及输出数据的正确性。其功能要求配合DUT的时序接口,并以多种方式来响应,以达到验证的目的;另一方面,读入对应于某个testcase的基准输出,和DUT的输出数据达到每周期对比验证,并且把比较的结果写入验证日志文件中。后端模块各层提供的数据传输任务和前端模块的任务基本相同,只需要把其中的数据驱动修改为数据保存。
本发明的验证平台架构借鉴了用总线功能模型使得验证环境层次化的方法。这种层次化的结构保证了各个层次的验证模块的开发可以同时进行,提高了开发效率。并且将集成电路测试环境的开发复杂度分散到了几个不同的层次中,大大简化了测试环境的搭建难度。但是本发明中阐述的通过电路接口统一和验证平台通用的方法是一种全新的ASIC设计和验证思想,大大提高了设计效率,省略了验证中的重复劳动,减少了工作量,与现有方案相比提高了整个芯片设计和仿真的效率,缩短了产品研发周期。
按照本发明的技术方案,在申请人的一款MJPEG的编码芯片中已经得以实现。该芯片包括离散余弦变换,量化,行程编码和范式哈夫曼编码四个功能处理模块,其模块间以及模块与外部的接口都使用本发明说明的标准接口方式,在测试中,只写了一个测试平台,仅仅修改测试向量就实现了模块级以及整个芯片的仿真。
由上可见,本发明技术方案通过电路接口设计统一和验证平台通用的设计思想,使得模块设计人员只需要关注模块功能实现而不用关心其接口方式,提高设计效率,并且只需要一个验证平台就可以完成系统中所有模块的验证,省略了模块级验证中的重复劳动减少了工作量,与现有方案相比大大提高了整个芯片设计和仿真的效率,缩短了产品研发周期。
Claims (7)
1.一种全FIFO电路设计方法,其特征在于:电路中各功能模块均包括输入端、功能逻辑单元和输出端三个部分,功能逻辑单元位于输入端和输出端中间;输入端由串接的本级接收状态机和本级接收FIFO电路组成,本级接收状态机接收前一级功能模块输入的交互数据并将数据存入本级接收FIFO电路;发送端由串接的本级发送FIFO电路和本级发送状态机组成,本级发送状态机根据本级发送FIFO电路中是否有数据以及后一级功能模块是否能接收数据把数据从本级发送FIFO电路中读出,并传送给后一级功能模块。
2.如权利要求1所述的一种全FIFO电路设计方法,其特征在于:相连的前后级功能模块间通过特定的标准化接口进行通讯,该接口包含trdy,irdy,data,frame_start,frame_end五个信号,其中data信号的位宽可由参数调整。
3.如权利要求2所述的一种全FIFO电路设计方法,其特征在于:本级功能模块的trdy信号分别连接前一级功能模块与后一级功能模块的irdy信号,本级功能模块的irdy信号分别连接前一级功能模块与后一级功能模块的trdy信号,本级功能模块的data信号、frame_start信号、frame_end信号分别对应连接前一级功能模块与后一级功能模块的data信号、frame_start信号、frame_end信号。
4.如权利要求2或3所述的一种全FIFO电路设计方法,其特征在于:功能模块间的数据传输包括如下步骤:
步骤一:本级发送端有数据需要发送时,有效frame_start信号一个时钟周期,后一级接收状态机收到该信号后从空闲状态转到接收状态等待本级发送端的数据准备好信号;
步骤二:本级发送FIFO电路内有数据时,本级发送状态机有效本级发送端irdy信号通知后一级接收端,在没有完成该数据传输之前irdy信号会一直有效;
步骤三:如果后一级接收FIFO电路非满,表示其可接收数据,后一级接收状态机有效后一级接收端irdy信号完成一次数据传输,在有效irdy信号一个时钟周期之后有效后一级接收FIFO电路的写指示信号,把数据存入后一级接收FIFO电路;同时会判断后一级接收FIFO电路状态,如果其非满,则会一直有效该irdy信号,否则使irdy无效表明后一级接收端不能再接收数据;
步骤四:本级发送状态机检测到接口上irdy和trdy同时有效后,会判断本级发送FIFO电路中是否还有数据需要发送,如果有,持续有效trdy并且把新的数据放在数据总线上;如果没有则无效trdy信号;
步骤五:完成一帧发送之后,本级发送状态机有效frame_end信号一个时钟周期,后一级接收端状态机收到该信号后从跳到空闲状态等待本级发送端启动下一帧的传输。
5.一种全FIFO电路设计方法的通用验证平台,其特征在于:由测试用例解析模块、前端模块、后端模块、消息检测模块、错误检测模块构成,被测式模块一端连接前端模块的输入输出端口,另一端连接后端模块的输入输出端口;前端模块的输入端口连接测试用例解析模块的一个输出端口,其两个输出端口分别使用事件驱动的方式连接一个消息检测模块和一个错误检测模块;后端模块的输入端口连接测试用例解析模块的另一个输出端口,其两个输出端口分别使用事件驱动的方式连接另一个消息检测模块和另一个错误检测模块;前端模块和后端模块分别与待测试模块通过特定的标准化接口进行通讯,该接口包含trdy,irdy,data,frame_start,frame_end五个信号。
6.如权利要求6所述一种全FIFO电路设计方法的通用验证平台,其特征在于:所述前端模块和后端模块均采用任务层、协议层和应用层三层架构,由上层任务调用下层任务完成各层次的指定的功能;任务的进入和退出均设置于时钟上升沿。
7.如权利要求6所述一种全FIFO电路设计方法的通用验证平台,其特征在于:所述测试用例解析模块通过IO接口连接外部输入设备,该模块的操作包括如下步骤,
步骤一:根据仿真参数读入测试用例文件;
步骤二:调用模块中的指令解析器分析指令,之后将任务嵌入测试环境中;
步骤三:启动仿真,并检测仿真过程中的异常情况;
步骤四:比较仿真结果,完成一个测试用例的仿真。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410065564.3A CN104866640A (zh) | 2014-02-26 | 2014-02-26 | 一种全fifo电路设计方法及其通用验证平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410065564.3A CN104866640A (zh) | 2014-02-26 | 2014-02-26 | 一种全fifo电路设计方法及其通用验证平台 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104866640A true CN104866640A (zh) | 2015-08-26 |
Family
ID=53912466
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410065564.3A Pending CN104866640A (zh) | 2014-02-26 | 2014-02-26 | 一种全fifo电路设计方法及其通用验证平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104866640A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126854A (zh) * | 2016-07-01 | 2016-11-16 | 合肥海本蓝科技有限公司 | 一种软硬件协同仿真交易器和仿真系统 |
CN106873447A (zh) * | 2017-01-10 | 2017-06-20 | 南开大学 | 一种基于fpga的机器人模型算法实现方法 |
CN109146077A (zh) * | 2018-08-01 | 2019-01-04 | 何安平 | 一种sat求解器 |
CN112416686A (zh) * | 2020-12-02 | 2021-02-26 | 海光信息技术股份有限公司 | 芯片的验证方法、验证装置以及存储介质 |
CN118467277A (zh) * | 2024-07-11 | 2024-08-09 | 深圳星云智联科技有限公司 | 先进先出队列验证系统、方法、设备以及集群 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1708080A1 (en) * | 2005-03-31 | 2006-10-04 | STMicroelectronics Pvt. Ltd | Configurable length first-in first-out memory |
CN1928877A (zh) * | 2006-08-17 | 2007-03-14 | 电子科技大学 | Soc软硬件一体化设计验证方法 |
CN201212997Y (zh) * | 2008-06-30 | 2009-03-25 | 中国船舶重工集团公司第七〇九研究所 | 一种快速、大容量的fpga联机测试装置 |
-
2014
- 2014-02-26 CN CN201410065564.3A patent/CN104866640A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1708080A1 (en) * | 2005-03-31 | 2006-10-04 | STMicroelectronics Pvt. Ltd | Configurable length first-in first-out memory |
CN1928877A (zh) * | 2006-08-17 | 2007-03-14 | 电子科技大学 | Soc软硬件一体化设计验证方法 |
CN201212997Y (zh) * | 2008-06-30 | 2009-03-25 | 中国船舶重工集团公司第七〇九研究所 | 一种快速、大容量的fpga联机测试装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126854A (zh) * | 2016-07-01 | 2016-11-16 | 合肥海本蓝科技有限公司 | 一种软硬件协同仿真交易器和仿真系统 |
CN106126854B (zh) * | 2016-07-01 | 2019-06-25 | 合肥海本蓝科技有限公司 | 一种软硬件协同仿真交易器和仿真系统 |
CN106873447A (zh) * | 2017-01-10 | 2017-06-20 | 南开大学 | 一种基于fpga的机器人模型算法实现方法 |
CN106873447B (zh) * | 2017-01-10 | 2019-02-01 | 南开大学 | 一种基于fpga的机器人模型算法实现方法 |
CN109146077A (zh) * | 2018-08-01 | 2019-01-04 | 何安平 | 一种sat求解器 |
CN109146077B (zh) * | 2018-08-01 | 2021-10-19 | 何安平 | 一种sat求解器 |
CN112416686A (zh) * | 2020-12-02 | 2021-02-26 | 海光信息技术股份有限公司 | 芯片的验证方法、验证装置以及存储介质 |
CN118467277A (zh) * | 2024-07-11 | 2024-08-09 | 深圳星云智联科技有限公司 | 先进先出队列验证系统、方法、设备以及集群 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107038280B (zh) | 一种软硬件协同仿真的验证系统及其方法 | |
CN108737187B (zh) | 一种can总线故障模拟系统及故障模拟方法 | |
CN100573537C (zh) | 一种soc芯片系统级验证系统及方法 | |
US8281280B2 (en) | Method and apparatus for versatile controllability and observability in prototype system | |
US9495492B1 (en) | Implementing synchronous triggers for waveform capture in an FPGA prototyping system | |
CN101499937A (zh) | 一种基于fpga的软硬件协同仿真验证系统及方法 | |
CN101093521B (zh) | 一种fpga仿真装置及其方法 | |
CN111064449A (zh) | 一种基于uvm平台的数字降采样滤波器的验证平台及方法 | |
CN104866640A (zh) | 一种全fifo电路设计方法及其通用验证平台 | |
US20040078179A1 (en) | Logic verification system | |
Sun et al. | Design of FPGA-based multimedia node for WSN | |
CN114417768B (zh) | 一种以太网芯片的数模混合仿真方法及系统 | |
CN101102566B (zh) | 一种手机jtag调试接口信号设计方法及其调试方法 | |
CN101153892A (zh) | 现场可编程门阵列输入输出模块验证方法 | |
CN102480467A (zh) | 一种基于网络通讯协议的soc软硬件协同仿真验证方法 | |
CN105653409B (zh) | 一种基于数据类型转换的硬件仿真器验证数据提取系统 | |
CN103376340A (zh) | 一种转接板、多平台串行测试系统及方法 | |
CN201522707U (zh) | 基于fpga的软硬件协同仿真验证系统 | |
CN102495552A (zh) | 面向星载电子系统的实时仿真系统 | |
CN101719177B (zh) | 片上系统建模和仿真的方法及装置 | |
CN111078614A (zh) | 一种基于fpga的功能模块 | |
CN103378994A (zh) | 一种通信设备的测试方法及终端 | |
CN106295048A (zh) | 一种数字芯片功能验证方法及系统 | |
CN104200846A (zh) | 一种嵌入式prom测试系统及实现方法 | |
CN101377795A (zh) | 一种工业便携式终端专用soc芯片逻辑验证方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150826 |
|
WD01 | Invention patent application deemed withdrawn after publication |