type
status
date
slug
summary
tags
category
Property
Nov 30, 2023 02:46 PM
icon
password
属性
属性 1
描述
Origin
URL
一、异步FIFO1.异步FIFO的基本概念2.异步FIFO的作用3.异步FIFO的读/写指针4.异步FIFO空/满标志5.指针计数器的选择6.二进制与格雷码相互转换三、Spec(1)Function descripton(2)Feature list(3)Block Diagram(4)Interface description(5)Timing四、Design and Verification(1)RTL(2)Test bench(3)Analyse五、Result(1)Write(2)Read(3)Write&Read(4)假满假空现象异步FIFO测试点常见问题项目流程FIFO的基本概念确定VOlab1验证环境搭建建立项目目录在SVTB下建立interface.sv建立fifo_top更新验证环境加入时钟信号和复位单元建立clk gen建立reset gen更新环境lab2 验证环境升级建立env更新top实现写操作实现读操作lab3建立driver建立monitorlab4更新fifo_params.sv建立genertor修改driver修改monitor建立scb更新envlab5理解并添加coverage建立coverage参考资料参考资料
一、异步FIFO
1.异步FIFO的基本概念
对于异步FIFO,主要是实现不同时钟域之间的数据交互。
与同步FIFO有着明显的区别,同步FIFO是使用一个时钟,读写在同一个时钟域内。而异步FIFO使用两个时钟,读/写在不同时钟域内,这个过程就涉及了跨时钟域处理的过程,跨时钟域又会产生亚稳态问题,所以这是异步FIFO设计的一个重点,与同步FIFO一样,通过空满标志衡量存储器的使用情况,那么在异步FIFO中,空满标志产生的条件和方式是什么呢,这也是设计的重点。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F5ccc1b56-39d8-4182-b3f2-92cf45a0e445%2FUntitled.png?table=block&id=fcdb4169-ddfc-4b06-abab-9423a48702a6&t=fcdb4169-ddfc-4b06-abab-9423a48702a6)
2.异步FIFO的作用
- 为什么需要异步FIFO? 用于在不同的时钟域(clock domain)之间安全地传输数据。而同步FIFO主要是解决数据传输速率匹配问题。
- 同步器(synchronizer)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F553c2eb4-53ea-42c5-9e5a-2faff94146c5%2FUntitled.png?table=block&id=45b79f97-0caa-40eb-9644-cb4bda615276&t=45b79f97-0caa-40eb-9644-cb4bda615276)
对于跨时钟域之间的信号传输,需要进行同步(synchronize)处理;一般来讲,我们可以采用同步器(由2~3级FF组成)对
单bit
的信号进行同步操作。注意,这里的打拍子是针对单bit信号而已的。那么为什么不能用简单的同步器(synchronizer)对数据总线 ( 大于1bit)进行同步呢?下面分析一下。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F8886bda5-0715-455c-90d3-09417cde69e8%2FUntitled.png?table=block&id=06755fda-0cea-4b30-8084-f432028fedb1&t=06755fda-0cea-4b30-8084-f432028fedb1)
问※题
:那么对于多bit信号的跨时钟域同步,可采用异步FIFO或者双口RAM。
异步最经典的问题:
(1)在clk0域一个稳定信号,由于designer改变了设计,在ck1域以为仍然稳定,假设是enable=1,其实是变化了的,需要用synal同步。
(2)忽略了ck的频率,打两拍采信号(不同频率是否采到信号慢的采信号可能采不到)
(3)上升沿a&(~ady)下降沿(~a)&ady,沿出来之后触发信号变成电平方便检测。脉冲同步。
(4)同步一个bus,两个模块之间的data交互,要用到异步fifo。
3.异步FIFO的读/写指针
- 写指针(write pointer)
- ▷ 始终指向
下一次
将要写入的数据的地址;
- ▷ 系统复位后(FIFO为空),写指针指向0地址;
- ▷ 每写入一笔数据,写指针地址加1;
- 读指针(read pointer)
- ▷ 始终指向当前要读出的数据的地址;
- ▷ 系统复位后(FIFO为空),读指针指向0地址;
- ▷ 此时的数据是无效的,因为还没有数据写入,空标志有效;
4.异步FIFO空/满标志
![notion image](https://img-blog.csdnimg.cn/0615c52262574de88f4fe92f71f2b463.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAeGxpbnhkdQ==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center&t=d2a4efa3-a42a-4188-a82c-aeb027046610)
- 空标志(empty)
- ▷ 情形一,复位时,两指针都为0;
- ▷ 情形二,当读指针和写指针相等时,空标志=1;
- 满标志(full)
- ▷ 当写指针和读指针最高位不同,其他相等时,满标志=1;
- ▷ 例如,写入的速度快,写指针转了一圈(wrap around),又追上了读指针;
- 空满标志处理
![notion image](https://img-blog.csdnimg.cn/56226febafb44124adfffe912d795b1c.png#pic_center?t=2111284e-2613-42da-8ed3-62770c98692f)
▷ 把读、写指针都额外增加1bit,假如FIFO的深度为8,理论上指针位只需要[2:0]。为了能够正确甄别空、满,需要将指针都扩展到[3:0]。
▷ 其中额外引入的最高位[3],用于辅助甄别是否已经发生了回环(wrap around)的情形。当指针计满FIFO的深度,折回头重新开始时,最高位MSB加1,其它位清0。
▷ 如果读写指针的最高位不同,就意味着写指针速度快,并已经多完成一次回环。
▷ 如果两个指针的最高位相同,就意味着双方完成了相同次数的回环。
5.指针计数器的选择
![notion image](https://img-blog.csdnimg.cn/33d10b6de0594527a9018ef542ad9fe5.png#pic_center?t=936fb101-4ae3-4f5a-b0f8-3ef7cc338b2a)
- 普通二进制计数器(Binary counter)
1.在异步FIFO的设计中,读写两边要互相参考对方的指针,以便生成空、满标志;
2.数据同步问题:> 1 bit,从一个clock domain到另一个clock domain,由于亚稳态现象的出现,会导致数据出错; 极端情形:所有的数据位都变化;
3.解决办法:采用sample & hold机制,引入保持寄存器和握手机制,以确保接收端正确地采集到想要的数据,之后通知发送端,进行下一轮的数据传输;
![notion image](https://img-blog.csdnimg.cn/87318d67391447f18b370343ac21d385.png#pic_center?t=35b737ec-24b5-4f28-bef0-13903ac97bd5)
- 格雷码计数器(Gray code counter):每次当从一个值变化到
相邻
的一个值时,有且仅有一位发生变化;
由于格雷码的这种特性,我们就可以通过简单的synchronizer对指针(多位宽)进行同步操作了,而不用担心由于发生亚稳态而出现数据错误的情形;但是对于我们习惯了二进制码的风格,这种码易读性稍差;对于2的整数次幂的FIFO,采用格雷码计数器器; 接近2的整数次幂的FIFO, 采用接近2的幂次方格雷码修改实现;如果这两种都满足不了,就设计一种查找表的形式实现。所以,一般采用2的幂次方格雷码实现FIFO,会浪费一些地址空间,但可以简化控制电路;需要注意:格雷码计数器适用于地址范围空间为2的整数次幂的FIFO,例如8, 16, 32, 64…
6.二进制与格雷码相互转换
二进制到格雷码:二进制码字整体右移一位,再与原先的码字按位做异或操作。
- 二进制转格雷码
![notion image](https://img-blog.csdnimg.cn/ccfb9edf753044379389912dd017e18e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAeGxpbnhkdQ==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center&t=a7290618-e665-4704-b661-2b2ef3792ca0)
- 格雷码转二进制
![notion image](https://img-blog.csdnimg.cn/1d4ade4407224c36b141e65df5c9c5d6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAeGxpbnhkdQ==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center&t=a1ce6fe5-bc4b-4db4-a937-4d5ec6f49bda)
三、Spec
(1)Function descripton
Asynchronization First in First out 通过控制两个不同时钟域的读/写操作,完成了两个时钟域之间数据的同步处理。
(2)Feature list
- 存储器采用宽度为16,深度为8的regs
- FIFO宽度、深度可配置
- 写时钟为3MHz,读时钟为2MHz
(3)Block Diagram
![notion image](https://img-blog.csdnimg.cn/f2ba0a350021418fa6e705e279a8a6fd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAeGxpbnhkdQ==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center&t=cab93527-662a-464a-9f12-dc3313e9e6b4)
☛ 模块设计可细分为写入接口(Push Interface)、读出接口(Pop Interface)、同步器(sync)和存储介质RAM(regs_array)
(4)Interface description
Signal Name
Width
Direction
Description
(5)Timing
- Write timing
![notion image](https://img-blog.csdnimg.cn/89c0195a1bf74588b8164b1da114daf7.bmp#pic_center?t=3142f7df-ad95-4890-ab2a-8ea0f20020e3)
- Read Timing
![notion image](https://img-blog.csdnimg.cn/e8405aa4a41b45289091c6d79f55f834.bmp#pic_center?t=91a0a05e-9550-492f-a5c3-07f7d815a789)
四、Design and Verification
(1)RTL
(2)Test bench
(3)Analyse
bug1:可以看到本该同步到异时钟域的格雷码写指针和格雷码读指针,却在自己的时钟域下打拍,导致后面产生的空满标志错误。
![notion image](https://img-blog.csdnimg.cn/e2e42befeebd4064b7614387fb94a7ac.png#pic_center?t=9e89aa55-0332-4cab-b0a4-7550a16be86d)
定位到读/写指针格雷码同步代码块
两处更改了对应的时钟沿触发条件
![notion image](https://img-blog.csdnimg.cn/50cbbff69eb144698c47c70271813645.png#pic_center?t=ab8a9225-57f7-41c1-bd37-36e3d1896fbb)
bug2:在只读情况下,写满之后,没有产生满标志。
![notion image](https://img-blog.csdnimg.cn/fe641540523a4ec3a4b7b8cdf5afa847.png#pic_center?t=ed9f5744-c481-4039-a302-5ac31c334d6d)
定位到空满标志代码块
更改满标志的条件,因为在这里是比较格雷码,和原来二进制比较不同,二进制是高位取反,然后所有位相等即产生满标志。格雷码是最高位和次高位取反,然后所有位相同,即产生满标志。
![notion image](https://img-blog.csdnimg.cn/bbf8d536dd6f4133935aa3b55f1a03e9.png#pic_center?t=9f035124-e4fa-44dd-ba82-12df8db42b39)
五、Result
(1)Write
![notion image](https://img-blog.csdnimg.cn/e8ee984e2dc447989b36429347fb676c.png#pic_center?t=a5f3d949-9ca8-4200-9cef-5b840eb9d643)
在只读阶段,读使能,写指针和写地址开始递增,并将data_i依次写入regs_array。在地址增加到写满了8个地址(0~7)后,写指针继续增加(回环,表示第二圈了),写地址回到第一个地址,并产生满标志。(写指针总指向将要写入的地址,前面有说)
(2)Read
![notion image](https://img-blog.csdnimg.cn/242dba4d8989422ba6e2f47212e09fdf.png#pic_center?t=d35cdc55-9aab-44b6-92fd-085d8292d1f1)
在只读阶段,这个阶段regs_array已经存满,开始读出数据,读指针和读地址开始递增,当读到regs_array的第八个存储地址(0~7)后,读指针继续增加(回环,表示第二圈了),读地址回到第一个地址,并产生空标志。(读指针总指向将要读出的地址,前面有说)
(3)Write&Read
![notion image](https://img-blog.csdnimg.cn/2cb142806da7492ca59c0e29650a14ae.png#pic_center?t=c519b9eb-1ea4-4df7-9943-95b5f72c4037)
在读/写同时使能的时候,写操作依次往存储单元里面写入新数据,读操作依次往存储单元里读出数据,结果见上图。
(4)假满假空现象
![notion image](https://img-blog.csdnimg.cn/7f0ae6256c7840168f7d82026b320bb4.png#pic_center?t=77d045d9-1fc8-43aa-a653-8228e1b78f4e)
由上图标号1可以知道,在满标志拉低时刻之前,其实regs_array是一个假满的状态,因为这时刻之前,已经读出了三个数据了;由上图标号2可以知道,读空的时候,产生了空标志,其实regs_array是一个假空的状态,因为这时刻之前,写操作已经写入了两个数据。
※原因:因为在格雷码指针同步的时候,格雷码指针信号在两个时钟域之间存在两个时钟周期的延时,但这并不会影响FIFO的正常工作逻辑。
异步FIFO测试点
- 同时读写,读写数据正确检查
- FIFO满标志位检查
- FIFO空标志位检查
- 写过程中发生写复位,写数据和FIFO满标志位被清空
- 读过程中发生读复位,读数据和读空标志位被清空
- 读写时钟相位相同,异步FIFO能正常工作
- 读写时钟相位不同,异步FIFO能正常工作
- 写时钟等与读时钟,异步FIFO能正常工作
- 写时钟快于读时钟,异步FIFO能正常工作
- 写时钟慢于读时种异步FIFO能正常工作
- 写过程中发生写复位以后,异步FIFO能继续正常工作
- 读过程中发生读复位以后,异步FIFO能继续正常工作
- FIFO满以后,继续往FIFO写数据,异步FIFO不会被卡死,数据被读走以后,异步步FIFO能继续正常工作。
异步FIFO设计:
常见问题
同步复位与异步复位原理
同步复位原理:同步复位只有在时钟沿到来时复位信号才起作用,则复位信号持续的时间应该超过一个时钟周期才能保证系统复位。
异步复位原理:异步复位只要有复位信号系统马上复位,因此异步复位抗干扰能力差,有些噪声也能使系统复位,因此有时候显得不够稳定,要想设计一个好的复位最好使用异步复位同步释放。
同步复位与异步复位的区别主要看是否有时钟信号参与。异步复位不需要时钟参与,一旦信号有效立即执行复位操作;同步信号需要时钟参与,只有有效的时钟信号出现,复位信号才有效。
一、同步复位与异步复位的特点:
同步复位:顾名思义,同步复位就是指复位信号只有在时钟上升沿到来时,才能有效。否则,无法完成对系统的复位工作。用Verilog描述如下:
异步复位:它是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。用Verilog描述如下:
二、同步复位和异步复位的优缺点分析:
1、总的来说,同步复位的优点大概有3条:
a、有利于仿真器的仿真。
b、可以使所设计的系统成为100%的同步时序电路,这便大大有利于时序分析,而且综合出来的fmax一般较高。
c、因为他只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。他的缺点也有不少,主要有以下几条:
a、复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。
b、由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。
2、对于异步复位来说,他的优点也有三条,都是相对应的
a、大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。
b、设计相对简单。
c、异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。
缺点:
a、在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。
b、复位信号容易受到毛刺的影响。
下面我用verilog来演示下同步复位与异步复位。同步复位的verilog程序如下:
综合后的RTL级电路图如下:
![notion image](https://www.elecfans.com/uploads/allimg/171130/2755783-1G1300TG0607.png?t=e5dd28c2-e3da-4008-9519-e4393d9dbbdc)
异步复位的verilog程序如下:
综合后的RTL级电路图如下:
![notion image](https://www.elecfans.com/uploads/allimg/171130/2755783-1G1300TQ2205.png?t=c4385cd3-8cf4-42b5-924b-e33073287a3e)
通过比较显然异步复位消耗的逻辑资源要少些,因此通常的设计中都采用异步复位的方式,需要进一步的学习的话,可以再研究下其它的资料。
三、总结:
所以说,一般都推荐使用异步复位,同步释放的方式,而且复位信号低电平有效。这样就可以两全其美了。
项目流程
FIFO的基本概念
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F1f5717c7-9741-417a-ba8d-fabd4db0fc6e%2FUntitled.png?table=block&id=fc10fcb5-546d-4c94-a4e8-bf436bf498ad&t=fc10fcb5-546d-4c94-a4e8-bf436bf498ad)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F7ba4290f-a860-4d66-9312-73bddd430a56%2FUntitled.png?table=block&id=a7152d97-8e7a-42a8-9968-16dab055884c&t=a7152d97-8e7a-42a8-9968-16dab055884c)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fdc081d2a-f80b-4535-a30e-5b05ae739bdd%2FUntitled.png?table=block&id=b540b407-9696-41a6-9745-17e0d49d0380&t=b540b407-9696-41a6-9745-17e0d49d0380)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F77f18b1f-784f-4ae5-a07b-25eadb56cb8d%2FUntitled.png?table=block&id=d0fc95f8-7373-48a8-9622-d573f18e9116&t=d0fc95f8-7373-48a8-9622-d573f18e9116)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F9a476e70-fb79-47c1-a4ab-8defbf85c2e7%2FUntitled.png?table=block&id=ef1de62e-9cb8-4530-9b5f-773dc324d046&t=ef1de62e-9cb8-4530-9b5f-773dc324d046)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F06cca3d0-0816-40e5-b75b-4dc98692be97%2FUntitled.png?table=block&id=360672d2-97ac-4241-9652-3873803b70a5&t=360672d2-97ac-4241-9652-3873803b70a5)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F8c20a35c-7df6-44c5-88f1-63bc5a746834%2FUntitled.png?table=block&id=5ba7777f-c1a2-4602-bb99-357d05c856ad&t=5ba7777f-c1a2-4602-bb99-357d05c856ad)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F96e85aea-6579-4bac-afd2-6a5b1d3cf7f4%2FUntitled.png?table=block&id=537f01fc-7616-4d4b-bb41-f91035168300&t=537f01fc-7616-4d4b-bb41-f91035168300)
确定VO
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fbcc2ff72-3450-49a9-934c-c9895b91af6a%2FUntitled.png?table=block&id=b2ca036c-dae8-4837-9024-9253f6fff088&t=b2ca036c-dae8-4837-9024-9253f6fff088)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ffaf9d6eb-d375-445e-a497-77c8972611ea%2FUntitled.png?table=block&id=c97b3de9-983b-48a2-9355-7505fce6be2f&t=c97b3de9-983b-48a2-9355-7505fce6be2f)
lab1验证环境搭建
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F7e4cb0b1-d67e-4840-99f4-e4777bd322d5%2FUntitled.png?table=block&id=2b25c506-d5f6-4613-b23c-60f14c01754a&t=2b25c506-d5f6-4613-b23c-60f14c01754a)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F38d25246-2103-4217-a129-d1a3a1a1dd81%2FUntitled.png?table=block&id=7fbebbaa-e4b5-400d-be38-a347d1676f6a&t=7fbebbaa-e4b5-400d-be38-a347d1676f6a)
建立项目目录
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fbfd4df7a-104f-462c-832e-3188a534e035%2FUntitled.png?table=block&id=301a75c8-fb96-4342-b55a-c5233ce4b5aa&t=301a75c8-fb96-4342-b55a-c5233ce4b5aa)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F8ee4c1b2-b1fa-431e-914a-d71c66804043%2FUntitled.png?table=block&id=d26d7587-c962-49c9-ab7a-13e2df8425ec&t=d26d7587-c962-49c9-ab7a-13e2df8425ec)
在SVTB下建立interface.sv
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F16f68d9c-6d5f-48da-8591-c6266fca9615%2FUntitled.png?table=block&id=c4d6070c-3cec-4d8f-a6c7-dcaf8de1f1cb&t=c4d6070c-3cec-4d8f-a6c7-dcaf8de1f1cb)
建立fifo_top
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F9c454f4e-4ca9-4a73-a276-dde0818c35f2%2FUntitled.png?table=block&id=3913f20e-38d2-4b59-aa6b-8cb269c45934&t=3913f20e-38d2-4b59-aa6b-8cb269c45934)
更新验证环境
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F8df85fbb-8677-4c94-a1d9-64ee29d5ae0c%2FUntitled.png?table=block&id=7115cc5c-3b68-4a87-bb0b-41a4c6601e72&t=7115cc5c-3b68-4a87-bb0b-41a4c6601e72)
加入时钟信号和复位单元
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F5c322d36-c3a9-4ca2-b6de-a821e4ebc184%2FUntitled.png?table=block&id=197115cb-1c41-4e90-a1ff-964c5c0b7daa&t=197115cb-1c41-4e90-a1ff-964c5c0b7daa)
建立clk gen
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0b00ba69-31e0-4feb-8ce3-6034e43b12a3%2FUntitled.png?table=block&id=11a124cf-c3c8-4d0a-b783-c572edfcbb88&t=11a124cf-c3c8-4d0a-b783-c572edfcbb88)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F7c3388a9-64a4-4ec3-9469-e46d757cae59%2FUntitled.png?table=block&id=9d7efc5f-ab6c-4b6d-a141-1dd4a4f99e22&t=9d7efc5f-ab6c-4b6d-a141-1dd4a4f99e22)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fc07ff127-2be1-4681-9d32-65de232c4938%2FUntitled.png?table=block&id=f9de33de-327f-4c8d-93a7-680e3be317f9&t=f9de33de-327f-4c8d-93a7-680e3be317f9)
建立reset gen
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F2bd13bc3-201f-4294-b845-af72bf6f52cb%2FUntitled.png?table=block&id=771b99b0-fd78-437a-b71c-ee96dc749ce8&t=771b99b0-fd78-437a-b71c-ee96dc749ce8)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F2c27db37-690f-4336-9acd-e8db8f63542c%2FUntitled.png?table=block&id=d4f36bd2-3a29-4eeb-87af-a45b035f69fc&t=d4f36bd2-3a29-4eeb-87af-a45b035f69fc)
更新环境
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F62a8bd9a-415f-4c39-aa82-30e0bb250665%2FUntitled.png?table=block&id=e7a53929-993d-41cb-9eca-7588b010d80b&t=e7a53929-993d-41cb-9eca-7588b010d80b)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fb0f2951d-b014-403a-8100-8ffb1347811a%2FUntitled.png?table=block&id=361ae4d5-be36-4883-94d2-deeba852b6ab&t=361ae4d5-be36-4883-94d2-deeba852b6ab)
lab2 验证环境升级
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F47c1391a-6bc1-4caf-9b5a-c6c69d71645a%2FUntitled.png?table=block&id=70dd89a6-a0b2-47ad-bf3e-db33fc619580&t=70dd89a6-a0b2-47ad-bf3e-db33fc619580)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fe1d66f73-28bc-4583-9f33-1d5f4876ed7b%2FUntitled.png?table=block&id=3feaeb71-f85b-4697-99e1-269c57c58f89&t=3feaeb71-f85b-4697-99e1-269c57c58f89)
建立env
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ff38570f2-a6ba-45cb-934a-2595ba123820%2FUntitled.png?table=block&id=ad6b4daa-c581-4015-a990-be235e743ded&t=ad6b4daa-c581-4015-a990-be235e743ded)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F98130112-0e9a-4478-9e6f-1986b82d994d%2FUntitled.png?table=block&id=9661769b-d5e9-4787-9a76-8de81ac81ed2&t=9661769b-d5e9-4787-9a76-8de81ac81ed2)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F1b6d774a-3d01-4275-b0b8-63c8d409a9d9%2FUntitled.png?table=block&id=06981bee-c8ab-42e8-b050-3e483beb848d&t=06981bee-c8ab-42e8-b050-3e483beb848d)
更新top
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fa24c251f-a62b-41d1-af7b-8669929c9a57%2FUntitled.png?table=block&id=a0964c25-86df-4228-a943-9148afd27944&t=a0964c25-86df-4228-a943-9148afd27944)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F85e6fd2b-c021-425b-b433-884d7ca6d21f%2FUntitled.png?table=block&id=36f39009-c062-44d9-a1c4-dbff5a4870f9&t=36f39009-c062-44d9-a1c4-dbff5a4870f9)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ff60e2fe5-3ffb-484a-89c4-80786741c4d0%2FUntitled.png?table=block&id=d5b4103f-c266-41d0-a96a-beb55f6a2f80&t=d5b4103f-c266-41d0-a96a-beb55f6a2f80)
实现写操作
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F236f5027-8119-4ba5-bc35-cfa35076d6c5%2FUntitled.png?table=block&id=14bf1b63-3d16-459c-a625-6e9592a067d9&t=14bf1b63-3d16-459c-a625-6e9592a067d9)
实现读操作
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F3a51764d-f746-4b32-bee2-8475506f2bd3%2FUntitled.png?table=block&id=c63247c6-0426-4804-869c-6fdbc0d7ba33&t=c63247c6-0426-4804-869c-6fdbc0d7ba33)
lab3
建立driver
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F9750f5c1-80c4-4001-8ce0-9a82aa74ba1e%2FUntitled.png?table=block&id=30449ab9-181e-4af5-afec-d17e781e7655&t=30449ab9-181e-4af5-afec-d17e781e7655)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F66fc0103-09ea-4b9d-9ebd-b3baffdb99ae%2FUntitled.png?table=block&id=700c506d-7d8b-4662-997e-26996c3f7efd&t=700c506d-7d8b-4662-997e-26996c3f7efd)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fcab4bc97-a7a7-4906-a4f2-aaaaf50944b9%2FUntitled.png?table=block&id=921b6fd1-1a31-433a-9c34-41e0e3445033&t=921b6fd1-1a31-433a-9c34-41e0e3445033)
建立monitor
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F08c4d74a-9b19-45c2-8150-79701554ffd0%2FUntitled.png?table=block&id=dba8a259-b397-4722-87b3-90af50152931&t=dba8a259-b397-4722-87b3-90af50152931)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F544cf0d5-0100-4f64-a341-470472082eba%2FUntitled.png?table=block&id=a4c35d99-c562-4204-8120-5cb71a60ccf5&t=a4c35d99-c562-4204-8120-5cb71a60ccf5)
lab4
更新fifo_params.sv
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F55050d9e-6770-4c49-90f5-ea8c174c7ab5%2FUntitled.png?table=block&id=7e6ef961-3926-4b36-a3ac-65045cfdc29d&t=7e6ef961-3926-4b36-a3ac-65045cfdc29d)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F16860d11-4751-4b85-a65b-3e2ca3477571%2FUntitled.png?table=block&id=a81f93f7-c7ca-461c-86b3-e904b7b9245a&t=a81f93f7-c7ca-461c-86b3-e904b7b9245a)
建立genertor
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F66887952-a5ab-4e4f-895c-7ff98d4b3df1%2FUntitled.png?table=block&id=37a89853-9568-429e-8114-c603c12d4dad&t=37a89853-9568-429e-8114-c603c12d4dad)
修改driver
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F7055b4c8-e210-4438-b800-70766987d7cb%2FUntitled.png?table=block&id=1a879b15-4c91-48e2-ae45-c4ce1c9646c3&t=1a879b15-4c91-48e2-ae45-c4ce1c9646c3)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F5e9942cf-4a28-476e-8e2e-836573d7aa30%2FUntitled.png?table=block&id=52ae6920-9560-44ba-9f59-ff6198b805a8&t=52ae6920-9560-44ba-9f59-ff6198b805a8)
修改monitor
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F4e050274-848c-494b-b619-186bbf27f85b%2FUntitled.png?table=block&id=22eb4267-eded-4d47-a896-c6545dbb230d&t=22eb4267-eded-4d47-a896-c6545dbb230d)
建立scb
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fd529f768-8062-41d6-9ff4-b1b9ea276797%2FUntitled.png?table=block&id=33cb6e97-afe7-45b8-966f-9f9124908b2c&t=33cb6e97-afe7-45b8-966f-9f9124908b2c)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F7dc991fb-8610-4457-959c-ba1751cefdc2%2FUntitled.png?table=block&id=bdeddd4a-341a-4473-bb48-a421ae1cdce5&t=bdeddd4a-341a-4473-bb48-a421ae1cdce5)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F72ce2e49-56e8-4ee5-bb26-198f4ef7888b%2FUntitled.png?table=block&id=de820789-0798-4a04-a376-a9bab46592ba&t=de820789-0798-4a04-a376-a9bab46592ba)
更新env
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F1887c6f3-2967-45b2-8791-92a7cf169bee%2FUntitled.png?table=block&id=cdb43ae6-01ec-45c1-af6c-1045b7cd9c58&t=cdb43ae6-01ec-45c1-af6c-1045b7cd9c58)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F8bbe08bc-bb98-418d-b7df-e7fa03dc8489%2FUntitled.png?table=block&id=a901b6b3-aed5-455e-bec4-3ce9b29540dc&t=a901b6b3-aed5-455e-bec4-3ce9b29540dc)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fa52e7d1b-f5cb-4a0d-81cd-4e436648800e%2FUntitled.png?table=block&id=fcc38015-472c-48ff-a51f-632063ef3648&t=fcc38015-472c-48ff-a51f-632063ef3648)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F706899ad-3325-4e1a-a38d-f72ada10aa7e%2FUntitled.png?table=block&id=b962ad7c-1ef1-4222-980d-4db210c56200&t=b962ad7c-1ef1-4222-980d-4db210c56200)
lab5
理解并添加coverage
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F75f19fb9-e31d-4d43-9c74-077dcd02bfdb%2FUntitled.png?table=block&id=278877e2-e956-48c9-8881-a41435ece7e3&t=278877e2-e956-48c9-8881-a41435ece7e3)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fb1723a17-435c-4152-9c54-817b2bd2882d%2FUntitled.png?table=block&id=22e1ecfc-8da8-4688-92d4-92933c6c0ede&t=22e1ecfc-8da8-4688-92d4-92933c6c0ede)
建立coverage
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fb6cc1aab-acc7-4b18-8952-edb270c189e0%2FUntitled.png?table=block&id=cb8574ca-d1d6-474c-97f3-93575a44ac69&t=cb8574ca-d1d6-474c-97f3-93575a44ac69)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F80ae3adc-8917-4bad-b838-8d2857934f62%2FUntitled.png?table=block&id=2f1a14b6-f2df-4e5a-a1fd-bb396b5525fe&t=2f1a14b6-f2df-4e5a-a1fd-bb396b5525fe)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fa6229c97-24d5-467e-b590-02c3c7b30aa8%2FUntitled.png?table=block&id=9d2b87d4-525b-44de-8994-4e90dee980b3&t=9d2b87d4-525b-44de-8994-4e90dee980b3)
参考资料
参考资料
- 作者:Conor
- 链接:https://www.xzhh.top/article/AFIFO
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。