赞
踩
芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球 |
---|
四社区联合力荐!近500篇数字IC精品文章收录! |
【数字IC精品文章收录】学习路线·基础知识·总线·脚本语言·芯片求职·EDA工具·低功耗设计Verilog·STA·设计·验证·FPGA·架构·AMBA·书籍 |
哲库科技的笔试较难,考试使用双机位进行监考,考试覆盖的内容包括设计知识,验证知识,综合知识等多方面内容,其中也会涉及到AMBA总线和高数中的级数等相关内容
具体题目如下
AMBA总线中支持乱序传输的是AXI
For_loop可综合吗
强制缺失,一致性缺失,容量缺失哪一个没有办法通过增加内存取得
SDC全称:Synopsys design constraints
扔骰子,平均几次可以投出一个6
哪种timing expection准确而且副作用小
等边三角形,蚂蚁同速度任意方向走,碰头的概率
哪一级做低功耗最有效
乘法器m[3:0]是由ab[1:0]乘出来的,m[2]=什么
布尔代数式的化简
2个8位有符号数取平均值和实际的误差可能的取值
4个8位无符号数取平均值和实际的误差可能的取值
同步FIFO算深度
计算机组成原理中,读数据和传数据有一个比例关系,前一个速度提升一倍,算总体的提升量
Verilog与电路的综合对应,几道题
cpu需要包含的命令类型
CPU 需要包含的命令类型主要包括以下几种:
- 算术指令(Arithmetic Instructions):用于执行基本的算术运算,如加法、减法、乘法、除法等。例如,ADD(加法)、SUB(减法)、MUL(乘法)、DIV(除法)等指令。
- 逻辑指令(Logic Instructions):用于执行逻辑运算,如与、或、非、异或等。例如,AND(与)、OR(或)、NOT(非)、XOR(异或)等指令。
- 移位指令(Shift Instructions):用于对数据进行位移操作,如左移、右移等。例如,LSL(逻辑左移)、ASR(算术右移)等指令。
- 控制指令(Control Instructions):用于控制程序的执行流程,如跳转、循环、分支等。例如,JMP(无条件跳转)、JZ(零标志跳转)、LOOP(循环指令)等指令。
- 存储指令(Memory Instructions):用于数据的读写操作,包括从内存中读取数据和将数据写入内存。例如,LOAD(读取)、STORE(存储)等指令。
- 状态指令(Status Instructions):用于获取和设置 CPU 的状态信息,如标志位、状态寄存器等。例如,SETF(设置标志位)、GETF(获取标志位)等指令。
- I/O 指令(I/O Instructions):用于进行输入输出操作,与外部设备进行数据交换。例如,IN(输入)、OUT(输出)等指令。
以上是 CPU 需要包含的一些常见命令类型,不同的 CPU 架构和应用场景可能会有所不同,但基本上都会涵盖这些类型的指令。这些指令通过编码成二进制形式,在 CPU 内部进行解码和执行,完成对数据和控制流的处理。
risk5包含的指令集都有什么
RISC-V(RISC Five)是一种开放的、基于精简指令集(RISC)架构的指令集架构(ISA)。RISC-V 指令集包括以下几种基本指令集和标准扩展:
- RISC-V 基本指令集(RV32I/RV64I/RV128I):
- RV32I:32位整数基本指令集。
- RV64I:64位整数基本指令集。
- RV128I:128位整数基本指令集。
- RISC-V 整数乘除扩展(M):
- RV32M:32位整数乘除扩展,包含乘法和除法指令。
- RV64M:64位整数乘除扩展,包含乘法和除法指令。
- RISC-V 原子指令扩展(A):
- RV32A:32位原子指令扩展,包含原子读-修改-写指令。
- RISC-V 浮点指令扩展(F):
- RV32F:32位单精度浮点指令扩展,包含单精度浮点运算指令。
- RV64F:64位单精度浮点指令扩展,包含单精度浮点运算指令。
- RISC-V 双精度浮点指令扩展(D):
- RV32D:32位双精度浮点指令扩展,包含双精度浮点运算指令。
- RV64D:64位双精度浮点指令扩展,包含双精度浮点运算指令。
- RISC-V 压缩指令扩展(C):
- RV32C:32位压缩指令扩展,使用16位指令格式进行指令编码。
以上是 RISC-V 中常见的指令集和标准扩展,根据具体的应用需求,可以选择相应的指令集和扩展来设计 RISC-V 架构的处理器。RISC-V 的开放性使得它受到了广泛的关注和应用,逐渐成为一种颇受欢迎的指令集架构。
验证的方法比对模型
乱序和分支
在计算机体系结构和指令集架构中,“乱序”(Out-of-Order)和 “分支”(Branch)是两个不同的概念:
1. 乱序(Out-of-Order):
乱序执行是一种优化技术,用于提高处理器的执行效率和性能。传统的顺序执行指令的方式中,处理器会按照指令在程序中的顺序依次执行,如果某条指令因为数据相关性或其他原因无法执行,则后续指令必须等待。而乱序执行允许处理器在保证程序语义正确的前提下,按照可执行性来选择指令执行的顺序,从而提高指令级并行度和执行效率。这样处理器可以在某些情况下继续执行其他指令,而不必等待阻塞的指令。
————————————————————————————————————
2. 分支(Branch):
分支是指程序中的条件跳转指令,例如 if、while 等语句。当处理器执行到分支指令时,需要根据分支条件来决定下一条要执行的指令地址。分支指令可能会导致处理器的流水线(Pipeline)中的指令失效,因为分支指令之后的指令的执行取决于分支条件的结果。处理器需要等待分支指令执行结果,才能确定下一条要执行的指令。
————————————————————————————————————
综合来说,乱序是一种处理器执行优化技术,通过调整指令执行顺序来提高并行度和性能;而分支是程序中的控制流程指令,用于根据条件选择不同的执行路径。在处理器中,分支指令可能会影响流水线的效率,因为需要等待分支条件的结果才能继续执行后续指令。乱序执行可以在一定程度上减轻分支对处理器性能的影响。
uvm的数据流是什么样子的
在 UVM(Universal Verification Methodology)中,数据流通常是指用于数据传递和交互的机制,用于在不同的 UVM 组件之间传递和共享数据。UVM 中的数据流主要体现在以下几个方面:
- UVM Transactions(事务):UVM 中的事务用于在不同的 UVM 组件之间传递数据。事务是一个抽象的数据结构,可以包含需要在测试环境中传递的数据。通常,在测试中,UVM 的驱动(Driver)组件产生事务,UVM 的监控器(Monitor)组件接收并处理这些事务,然后将数据提供给其他组件,如 Scoreboard、Sequencer 等。
- UVM Sequences(序列):UVM 中的序列用于生成和控制测试用例的数据流。序列定义了一系列的事务操作,可以包含多个事务,用于描述测试场景的数据流程。测试中的 Sequencer 组件会控制序列的执行,将事务发送到驱动组件。
- UVM Scoreboard(记分板):UVM 的记分板用于比较和验证实际产生的数据和期望的数据之间的差异。测试中的监控器会收集实际的数据事务,并通过 Scoreboard 与预期的数据进行比较,从而验证测试是否通过。
- UVM TLM(Transaction Level Modeling):TLM 是一种高层次的数据流建模方法,用于描述组件之间的通信和交互。TLM 可以实现数据的抽象和解耦,使得组件之间的数据流程更加灵活和可扩展。
- UVM Registers(寄存器):UVM 中的寄存器用于表示被测设备的寄存器和寄存器字段。UVM 提供了寄存器层次结构的抽象,可以方便地访问和操作寄存器的数据。
通过这些机制,UVM 可以实现灵活的数据流动,并支持复杂的测试场景和数据交互。各个 UVM 组件之间通过事务和序列的传递,实现了高效的测试数据流动和验证。
axi的outstanding
“Outstanding” 指的是在 AXI 总线上可以同时存在的未完成的事务数量。AXI 总线支持同时进行多个事务,这些未完成的事务即为 “Outstanding” 事务。这种并行处理能力使得 AXI 总线能够提供高效的数据传输和并发访问。
axi ahb的对齐执行非对齐
对齐执行(Aligned Execution):
对齐执行指的是对数据传输进行对齐,即传输的数据在总线上的地址和数据宽度之间是对齐的。例如,在 AXI 或 AHB 总线上,如果传输的数据宽度是 32 位(4 字节),那么数据的起始地址应该是 4 的倍数,这样数据传输是对齐的。
对齐执行有利于提高总线的传输效率和性能,因为总线传输对齐数据可以更高效地使用总线带宽,减少传输的周期数,提高数据传输速率。
非对齐执行(Unaligned Execution):
非对齐执行指的是数据传输时,数据的起始地址和数据宽度之间不是对齐的。例如,在 AXI 或 AHB 总线上,如果传输的数据宽度是 32 位(4 字节),但是数据的起始地址不是 4 的倍数,那么数据传输就是非对齐的。
非对齐执行会增加总线传输的复杂性和延迟,因为需要多次传输来完成非对齐数据的读写,这会降低总线的性能和效率。
手撕同步FIFO
讲解项目经理相关
非2^N的FIFO怎么设计?
读快写慢FIFO深度计算
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。