type
status
date
slug
summary
tags
category
Property
Nov 30, 2023 02:46 PM
icon
password
属性
属性 1
描述
Origin
URL
Uart模块设计理解验证点的提取画出UART验证环境框架图lab1 基本的连接lab2 APB接口写入数据并读出,从TX发送出去 lab3 通过寄存器模型重新实现一遍lab4 UART基本的接受功能,RX输入由串转并lab5 实现SCBlab6 实现覆盖率的收集Case的添加寄存器的复位检查基本功能(9600)基本功能(检验错误)时钟不同常见问题汇总:TI奥比中光联发科总结提问参考资料
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fb4b545b7-e09f-4427-9f20-7d329646a70d%2FUntitled.png?table=block&id=e1154e24-09d7-4636-b246-e269a4ddec12&t=e1154e24-09d7-4636-b246-e269a4ddec12)
Uart模块设计理解
通用异步收发协议
UART:通用异步收发器。它是一种通用串行数据总线,用于异步通信。
该总线双向通信,可以实现全双工传输和接收。
UART工作原理:是将数据的二进制位一位一位的进行传输。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F49cb73ac-f419-403c-85e5-426223a98e9c%2FUntitled.png?table=block&id=2c2b3fe6-2a64-4e67-af50-48508e703e0a&t=2c2b3fe6-2a64-4e67-af50-48508e703e0a)
发送连接接受
UART1发送从数据总线(data bus)获取并行数据后添加起始位、奇偶校验位和停止位,以创建数据包。接着,数据包在Tx引脚上逐位串行输出。
UART2接收从其Rx引脚上逐位读取数据包。然后,将串行数据转换成并行数据,并删除起始位、奇偶校验位和停止位。最后,将并行数据包传输到接收端的数据总线。
协议就是·标准,定死的。约定俗成
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F60f01b68-ebea-4419-92b8-3ff6ddc4ca20%2FUntitled.png?table=block&id=cc1287ba-ef8b-460d-8d8a-8a4fdcf9e37a&t=cc1287ba-ef8b-460d-8d8a-8a4fdcf9e37a)
校验位:检验是奇数还有偶检验
奇校验:7位,二进制为111,1的个数已经是奇数个了,就配个0,为1110。
偶校验:6位,为1。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F306fef30-64c1-4c5b-8024-d12dab697a29%2FUntitled.png?table=block&id=90c3f9ca-b84b-42ac-8908-cb1d71d5627a&t=90c3f9ca-b84b-42ac-8908-cb1d71d5627a)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F74c1150f-1244-48b9-9723-cf5dececfcdb%2FUntitled.png?table=block&id=06becce1-0af2-4aa5-b846-d9a908ca77cd&t=06becce1-0af2-4aa5-b846-d9a908ca77cd)
注意事项:
当然两个设备使用UART串口通讯时:
1、必须先约定好传输速率(波特率),发送和接收UART之间的波特率只能相差约10%。
2、必须将发送和接收UART配置为相同的数据包结构。
红色为发送逻辑和绿色的接受逻辑()
发送的高八位丢弃。
发送逻辑
UART发送FIFO是一个8位宽,16位深度的内存缓冲区。CPU通过APB总线接口写入的数据存储在FIFO中,UART发送逻辑取发送FIFO中的数据,执行并行到串行转换,控制逻辑输出串行数据流,该串行数据流格式为:起始位、数据位(以LSB开始传输)、奇偶校验位、停止位。
发送FIFO可以被禁用,仅当作一个单字节的保持寄存器。
接收逻辑
UART接收FIFO是一个12位宽,16位深度的内存缓冲区。当UART控制逻辑检测到有效启动脉冲后,接收逻辑将RX端口的串行比特流转换成并行数据,也执行奇偶校验位和帧错误检查,并将数据和它们的状态一起写到接收FIFO中,直到被CPU通过APB接口读出。
接收FIFO也可以被禁用,仅当作一个单字节保持寄存器。
寄存器配置
寄存器是用来存储通过APB接口写入或者读取的数据。
波特率值通过设置寄存器(UARTIBRD和UARTFBRD)来实现;
UART数据包格式、FIFO是否使能、中断是否使能等都是通过配置相应寄存器来实现的。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fbf29a8d4-a640-4e91-b1ca-8606ddef6c2c%2FUntitled.png?table=block&id=c08501f4-58af-4408-a0e2-eac2a6b5871c&t=c08501f4-58af-4408-a0e2-eac2a6b5871c)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fcfaf1bae-7f71-4522-907f-40e231a84785%2FUntitled.png?table=block&id=e3ad26b3-2006-4eac-8806-0ca4ba8dc2a6&t=e3ad26b3-2006-4eac-8806-0ca4ba8dc2a6)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0c6c340b-bdc9-4e1e-90bb-4a3a3d4ca2b6%2FUntitled.png?table=block&id=38faccf5-509c-4041-919b-e7b3e90b1382&t=38faccf5-509c-4041-919b-e7b3e90b1382)
SPEC
寄存器的配制
重要的寄存器有UARTDR\IBRD\FBRD\LCR_H\CR\
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fdfb20f69-81e0-40b4-bf18-88dd09702612%2FUntitled.png?table=block&id=e616d670-72b3-4d3d-8982-b21586425be9&t=e616d670-72b3-4d3d-8982-b21586425be9)
验证点的提取
GPU中晶振就一个,但时钟可以分频,有上百个
模块的验证流程
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F42360e87-520c-4317-acdb-e730797ce8a0%2FUntitled.png?table=block&id=771f81b7-4d59-4b3a-ab7b-4dd3cce93767&t=771f81b7-4d59-4b3a-ab7b-4dd3cce93767)
验证策略和验证方法
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F6a9fc9f9-0871-46b3-8e4e-665ee3484f7a%2FUntitled.png?table=block&id=966b3ea7-586e-4240-b227-19ea8f09aacc&t=966b3ea7-586e-4240-b227-19ea8f09aacc)
提取验证点
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F7a2084ae-bd7e-415a-b91e-a8f63c5f4257%2FUntitled.png?table=block&id=dfa98b4b-161a-4678-89f3-5cf120648d23&t=dfa98b4b-161a-4678-89f3-5cf120648d23)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F02ca4c9b-b11a-4ebd-8094-f489574ce69d%2FUntitled.png?table=block&id=97bda13e-3c2f-419a-a8b3-c7aec08d806f&t=97bda13e-3c2f-419a-a8b3-c7aec08d806f)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F4cb30665-e697-4885-b3fb-24d210494050%2FUntitled.png?table=block&id=80967cee-6978-4853-802e-ce4c7827726d&t=80967cee-6978-4853-802e-ce4c7827726d)
画出UART验证环境框架图
备注:
环境中提供了apb_uvc和uart_uvc,要求将其集成到整个验证环境中使用。
框图描述:
1.DUT有两个接口,分别是uart interface和apb interface .
2.从顶层向下TOP,里面是个大的test,reg_model挂在adapter上,与APB_uvc连接在一起。写在test里面
3.test下面有一个大的test_env,包括apb_uvc和uart_uvc,apb_uvc中mst_agent中有sqr和drv,collector和monitor,config通过test里有两个apb_config和uart_config set进来配制寄存器。uart_uvc有两个agent,一个是active agent,一个是pasive agent。
4.路径有两条:第一条发送路径(transmit),由mst_agent里的drv-RX_agent里的monitor通过下面两个fifo发送到scoreboard里进行比较。第二条路径(receive),是由Tx_agent里的drv发送apb_monitor接受,上面两个fifo进行比较。
5,test中的Vsqr里面有APB_sqr和UART_sqr,负责管理,p_rm是reg_model的指针。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fdc6f9c5d-d351-4e17-8217-f4934e56a10f%2F%E9%AA%8C%E8%AF%81%E6%A1%86%E5%9B%BE.jpg?table=block&id=01d746e1-c8df-4463-ac4e-4f65939563f1&t=01d746e1-c8df-4463-ac4e-4f65939563f1)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F5070f351-66ae-4290-8d3c-57a5d1de5b9d%2FUntitled.png?table=block&id=f82ba697-cd1b-452f-8544-bc8eef41bd37&t=f82ba697-cd1b-452f-8544-bc8eef41bd37)
lab1 基本的连接
1、将apb_uvc和uart_uvc集成到环境中;
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F5da67999-6629-4e1d-868e-79f5dc461aad%2FUntitled.png?table=block&id=02f529d8-2069-4438-975f-d891dd0b50f2&t=02f529d8-2069-4438-975f-d891dd0b50f2)
2、实现virtual sequencer;
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fbdf550c8-5800-45a3-851e-913fff3b6083%2FUntitled.png?table=block&id=bc75ebfe-42d8-4718-8539-a49e39a5307e&t=bc75ebfe-42d8-4718-8539-a49e39a5307e)
修改Package
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F98d8d6ad-9cdf-4fc2-a43e-92ddbd03792c%2FUntitled.png?table=block&id=352867d8-94ee-4042-bb21-696d5aac485f&t=352867d8-94ee-4042-bb21-696d5aac485f)
3、实现base test;
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fe99f5f2e-66e8-452e-aace-9b54a15e1499%2FUntitled.png?table=block&id=a1e4dd30-aefd-4b09-8e2a-60550401f614&t=a1e4dd30-aefd-4b09-8e2a-60550401f614)
4、实现顶层模块,完成DUT例化。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F29db836e-5e72-4e08-8b2b-fa64f4969196%2FUntitled.png?table=block&id=8549ec93-23c0-4b3b-89e7-f9a5c0e11a03&t=8549ec93-23c0-4b3b-89e7-f9a5c0e11a03)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0b1a87ae-682a-42a7-a34b-9862070e9313%2FUntitled.png?table=block&id=48f7415f-3804-4317-91ad-b244dbaa9c08&t=48f7415f-3804-4317-91ad-b244dbaa9c08)
运行结果
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F6aaf9c15-ca40-4135-b7d0-8d4d02c0fe6d%2FUntitled.png?table=block&id=4b4d4af6-b210-45a6-986b-b93de3dc9451&t=4b4d4af6-b210-45a6-986b-b93de3dc9451)
lab2 APB接口写入数据并读出,从TX发送出去
1、先通过apb接口向dut写入数据功能,然后读出该数据(调用apb_uvc里面的sequence即可);
2、将apb接口写入的数据通过dut的tx接口发送出去。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0c8787c9-6f03-459b-b096-ae104ce762ed%2FUntitled.png?table=block&id=99448c64-9d9b-416c-b5b6-5b71868a6b57&t=99448c64-9d9b-416c-b5b6-5b71868a6b57)
连接关系:
在test里面启动vseq在vsqr上。(config_db)
在vseq里面启动seq在下面的sqr上(uvm_do_on)
在vseq里面管理seq,pre_body和post_body:raise和drop.
seq则是配制寄存器和写入数据。
1.1 先在base_test中拓展出名为apb_2_dut_test的test(启动Vseq名为apb_2_dut在vsqr的main_phase上)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0370d0fe-a1e4-4223-b98c-1b2c4e2636e7%2FUntitled.png?table=block&id=b1846f38-28a7-4bbf-b152-befd46a8d5aa&t=b1846f38-28a7-4bbf-b152-befd46a8d5aa)
1.2 实现apb_2_dut,定义里面的读写seq,启动在p_sqr的mst_sqr上。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fc97dc13f-f95b-49d4-a540-00ca4b5ce3cd%2FUntitled.png?table=block&id=ac89e06f-abcd-4771-85e3-995421cfeaa6&t=ac89e06f-abcd-4771-85e3-995421cfeaa6)
1.3建立base_vseq,是vseq, 里面什么都不干,管理seq,真正的seq从里面extend出来。(在vseq里raise和drop);
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fbcfadf19-9a15-4fe7-a07e-d0f12676d9d9%2FUntitled.png?table=block&id=4f0a1725-4d0c-4fcf-9984-f8d18c7af289&t=4f0a1725-4d0c-4fcf-9984-f8d18c7af289)
1.4 建立base_seq,从中extend出来一个apb_config_sequence,在里面配制寄存器。这个是真正的seq,配制寄存器一定要写注释,不然很快就会忘记。
配制完成之后随机十次数据。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F5712021c-2d23-48d5-8bb4-d683bd73d89f%2FUntitled.png?table=block&id=767a3451-4426-411f-8b4d-e034447f9df9&t=767a3451-4426-411f-8b4d-e034447f9df9)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ff54a3649-6e61-425e-b303-d876b0e7e993%2FUntitled.png?table=block&id=02af9a8c-defb-4709-8dbd-743911ccbc23&t=02af9a8c-defb-4709-8dbd-743911ccbc23)
配制基本的寄存器,打开相应的功能,结束后,再写入55,保证能够写入。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F7804298a-7d3a-4390-aab9-d7f9d6a4e6b2%2FUntitled.png?table=block&id=0043a5c6-5a45-406b-a39f-7071003df843&t=0043a5c6-5a45-406b-a39f-7071003df843)
结果
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F50117882-adb0-49d1-9c76-88f7c8f4d974%2FUntitled.png?table=block&id=37763f06-ab2b-44cd-a327-040464acd65b&t=37763f06-ab2b-44cd-a327-040464acd65b)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fef0aa91c-d9b2-4552-8d45-14d8ec54a0fc%2FUntitled.png?table=block&id=cd899aae-8d94-4810-8f1b-baa91cbe50c1&t=cd899aae-8d94-4810-8f1b-baa91cbe50c1)
lab3 通过寄存器模型重新实现一遍
通过寄存器模型实现dut功能的基本配制,可以用脚本自动生成。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F5c038898-bf3e-45e7-9410-5e3a496fd0c6%2FUntitled.png?table=block&id=db429e3d-a1d4-4ae7-b84b-b8adddb6312c&t=db429e3d-a1d4-4ae7-b84b-b8adddb6312c)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F85e8e415-ed4a-4967-9bf6-2dccbbfe5d3a%2FUntitled.png?table=block&id=7f9ed69a-597e-4560-81ce-12f77ba4a269&t=7f9ed69a-597e-4560-81ce-12f77ba4a269)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Febe95c00-dc44-4692-b1b6-a11d7fb7bbfa%2FUntitled.png?table=block&id=56d9304f-4b7d-43db-8147-6e1aba062d53&t=56d9304f-4b7d-43db-8147-6e1aba062d53)
修改base_test,放入寄存器模型和adapter的指针,配制寄存器模型和转换器,并做相应连接。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fcf1e56b9-1a36-40aa-95ed-bd365aaf4a99%2FUntitled.png?table=block&id=8273a67e-d4ad-4bc6-a31f-3abad173844b&t=8273a67e-d4ad-4bc6-a31f-3abad173844b)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ff2faab0b-c3b6-4c6e-a4f5-193050102d5e%2FUntitled.png?table=block&id=979d3305-b8a5-4fa9-b393-1a1b5822693a&t=979d3305-b8a5-4fa9-b393-1a1b5822693a)
增加Vsqr的p_rm的指针
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F3f77dbd1-1528-49c8-a2fe-ceab4b709d5b%2FUntitled.png?table=block&id=2a19f251-9d4f-464a-a59d-03170b92a47b&t=2a19f251-9d4f-464a-a59d-03170b92a47b)
修改package
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ff5cd8b02-55c4-4eb1-bf10-5237c4f66c16%2FUntitled.png?table=block&id=4f3e8b5c-214b-4f08-913a-0b8c85f96dad&t=4f3e8b5c-214b-4f08-913a-0b8c85f96dad)
最后在apb_2_dut的vseq里用写入数据。
这里的p_sqr就是vsqr的类型的一个转换,目的是让object类(seq)可以访问test(component),所以可以直接调用里面的p_rm。这其实就是一个lab2用seq名的一个改写,方便配制寄存器。
启动seq与下面的sqr连接
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F1e4bb0f6-783c-4c3d-9119-06a213495d11%2FUntitled.png?table=block&id=9f874c27-7fe4-4215-bc74-5d41e17ddd28&t=9f874c27-7fe4-4215-bc74-5d41e17ddd28)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fb2bb1b91-df51-4f56-acab-2e1028285585%2FUntitled.png?table=block&id=33203466-ef8f-49bc-8f82-ab71dbacf853&t=33203466-ef8f-49bc-8f82-ab71dbacf853)
lab4 UART基本的接受功能,RX输入由串转并
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F51d979a2-e600-4c75-aba0-7e564a07e9c8%2FUntitled.png?table=block&id=a741d89c-af79-4152-9088-b66776b301da&t=a741d89c-af79-4152-9088-b66776b301da)
修改makefile名字
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ff1f0b851-a871-4cd8-b6e1-afc4ff92d20a%2FUntitled.png?table=block&id=760b2cf8-3631-4691-b80c-0f909bbc1c80&t=760b2cf8-3631-4691-b80c-0f909bbc1c80)
建立新的test名,从test中extrend出来,uart_2_apb建立这个seq,用configdb的方式启动在vsqr的mian_phase上。前面的configdb是配置协议,
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fb4a36d06-7fdd-4e32-b646-36d295735526%2FUntitled.png?table=block&id=6b7b9ef0-8b2b-467f-88fc-68368b4a940f&t=6b7b9ef0-8b2b-467f-88fc-68368b4a940f)
完善vseq,在里面添加uart_2_apb的seq,同样在vseq里面raise和drop,不动。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fc4db8a2e-f821-47eb-a6d4-7ea454fed352%2FUntitled.png?table=block&id=3b8f247d-171e-4dc1-be81-2539552283fa&t=3b8f247d-171e-4dc1-be81-2539552283fa)
extend出新的vseq,管理seq,statue是配制寄存器,value是写入数据。
前门访问是通过总线访问,后门访问是直接修改dut里面的寄存器。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F486c9b8f-78cd-4398-b3da-5320f3988dcb%2FUntitled.png?table=block&id=af6ed2c3-09ec-45a1-8623-1f27cb771c8a&t=af6ed2c3-09ec-45a1-8623-1f27cb771c8a)
建立新的uart_2_apb的seq,并通过uvm do的方式直接启动。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F5291995b-978c-482c-8d51-a3e6c2ba2f9d%2FUntitled.png?table=block&id=d3414daf-5393-43bc-8f56-95827ea2ccf8&t=d3414daf-5393-43bc-8f56-95827ea2ccf8)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fbc4e54a7-635b-4bdc-8841-7bec9f6d359a%2FUntitled.png?table=block&id=bab1cf23-a62e-40c1-a220-b88224143ed1&t=bab1cf23-a62e-40c1-a220-b88224143ed1)
波形如下,
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F06836501-a646-4931-b17b-7c3351b78aea%2FUntitled.png?table=block&id=8a7f56d1-ff6a-4982-87a3-0cbc3e4dbc33&t=8a7f56d1-ff6a-4982-87a3-0cbc3e4dbc33)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F44d7ed4c-dd31-44e8-a101-db4b15b6f9bf%2FUntitled.png?table=block&id=b511f9c4-0317-41fe-8756-08c8157d78bd&t=b511f9c4-0317-41fe-8756-08c8157d78bd)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fb771bf83-8485-4b78-9ff3-3cb1ccf912e3%2FUntitled.png?table=block&id=ec1098ad-0df2-4424-b86b-055696da754c&t=ec1098ad-0df2-4424-b86b-055696da754c)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F904f51dd-5f4a-49a9-bb18-836f5305c9d0%2FUntitled.png?table=block&id=ac4c7ee0-ccd5-40de-8d4f-7b3ef5bc7b79&t=ac4c7ee0-ccd5-40de-8d4f-7b3ef5bc7b79)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F6963bdbf-ae20-46be-b5c2-8f6eb2578c4d%2FUntitled.png?table=block&id=0332f26c-2442-43b1-a2a4-0ee2cf1a3aa2&t=0332f26c-2442-43b1-a2a4-0ee2cf1a3aa2)
lab5 实现SCB
在lab4的基础上实现实现scoreboard,对比dut输入和输出的数据。
目的:自己对比,不用自己每次都去对比看那波形或者log;
需要重点把握两个:功能怎么实现,以及怎么连接。
lab5例1 (1) lab5 例2 (1)lab5 例3 (1)lab5 例4 (1)和框图有关,定义了四个fifo, 17行到23行,定义了4个fifo,
25行,注册
31行,开始,new,在main phase里面,这个是固定写法
40行,在mian phase里写了count,比较transmit和receive的数据。47行和48行是两个task
52行,打印比较了多少次
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F630b4558-656e-4db2-84cf-f2ac2cfaca2b%2FUntitled.png?table=block&id=3557a946-58d3-4522-8450-0d7b76dc1038&t=3557a946-58d3-4522-8450-0d7b76dc1038)
#40行两个count,比较了多少bit。
46行fork join里面定义两个task,一个是transmit,另一个是recieve
52行打印DUT比较成功了多少次,UVC比较成功了多少次。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F7ab26394-97c1-4872-8344-0c4a8a03e9cf%2FUntitled.png?table=block&id=1f15e30a-320f-44c7-b46a-06b0dbc5027f&t=1f15e30a-320f-44c7-b46a-06b0dbc5027f)
#62行,task的实现,这个task实现的是transmit路径,uart-apb,由串转并。
通过一个fork join块,里面有两个while begin 循环.
第一个循环从apb的uvc取数据,get transaction ,如果数据地址等于0方向为write,取出transction ,存到队列q(wr.data)里面去。
第二个while, 连在uart上的,72行,从uart这侧get(frame), 如果(q)wr_data大于0,就pop出来赋给temp1,比较对了,count++,如果对了,successfully,错了就直接最好error,但为了方便调试,就先打印了info。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F782333ab-312f-472a-9f47-b031f6f07aef%2FUntitled.png?table=block&id=29fec714-50c1-48af-ab32-dcea43e6b21c&t=29fec714-50c1-48af-ab32-dcea43e6b21c)
recieve这一段就是相反的。
while1, uart这段get,存起来,
apb这边就pop
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F83268bc7-e9c6-4955-9f6b-55c20ed8147c%2FUntitled.png?table=block&id=ce5aef93-b9f8-4cb3-be03-0e8a3e95598a&t=ce5aef93-b9f8-4cb3-be03-0e8a3e95598a)
env里面进行一个连接,ansys_port连接四个fifo。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F8bb1483e-8ed5-4774-b71e-1f270569a2b6%2FUntitled.png?table=block&id=07f4b5cc-262a-48f1-b6fe-0557e4b81881&t=07f4b5cc-262a-48f1-b6fe-0557e4b81881)
apb_wr和uart_rx都是连到scb里面
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F7f0f4eda-89c6-45a4-9c75-d064422bd57e%2FUntitled.png?table=block&id=5dde3285-50b7-460a-905e-82ff425ce726&t=5dde3285-50b7-460a-905e-82ff425ce726)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F4dee82da-4cc0-467d-8fda-dba174667664%2FUntitled.png?table=block&id=f8f6c798-55ca-42f4-aaa0-5c66e269e4ac&t=f8f6c798-55ca-42f4-aaa0-5c66e269e4ac)
lab6 实现覆盖率的收集
lab6 例1 (1)首先是coverage,#2,3定义两个imp ,monitor里面不仅可以连到fifo里面还可以连到imp。一对多
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F24696b16-193e-419b-83e9-c6d519ebd490%2FUntitled.png?table=block&id=c110eb8d-af91-42c3-ab2b-56f9cae3a3b6&t=c110eb8d-af91-42c3-ab2b-56f9cae3a3b6)
定义了两个coverage,分别是tx-frame和rx-frame。收集frame的payload。
#52主要是例化imp,cov,重命名
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F75b06c5f-9f29-4109-9d88-41cf349f4675%2FUntitled.png?table=block&id=d30ecfb9-9dc7-4ee5-9bcf-cef6cd0b8db6&t=d30ecfb9-9dc7-4ee5-9bcf-cef6cd0b8db6)
转换类型。触发frame,前面的coverage。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F2f2bcbda-801f-468a-b5b7-d9bd66ed4534%2FUntitled.png?table=block&id=2ca71add-9a6a-4a78-a416-8f32b48d3b40&t=2ca71add-9a6a-4a78-a416-8f32b48d3b40)
环境中添加
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F3593c72b-9531-4d79-987e-9666811de836%2FUntitled.png?table=block&id=57d5be6f-179e-4f78-9ece-32ff62230032&t=57d5be6f-179e-4f78-9ece-32ff62230032)
build -phase里面添加coverage
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F202fc17e-0a35-4454-bfdc-1fe7db09e0be%2FUntitled.png?table=block&id=3ab6b511-6d61-434c-93c6-f6876e8bd105&t=3ab6b511-6d61-434c-93c6-f6876e8bd105)
connect 连接上
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0ed98f9b-b857-4c0e-839d-06b5e19692d4%2FUntitled.png?table=block&id=5e49d9ae-f080-4e02-aa91-0f5408dcc567&t=5e49d9ae-f080-4e02-aa91-0f5408dcc567)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fee1912c1-0d70-4067-996d-fd96abc27254%2FUntitled.png?table=block&id=bf2eb0c2-5281-4bab-a641-fcdc2b9e6b36&t=bf2eb0c2-5281-4bab-a641-fcdc2b9e6b36)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F90ea0285-5d98-49f1-9378-7535e5394872%2FUntitled.png?table=block&id=c0562ee7-8e48-448e-a3cf-d5fac22aa4bb&t=c0562ee7-8e48-448e-a3cf-d5fac22aa4bb)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F2d3d2d88-9df4-4d35-92a1-df6c185a03a3%2FUntitled.png?table=block&id=92806fb3-5fe1-4de0-8d38-30de4df9a92b&t=92806fb3-5fe1-4de0-8d38-30de4df9a92b)
Case的添加
寄存器的复位检查
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F817c3e73-16b2-4033-bafd-77ce742212e1%2FUntitled.png?table=block&id=46514091-cdad-45c9-938e-aca03f22d409&t=46514091-cdad-45c9-938e-aca03f22d409)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ff79ea036-417b-4ad5-9d77-67f2bb0113c0%2FUntitled.png?table=block&id=257aaf9d-93ae-4b6e-81d2-2b4aa4261787&t=257aaf9d-93ae-4b6e-81d2-2b4aa4261787)
基本功能(9600)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F7aa03610-8805-4f9c-aa0b-5bec0fc303e8%2FUntitled.png?table=block&id=f1a891ad-daa2-40c3-ab92-67b97e9f1a59&t=f1a891ad-daa2-40c3-ab92-67b97e9f1a59)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F5fdd903c-e01f-4697-8882-923c5f20b33a%2FUntitled.png?table=block&id=eadd6481-f958-4dc2-8009-3ba24c0b9992&t=eadd6481-f958-4dc2-8009-3ba24c0b9992)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F77e47dff-0d22-4f1b-b8ff-26be0ef5147d%2FUntitled.png?table=block&id=8a142d7d-99a7-44b1-9baa-2a4482fdab53&t=8a142d7d-99a7-44b1-9baa-2a4482fdab53)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F6abe3966-7029-4bac-b06e-03c3d9d90d3a%2FUntitled.png?table=block&id=2b14bc53-5eeb-4539-bb7f-0c7a6121e15d&t=2b14bc53-5eeb-4539-bb7f-0c7a6121e15d)
-
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F90d83805-5e89-4758-9b8c-a74343290ebb%2FUntitled.png?table=block&id=a82fb652-ed57-40a1-b0a4-44850d5e0dbf&t=a82fb652-ed57-40a1-b0a4-44850d5e0dbf)
基本功能(检验错误)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ffc95efee-d541-4bf7-800d-c41b1b005a06%2FUntitled.png?table=block&id=db87dc75-e7df-4509-8710-7bebba5f9fce&t=db87dc75-e7df-4509-8710-7bebba5f9fce)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fbf33451f-57db-4b86-9387-f7cc35725f7c%2FUntitled.png?table=block&id=5e9611c6-42e9-44c6-8882-6bd6345f13e2&t=5e9611c6-42e9-44c6-8882-6bd6345f13e2)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F6b819943-ce1c-48f6-b647-9776a2b310ff%2FUntitled.png?table=block&id=19472c97-06ad-4d51-a2fe-0549522bed50&t=19472c97-06ad-4d51-a2fe-0549522bed50)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F47c6a953-6bd1-4b28-b528-3ebab603a65e%2FUntitled.png?table=block&id=b381f6ad-75ce-49f2-88a1-48fa647cc045&t=b381f6ad-75ce-49f2-88a1-48fa647cc045)
时钟不同
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fd798d316-5a30-4eee-ae8f-20431e8d9c51%2FUntitled.png?table=block&id=379a50f6-b170-4312-800a-d608819e8e04&t=379a50f6-b170-4312-800a-d608819e8e04)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F4333defa-1be4-46d0-8649-482bb786d439%2FUntitled.png?table=block&id=7a89e9ce-2687-4632-872c-8fd07699b60e&t=7a89e9ce-2687-4632-872c-8fd07699b60e)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F6b637f72-35f9-4854-9d8e-10e756561790%2FUntitled.png?table=block&id=8d994499-bc82-49e7-bfe7-adc3b43aa20c&t=8d994499-bc82-49e7-bfe7-adc3b43aa20c)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F2c72f623-ead0-430d-912d-ab150f9e9c6f%2FUntitled.png?table=block&id=ebd51d15-461f-48f1-b21a-4a2b5f28b4b9&t=ebd51d15-461f-48f1-b21a-4a2b5f28b4b9)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fbd15bec1-d110-4d55-b5a0-294c14e25cb9%2FUntitled.png?table=block&id=c12c509a-eccc-4e04-9fdf-0d1cecd5d5e9&t=c12c509a-eccc-4e04-9fdf-0d1cecd5d5e9)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fa9d38870-aedd-4751-bf92-827f65c4b158%2FUntitled.png?table=block&id=b9d983b6-4eac-4cbb-82b8-e1df306d174c&t=b9d983b6-4eac-4cbb-82b8-e1df306d174c)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fe652a44f-20ba-4f4c-8b37-257293f756de%2FUntitled.png?table=block&id=61d33646-9aca-42ba-9d61-8a050b2e44d0&t=61d33646-9aca-42ba-9d61-8a050b2e44d0)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F311b73f8-5525-4441-8ba0-c6ea23131c52%2FUntitled.png?table=block&id=b5c770ea-fc58-4356-baa7-dc27c7bbba8d&t=b5c770ea-fc58-4356-baa7-dc27c7bbba8d)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F4fbdd220-69d5-45fd-88e4-03a4a87b59f2%2FUntitled.png?table=block&id=0f51d300-f3fd-4977-8a49-ccdf2cd0620c&t=0f51d300-f3fd-4977-8a49-ccdf2cd0620c)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fde39145e-ddd6-475a-b1fe-4dbfdc4def36%2FUntitled.png?table=block&id=ba208193-61a8-46d8-867d-ca88b3055a05&t=ba208193-61a8-46d8-867d-ca88b3055a05)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fa4c69d14-72b7-4a34-8016-27af538217a7%2FUntitled.png?table=block&id=917d288b-5078-44d3-8f40-5d98fe69c3d5&t=917d288b-5078-44d3-8f40-5d98fe69c3d5)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F0fd307f8-d3d7-4281-93b6-a58b8c4c32e3%2FUntitled.png?table=block&id=6b244d98-7843-4041-b661-7d8cd7f87256&t=6b244d98-7843-4041-b661-7d8cd7f87256)
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F71434fa9-6b94-4dcf-8165-a16e729f0ac5%2FUntitled.png?table=block&id=e802f5d0-3d57-42e4-b746-b2f53b06c11e&t=e802f5d0-3d57-42e4-b746-b2f53b06c11e)
常见问题汇总:
TI
为什么用四个fifo,作用是什么?
你的reference-model怎么写的?
scb怎么写的?
奥比中光
config-db在哪里set哪里get;
波特率有哪几种?
联发科
1.scb怎么比较的
里面有uart的data下有payload,和apbdata比较
ZEKU
有什么bug,覆盖率多少?如何解决的?有多少个case?
总结提问
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fdd338326-0343-41f0-8d29-f3ae39f99118%2FUntitled.png?table=block&id=e9526a0e-692e-489f-b505-d2c7f50cc158&t=e9526a0e-692e-489f-b505-d2c7f50cc158)
配置不一样会如何?
最后在scb中比较的时候,如果发送配置成5位的数据位,接受配置成8位的数据位,就会把数据位认为是校验位和停止位,报错。
2.uart协议是从高往低发还是从低往高发?
是从低往高,LSB-MSB
3.如何知道波特率配置成功了,uvc和dut相当于两个uart,uvc是标准的,买的vip,只要uvc和dut配置一样的,scb里面能够比较成功,说明配置成功了。因为两个互相能够通信基础就是波特率相同。
参考资料
- 作者:Conor
- 链接:https://www.xzhh.top/article/uart
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。