SoC/ASIC设计原理
SoC/ASIC
Followex
asuka
展开
-
主从边沿触发寄存器、SRAM、DRAM
主从边沿触发寄存器SRAMDRAM原创 2024-02-26 20:05:49 · 440 阅读 · 0 评论 -
寄存器 Flip-Flop
组合逻辑是电平输入和电平输出。(组合逻辑虽然符合人的思维习惯,并且元器件结构简单,但问题是如果输入含有毛刺,输出就有毛刺。eg. 如果输入信号突然从0变成1后又在短时间内恢复0,可以视为毛刺,输出信号受到输入信号的影响,也产生了毛刺)时序逻辑就是以时钟作为驱动源的电路。一个触发器,在时钟的驱动下,将D输入端的信号送到Q端输出。时序逻辑上的时钟,一个周期为一拍(1T)。复位信号rst_n解复位,该触发器才正常工作。触发器的Q端上一拍的D输出。如果是组合逻辑,则Q端应该在D变化的同时发生变化,但时序逻辑的特原创 2024-02-20 14:32:43 · 501 阅读 · 0 评论 -
面积换速度:Carry Look-ahead Adder
And from the different comparisions, we learned higher frequency requires higher gate count.原创 2024-02-19 13:35:33 · 409 阅读 · 0 评论 -
脉冲同步器(快到慢)
【代码】脉冲同步器(快到慢)原创 2024-02-18 14:38:10 · 961 阅读 · 0 评论 -
序列发生器
【代码】序列发生器。原创 2024-02-18 12:41:11 · 575 阅读 · 0 评论 -
上升沿检测
【代码】上升沿检测。原创 2024-02-18 12:35:29 · 403 阅读 · 0 评论 -
Synchronous and Asynchronous FIFO的一些相关问题
是同步fifo还是异步fifo?异步fifo为什么要通过打拍的方式做同步?fifo是基于credit base的,还是握手?如何cover credit耗尽的情况?什么情况下需要用到带反压的fifo?如果fifo不带反压,上游该如何控制读写节奏?fifo余量的检测机制?需不需要做余量检测?fifo内部的存储是用sram还是flip-flop构成的?各自的优缺点是什么?fifo水线怎么开启?用状态机实现fifo水线的控制逻辑?这个fifo的controller对应的interface协议是什么原创 2024-02-17 23:24:22 · 397 阅读 · 0 评论 -
复杂的Synchronous FIFO设计
FIFO,即First Input First Output,是一种先入先出的存储器,其功能是:用户将数据写入该器件进行存储,当用户读数据时,先写入的数据会被先读出,即读出的数据的顺序仍然是写入时的顺序。原创 2024-02-17 19:28:57 · 440 阅读 · 0 评论 -
同步缓冲器设计(Synchronous FIFO)
缓冲器又称为队列,是一种数据暂存的机制。缓冲器存在的必要是因为当数据传出端传出数据时,接收端不一定能实时地接收,如果接收端不能实时地接收,又无缓冲器的存在,数据将不可避免会遗失。如果输出输入端的时钟频率一致,称之为同步缓冲器,如果输出输入端的时钟频率不一致,称之为异步缓冲器。缓冲器能存储的数据个数,称之为其深度,每一个数据有多少位数,称之为其宽度。在使用缓冲器时必须了解,如果输入端不断地将数据写入,而输出端却不去将数据取走的话,就会造成Overflow。反之,若输出端不断地将数据取走,输入端却不将数据写原创 2024-02-17 19:25:56 · 689 阅读 · 0 评论 -
ASIC Design Flow
设计规格阶段(Design Specification)架构与设计划分阶段(Architecture & Design Partition)编程与测试环境设计阶段(RTL Coding & Test Bench)集成和仿真阶段(Integration & Simulation)综合阶段(Synthesis)布局前仿真阶段(Pre-Layout Simulation)布局与布线阶段(Auto Placement & Route, AP&R)布局后仿真/静原创 2024-02-13 11:34:31 · 539 阅读 · 0 评论 -
时钟信号和复位信号的来源
数字的总体复位信号来源于数字电路的电源VDD。模拟电路中有一个电压比较器,它包含一个阈值,当VDD上升到超过该阈值时,复位信号就拉高,否则就是低电平。假设VDD为1.8V,并且比较器的阈值为1.2V,当电压未升至1.2V之前时,复位信号为为0,当高于1.2V时复位信号为1。复位信号在模拟电路中常被称作POR(Power On Reset),即上电时产生的复位信号。复位信号在数字电路中常写作 rst_n, "_n"的意思是低电平有效,用低电平可以复位,取Negative一词的首字母,之所以用低电平复位,而不原创 2024-02-12 15:28:18 · 1168 阅读 · 0 评论 -
电路的时序
延时路径:3条通道.从输入端口到寄存器,in2reg.从寄存器到寄存器,reg2reg.从寄存器到输出端口,reg2out.路径2不仅包括从寄存器AA到寄存器BB的走线,还包括寄存器内部从clk到Q端的延时,即一个信号从被采样到被输出,中间的延迟。分析时序(Timing),就是3种路径上的延时是否满足寄存器的要求,因此分析工具会先辨认出一个设计中有哪些路径,然后将每条路径进行时序分析。路径的端点只有寄存器和端口,没有组合逻辑,因此,分析时序时,不能从组合逻辑开始,也不能以组合逻辑结束。从复原创 2024-02-11 20:32:01 · 376 阅读 · 0 评论 -
信号的状态类型
verilog专用常见的信号状态有4种,分别是0、1、z、x,其中,0和1是数字电路本身的状态,它的本源是零电平和VDD电平。例如,将一根导线接地,它的电平就是0,可以用数字0表示,将一根导线接VDD电平,那么它传出的信号就是1。VDD是数字电源的常用标号,整个芯片的电源常称为VCC,芯片的地常标注为VSS。不同工艺和元器件库需要的电压VDD不同,例如0.9V、1.8V、3.3V等,而同一个元器件库中的所有元器件,其需要的供电电压VDD一般相同的,只有I/O器件等少数元器件,其输入端和控制端是比较低的电压原创 2024-02-11 15:18:47 · 1104 阅读 · 0 评论 -
跨时钟域异步处理方法
信号分为电平信号和脉冲信号,也可以分为单比特信号和多比特信号。原创 2024-01-29 11:11:10 · 414 阅读 · 0 评论 -
03. 驱动和负载
驱动(Driver)和负载(Load)如果将关注点聚焦到一个元器件上,则驱动就是这个元器件的输入信号,负载就是这个元器件的输出信号。如果关注点是芯片,则驱动就是这颗芯片的输入信号,负载就是这个元器件的输出信号。在verdi中,选中一个信号后,点击左上角的driver图标,则会找到此信号的驱动信号也即其作为负载时;点击load图标,则会找到此信号的负载信号也即其作为驱动时。在电路中所讨论的驱动和负载,往往其关注的是整个设计或者设计中的一块局部电路。通常可以将一个信号接入多少个门电路作为衡量驱动和负载大小原创 2024-01-26 15:57:41 · 632 阅读 · 0 评论 -
02. 电平信号和脉冲信号的转换
一个电平信号若想变成脉冲信号,有3种转换方式,一个电平a_latch可以经过处理,获得它的上升沿脉冲(抓取上升沿),下降沿脉冲(抓取下降沿),或同时得到其上升,下降的双沿脉冲(抓取双边沿)。电路设计是一个因果系统,即诱发因素先发生,相应结果后出现。有时,设计需要在电平上升沿或下降沿之前就起脉冲,那就不能用电平转脉冲的方法,而是需要去寻找什么因素引起电平的上升和下降,即去找更早的诱发因素。电平信号表示一种状态,只要这种状态存在,波形就持续为1,状态消失,波形就变为0,而脉冲表示一种命令,或触发信号。原创 2024-01-26 13:40:01 · 1342 阅读 · 0 评论 -
lint error in casez (use spyglass)
使用spyglass是check lint时,check出一个error。spyglass里的error源代码这里,其实4’b0?0?和4’b?0?0已经包含了4’b0000的情况,所以三个分支存在冲突,还是需要全部列出来。之后将源代码修改如下,就没有w398此errors啦。原创 2024-01-15 23:39:19 · 388 阅读 · 0 评论 -
01. for中循环变量i以及数组的range访问
如果i没有初始化的话,dc是报错i必须要初始化,而终点就不需要将终点设置为变量值时就没有问题啦。原创 2024-01-06 16:04:18 · 367 阅读 · 0 评论 -
testbenh里读取bmp文件和其他文件的方法
1. 将整体文件以Byte为单位读入到二维数组里integer SampleImg_prt;integer iCode_sample;reg [7:0] Sample_DATA [0:10_000_000];读入bmp文件并将数据copy到二维数组里。通过Byte单位来拼接出Bmp文件头。2. 通过fopen(),fread(),fseek(),ftell()来读取信息头。原创 2024-01-04 17:29:21 · 373 阅读 · 0 评论 -
testbench里二维数组copy时的问题
在进行如下大小的二维数组copy时vcs仿真时会非常慢,在关闭$fsdbDumpMDA也是一样的,仿真速度会非常慢,然后将二维数组copy关闭后,就仿真非常快。当fopen(),读取一个文件后。并用fread(),将文件的Byte值1B的copy到二维数组时,仿真速度不会受到影响,应该 vcs仿真时针对fread()做了优化,或者值copy时,其实fread把文件的Byte值的指针地址复制而已。原创 2024-01-04 16:48:10 · 373 阅读 · 0 评论 -
pipeline流水线
pipelien流水线clk级流水线function/block级流水线(ping-pong/fifo)pipeline bubblepipeline hazard原创 2023-12-20 21:05:14 · 403 阅读 · 0 评论 -
SpyGlass lint check
Design SetupGoal SetupAnalyze ResultsErrors fix原创 2023-12-13 15:04:11 · 429 阅读 · 0 评论 -
【AXI Stream协议的Master和Slave设计】
由于复位结束后,AXIS_Master里的状态机自动会跳转到发送状态,所以在testbenh里只需要给时钟和复位信号即可。然后在传输完成后进行memory check。TX_FIFO和RX_FIFO中的数据比对成功。TX_FIFO总共有8个数据要发送。原创 2023-10-15 16:05:50 · 1120 阅读 · 2 评论 -
异步FIFO
异步FIFO(Asynchronous First In First Out)1. 前言 由于EDA工具的广泛支持,采用同步电路设计的方法是目前Soc设计的基本要求,但在一个功能复杂的Soc系统中,难免会有异步信号与同步电路交互的问题。特别是在由许多核组成的Soc中,通常采用全局异步局部同步(GALS)的设计。而跨时钟域传输数据时很容易造成亚稳态的现象,本文主要讲解Asyn_FIFO来解决跨时钟域传输多bit信号的问题。2. Asyn_FIFO的结构与原理Asyn_FIFO: 写数据wdata在写原创 2021-08-17 21:48:50 · 323 阅读 · 0 评论