时序约束和综合
时钟频率
# 时钟单位为ns,2ns对应500M时钟频率
create_clock -period 2 [get ports clk]
skew
# 设置时钟的skew,即上升沿之间的误差,当前设置为0.3ns
set_clock_uncertainty -setup 0.3 [get_clocks CLK]
transition
# 设置时钟上升沿的转化时间
set_clock_transition -max 0.15 [get_clocks CLK]
latency
# 设置晶振源到时钟输入端的延时
set_clock_latency -max 0.7 [get clocks CLK]
input delay
# 0.6的值为电路M的最大时间,从FF1的Q端到到下一个设计的A端口需要的时间
以Ck的上升沿作为计算的起点。
M和N为两块电路,总延时不变的情况下,M给定约束,则综合工具尽可能减少N部分的时间。
set_input_delay -max 0.6 -clock Clk [getports A]
output delay
# 给定了外部电路FF4中的T的延时总为0.8。
以CLk作为时钟参考,上升沿开始计算,信号从S到T的的总时间一定,T已知,那么S最大值可由综合工具得出
set_output_delay -max 0.8 -clock Clk [getports B]
input transition
输入的充电时间,从低电平到高电平需要的时间
set_input_transition 0.12 [get_ports A]
set load
# 设置电容负载最大值,当前设定为0.03
set load [expr{30.0/1000}] [get ports B]
输出sdc
# 输出sdc
write_sdc xxxx.sdc(新思约束文件信息)
# 输出网表和sdc文件
write -f ddc -hier -output xxxx.ddc(网表和sdc文件信息)
# 输出网表
write -f verilog -hier -output xxxx.gv(网表文件,额外的sdf标准延时文件用于反标到gv文件上,做后仿真)
design_version内的约束和输出设置
如设置线载模型
如输出报告
综合的等级
编译划分为三个部分,
- 架构级别的调整
- 级别的优化,即使用什么类型的逻辑单元完成功能,与门还是异或门?
- 确定好使用的逻辑单元后,使用什么样的器件完成功能,使用型号1的与门,还是型号2的与门?
编译有两种方式
compile 预编译,普通编译
compile_ultra 超级编译,尽可能优化
跨时钟产生的问题
手册:SpyGlass® CDC Submethodology (for GuideWare 2.0 xxxx)
亚稳态产生
亚稳态产生的根本原因是建立保持时间不够。设计时不可控的外界因素,则是工艺、温度、电压、电磁波等的影响。
设计问题主要是时钟采样频率、采样位置、复位释放时机等不合适,导致无法满足建立保持时间。缓解亚稳态的方法主要是信号打拍。
对于多bit信号,采用握手。
Reconvergence问题
在多个bit出现反转的时候,从X4到Y4的信息,可能出现多bit采样时候,无法完全同步得到采样,使用格雷码可以解决问题
https://www.elecfans.com/d/2077894.html
数据丢失的问题
从快时钟到慢时钟,传递信息,慢时钟采样的时间短,需要额外增补数据保持的时间,即使用与门,或者或门,增加低电平或高电平的持续时间
设计意图产生的问题
在一些需要做出跨时钟的设计意图时候,需要采用fifo或者单bit握手方式,实现握手。
复位问题
复位需要异步复位,同步释放。果复位是异步释放,则导致异步的数据送出到各种组合逻辑,而时钟采样这些组合逻辑,容易导致亚稳态。同步复位的设计是使用两级同步实现。
CDC典型问题
时钟频率切换问题
频率切换使用以下方法,可以安全切换
spyglass的使用
使用spyglass提前发现CDC的问题,可以减少返工,提高效率,spyglass还可以检查STA
读入文件和类型
spyglass可以读入的文件类型有很多
read_file -type <type> <file-name>
选择要检查的位置,使用外部控制
spyglass -batch project Project-1.prj-goal G1
下述代码选择了第一个选项,即set_parameter fa_modulelist {M1 M2}
set_option top T1
current_goal Gl -top T1
set_parameter fa_modulelist {M1 M2}
current_goal G1 -top T2
set_parameter fa_modulelist {M3 M4}
current_goal G1 -alltop
set_parameter fa_modulelistk {Ml M2 M3 M4}
spyglass cdc工具功能
SpyGlass® Constraints Submethodology (for GuideWare 2.0 and 2015.12) 手册
SOC设计问题
设计重点
SOC设计的三个重点内容:时钟、接口、复位。称为CIR文件。
DFT功能
SOC有正常工作状态和DFT工作状态。DFT主要用于硅后的检查,良率控制。
DFT对逻辑门的开路和短路进行检查,通过PinMux外部的PAD切换工作状态。
最优的DFT/BIST策略保证产品测试错误覆盖率最大,测试时间最短
MBIST
内存内置的自检电路,是DFT的一种实现实例,用于检查内存是否正确。检查错误时立马退出,送出fail信号。
March算法是一种较为高效的内存检查算法,其步骤存在变体,一种情况如下:
PIN和PAD
PIN是内部的芯片送出信号,外部到PCB板上是PAD
FloorPlan
用于规划各个模块的位置
电源分布
物理设计部分
Layout版图
送入芯片生产前的最后步骤
SRAM的大小含义
比如大小为8K*8,则其深度为8K,宽度为8bit。划分为两个bank,每个bank独立的选通信号,一个bank最终的大小是8K*32,。