自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(324)
  • 收藏
  • 关注

原创 Verilog基础:层次化标识符的使用

一般情况下我们只会接触到简单标识符,但是有些时候(如验证设计时),层次化标识符也会被使用,本文目的是为需要使用层次化标识符的设计人员提供一定参考。

2024-10-22 00:13:36 1458 6

原创 静态时序分析:典型与非典型时序路径的约束详解(一)

时序路径是静态时序分析中的一个重要概念,了解时序路径能帮助设计者更好地编写SDC脚本,本文旨在详细介绍时序路径相关内容。首先给出时序路径的定义:时序路径是由时序弧构成的数据路径,静态时序分析会分别对每条有约束的时序路径进行时序检查(例如建立时间检查、保持时间检查、移除时间检查、恢复时间检查等)。时序路径可以是典型的,也可以是非典型的;时序路径可以是有约束的,也可以是未约束的。

2024-03-07 19:26:01 3033 1

原创 数字IC基础:数字集成电路书籍推荐

书籍推荐

2024-03-01 14:50:15 2671 1

原创 SDC命令详解:SDC命令大全(持续更新)

Tcl(Tool Command Language)最初是一种用于编写脚本的编程语言,广泛用于电子设计自动化(EDA)工具中,如Cadence的Virtuoso、Synopsys的Design Compiler等。SDC(Synopsys Design Constraints)是一种定义电路设计约束的格式,它用于确保电子设计在时序方面满足规定的要求,由Synopsys基于Tcl命令拓展而来。下面分类给出一些常用的SDC约束命令(以目前的最新版本2.2为例)。

2023-11-03 13:35:46 1357 1

原创 Verilog基础:表达式位宽的确定(位宽拓展)

我们可以首先找到被加入上下文环境的操作数,a和b作为+操作符的操作数,是上下文决定的,(a+b)作为整体位与移位操作符的左边也是上下文决定的,(a+b)>>1作为整体是=操作符的右操作数,也是上下文决定的,因此answer(因为=),a,b(因为三层上下文嵌套)都被加入上下文环境中,这三个变量的位宽都是一样的,所以他们三个在运算前不会有拓展。因此首先执行a+b,根据规则,结果为16位,进位被丢失,然后再右移一位,最高位补0,最后赋值给同为16位的answer。很多时候方法很简单。改成a+b+17'b0;

2023-01-27 22:03:25 13093 3

原创 SDC命令详解:使用get_lib_cells命令进行查询

get_lib_cells命令用于创建一个库单元对象集合,关于设计对象和集合的更详细介绍,可以参考下面的博客。需要注意的是,在有些工具中还存在get_lib_cell命令,它们没有任何差别。 

2025-05-20 16:54:36 784 1

原创 Spyglass:跨时钟域同步(循环复用器)

循环复用器方案主要用于数据信号跨时钟域同步,该方案将一个控制信号同步至目标时钟域并用其作为驱动目标触发器的多路复用器的选择信号,如图1所示。

2025-05-20 11:16:49 299 1

原创 SDC命令详解:使用get_libs命令进行查询

get_libs命令用于创建一个库对象集合,关于设计对象和集合的更详细介绍,可以参考下面的博客。需要注意的是,在有些工具中还存在get_lib命令,它们没有任何差别。 

2025-05-19 17:26:53 792 1

原创 Spyglass:projectwdir选项的使用

spyglass中的projectwdir选项用于设置项目目录保存的位置,与大多数选项不同的是它只能在项目文件而不能在sg_shell或GUI界面中进行设置。

2025-05-19 01:07:52 398 1

原创 Spyglass:参数(parameter)及其设置方式

Spyglass中的参数(parameter)用于控制目标(Goal)运行时的规则检查,通常一个参数会影响多个规则(Rule),图1展示了allow_combo_logic参数的相关信息。

2025-05-18 16:47:12 1020 1

原创 Spyglass:跨时钟域同步(同步使能)

同步使能方案主要用于数据信号跨时钟域同步,该方案将一个控制信号同步至目标时钟域并用其作为数据信号的捕获触发器的使能信号,如图1所示。

2025-05-16 21:29:12 637 1

原创 SDC命令详解:使用get_pins命令进行查询

get_pins命令用于创建一个引脚对象集合,关于设计对象和集合的更详细介绍,可以参考下面的博客。需要注意的是,在有些工具中还存在get_pin命令,它们没有任何差别。 

2025-05-15 21:08:17 1028 1

原创 Spyglass:跨时钟域同步(同步单元)

同步单元方案可以用于控制/数据信号跨时钟域同步,该方案使用约束或参数将目标时钟域中单元指定为同步单元,如图1所示。

2025-05-14 23:40:23 350 1

原创 Spyglass:跨时钟域同步(常规多级触发器)

常规多级触发器方案主要用于控制信号跨时钟域同步,该方案将目标时钟域中的触发器按照链状方式排列,如图1所示。

2025-05-14 00:51:27 808 1

原创 SDC命令详解:使用all_registers命令进行查询

all_registers命令用于创建一个时序单元及其引脚对象集合,包含当前实例(注意该命令与其他all_*命令的区别)中的所有时序单元及其引脚

2025-05-13 13:19:48 936 1

原创 Spyglass:跨时钟域同步方案大全

Spyglass可以用于检测设计中的跨时钟域相关问题,确保电路中添加了适当的同步机制,以避免此类问题的发生

2025-05-12 14:34:54 1315 1

原创 Spyglass:在batch/shell模式下运行目标的顶层是什么?

Spyglass:在batch/shell模式下运行目标的顶层是什么?

2025-05-11 20:01:05 852 1

原创 Spyglass:默认配置文件

当启动Spyglass时,它会自动读取五个设置文件,这些文件具有相同的文件名.spyglass.setup,但位于不同的目录中,它们包含了一些变量设置,比如默认启动模式(DEFAULT_STARTUP_MODE=)。

2025-05-11 14:54:47 369 1

原创 SDC命令详解:使用all_outputs命令进行查询

all_outputs命令用于创建一个输出端口对象集合,关于设计对象和集合的更详细介绍,可以参考下面的博客。

2025-05-10 19:37:19 781 1

原创 数字IC前端学习笔记:锁存器的综合

锁存器是一种时序逻辑,与寄存器相比面积更小,但它的存在会使静态时序分析(STA)变得更加复杂,因此懂得什么样的设计会综合出锁存器是很重要的,本文就将对此进行详细介绍。 

2025-05-09 22:33:29 899 1

原创 SDC命令详解:使用all_inputs命令进行查询

all_clocks命令用于创建一个输入端口对象集合,关于设计对象和集合的更详细介绍,可以参考下面的博客。 

2025-05-09 16:19:58 769 1

原创 SDC命令详解:使用all_clocks命令进行查询

all_clocks命令用于创建一个时钟对象集合,关于设计对象和集合的更详细介绍,可以参考下面的博客。

2025-05-08 01:45:44 412 1

原创 SDC命令详解:使用get_ports命令进行查询

get_ports命令用于创建一个端口对象集合,关于设计对象和集合的更详细介绍,可以参考下面的博客。需要注意的是,在有些工具中还存在get_port命令,它们没有任何差别。

2025-05-07 20:01:12 714 1

原创 Spyglass:官方Hands-on Training(四)

实验四的目标是使用GUI模式对实验三中lint_rtl目标的违规(violations)进行调试,找到其在RTL文件中的根本原因并尝试进行修复。

2025-05-07 11:32:33 1299 1

原创 Spyglass:官方Hands-on Training(三)

实验三的目标是使用实验二中保存的项目文件wb_subsystem.prj在批处理模式下设置、运行和查看结果。

2025-05-06 17:51:02 1277 1

原创 Spyglass:官方Hands-on Training(二)

实验二的目标是进行完整的设计读取,与实验一不同的是,将在命令行使用-batch选项以批处理模式运行Spyglass(相同的操作也可以通过图形用户界面(GUI)完成)。

2025-05-06 00:57:47 1131 1

原创 Spyglass:官方Hands-on Training(一)

本教程提供了在多个设计阶段中运行Spyglass的操作指导,旨在通过实操获得对Spyglass设置及其结果调试/分析的深入理解,涵盖多个动手练习,每个练习之间是相互依赖的,需要按顺序完成。

2025-04-30 17:48:11 1339 1

原创 SDC命令详解:使用get_nets命令进行查询

get_nets命令用于创建一个线网对象集合,关于设计对象和集合的更详细介绍,可以参考下面的博客。需要注意的是,在有些工具中还存在get_net命令,它们没有任何差别。

2025-04-29 19:52:43 1011 1

原创 SDC命令详解:使用get_clocks命令进行查询

get_clocks命令用于创建一个时钟对象集合,关于设计对象和集合的更详细介绍,可以参考下面的博客。需要注意的是,在有些工具中还存在get_clock命令(其实它是get_clocks命令的别名),它们没有任何差别。 

2025-04-28 21:02:04 856 1

原创 Verilog基础:生成块结构(Generate)

生成块结构(Generate)用于有条件地(称为条件生成块)或重复地(称为循环生成块)将生成块实例化到模块中,由Verilog Standard 2001借鉴VHDL引入。本文将对生成块的使用进行详细介绍。

2025-04-28 13:24:09 1297 1

原创 C语言:作用域、链接与存储期

作用域(Scope)描述程序中标识符的生效区域(可访问区域),一个C语言变量的作用域可以是块作用域、函数作用域、函数原型作用域、文件作用域。

2025-04-27 15:01:02 633 1

原创 SDC命令详解:使用reset_design命令重置设计

reset_design命令用于重置当前设计。本文针对Design Compiler,但该命令同样存在于PrimeTime、IC Compiler等工具中,它们大致相同,略有差别。重置当前设计会产生广泛的影响,包括移除当前设计设置的所有SDC约束(效果等同于remove_sdc命令)、移除绝大多数设置在对象上的属性、移除用户创建的对象(如时钟和时序组)。

2025-04-26 15:57:15 889 1

原创 SDC命令详解:使用get_cells命令进行查询

get_cells命令用于创建一个单元对象集合,关于设计对象和集合的更详细介绍,可以参考下面的博客。Synopsys:设计对象本文针对Design Compiler,但该命令同样存在于PrimeTime、IC Compiler等工具中,它们大致相同,略有差别。

2025-04-25 15:46:46 892 1

原创 SDC命令详解:使用remove_sdc命令移除约束

remove_sdc命令用于移除当前设计中设置的所有SDC约束,需要注意的是,UPF约束不会被移除,要想移除UPF约束,需要使用remove_upf命令。

2025-04-24 15:54:02 936 1

原创 Synopsys:printvar命令和puts/echo命令的区别

​Synopsys的EDA工具中存在一类变量,它们能控制工具的行为,被称为应用变量(application variable),与之对应的是用户自定义变量(user-defined variable)。以Design Compiler为例,使用report_app_var命令可以显示所有应用变量的值,其中包括target_library、search_path等常用变量。使用标准Tcl命令puts或拓展Tcl命令echo即可显示变量的值,但更建议使用拓展Tcl命令printvar命令显示变量的值

2025-04-21 23:52:54 526 1

原创 Design Compiler:转换时间过渡调整

在静态时序分析:传播延迟与转换时间一文中,已经介绍了转换时间阈值和转换时间减免系数的概念,如果一个设计中两个单元的转换时间阈值和转换时间减免系数不一致会发生什么?本文将以Design Compiler对此进行说明。

2025-04-16 22:30:53 638 1

原创 Formality:Bug记录

本文记录博主在使用Synopsys的形式验证工具Formality中遇到的几个Bug。

2025-04-15 23:31:43 991 1

原创 低功耗设计:Level Shift的种类(以SAED EDK 32/28nm工艺库为例)

在多电压设计中,当信号从一个电压域跨越到另一个电压域时,需要使用电压转换器(Level Shift)。它的工作方式类似于缓冲器,但其输入和输出使用不同的电压,作用是将一个逻辑信号从一个电压转换为另一个电压,并在输入到输出之间实现尽可能小的延迟。本文将以Synopsys开源工艺库SAED(Synopsys Armenia Educational Department) EDK为例介绍电压转换器的种类。

2025-04-14 22:39:50 793 1

原创 SDC命令详解:使用相对路径访问设计对象(current_instance命令)

SDC命令详解在使用get_cells等命令访问设计对象时,需要指定设计对象的名字,这个名字是一个相对路径,本文就将对此进行讨论。

2025-04-12 13:23:32 622 1

原创 SDC命令详解:使用集合(Collection)而不是字符串(String)/列表(List)作为命令参数

在使用SDC命令时,有时直接使用字符串或列表(Tcl中的列表本质上也是用空格分隔的字符串)而不是集合作为命令参数也可以得到正确的结果。例如对于图1所示的电路,下面这些创建时钟的命令是等价的,它们都是以端口clk为源对象创建周期为5的时钟。

2025-04-11 18:11:33 724 1

Spyglass CDC Hands-on Training

本次动手练习将帮助你熟悉SpyGlass CDC的部分调试功能。实验内容包括以下方面: 1、调试时钟设置问题并动态应用CDC约束 2、识别未同步的跨时钟域并通过可强制执行的约束进行修复

2025-05-21

Formality官方Tutorial

Formality官方Tutorial

2025-01-03

Verdi各版本User Guide

Verdi各版本User Guide

2024-12-25

Power Compiler各版本User Guide

Power Compiler各版本User Guide

2024-12-25

HDL Compiler各版本User Guide

HDL Compiler各版本User Guide

2024-12-25

PrimeTime各版本User Guide

PrimeTime各版本User Guide

2024-12-25

VCS各版本User Guide

VCS各版本User Guide

2024-12-25

Formality各版本User Guide

Formality各版本User Guide

2024-12-25

Design Compiler各版本User Guide

Design Compiler各版本User Guide

2024-12-25

Design Compiler Topographical/Graphical Workshop Lab Guide

Design Compiler Topographical/Graphical Workshop Lab Guide,来自EETOP坛友的分享

2024-11-13

Synopsys Design Compiler Topographical/Graphical Workshop Lab

Synopsys Design Compiler Topographical/Graphical Workshop Lab Guide,来自EETOP坛友的分享

2024-11-13

VC Spyglass RDC User Guide 2022

VC Spyglass RDC User Guide 2022

2024-11-09

VC Spyglass Lint User Guide 2022

VC Spyglass Lint User Guide 2022

2024-11-09

VC Spyglass CDC User Guide 2022

VC Spyglass CDC User Guide 2022

2024-11-09

VC LP User Guide 2022

VC LP User Guide 2022

2024-11-09

VC Formal User Guide 2022

VC Formal User Guide 2022

2024-11-09

AMBA AHB规格文档(从AMBA 2到AMBA 5)

AMBA AHB(Advanced High-performance Bus)是由ARM公司设计的一种总线接口,专门用于处理高带宽和高性能数据传输需求。它也是AMBA总线协议家族的一部分,与APB(Advanced Peripheral Bus)和AXI(Advanced eXtensible Interface)总线并行使用。AHB主要用于连接高性能的核心模块,如处理器核心、DMA(Direct Memory Access)控制器和高速存储设备。这种总线支持高数据传输速率和更复杂的总线控制特性,如突发传输和分裂传输,以优化系统性能和增加总线使用效率。AHB适用于那些需要处理大量数据或执行复杂数据处理任务的系统,例如在多媒体处理和高速缓存系统中。

2024-10-03

AMBA APB规格文档(从AMBA 2到AMBA 5)

AMBA APB(Advanced Peripheral Bus)总线是ARM公司设计的一种总线接口,专门用于与低带宽控制外设连接。它是AMBA总线协议家族的一部分,该家族还包括其他几种总线协议,如AHB(Advanced High-performance Bus)和AXI(Advanced eXtensible Interface)。APB被设计用于简单的外设,例如时钟控制、接口控制和I/O端口,这些外设不需要高速数据传输。

2024-10-03

使用Pytorch量化框架的训练后量化(PTQ)的Vision Transformer

项目中包含vit-b在imagnet上的预训练权重,只能在CPU上执行。

2024-07-21

Conformal 2023系列工具User Guide

Conformal形式验证系列包括Conformal LEC(Logic Equivalence Checking)、Conformal ECO(Engineering Change Orders)、Conformal LP(Low Power)、Conformal CD(Constraint Designer)以及Conformal Verify。

2024-06-22

Verilog实现的RISC存储程序CPU

来自于《Verilog HDL高级数字设计》,电路包含三个功能单元:处理器(数据通路)、控制器和存储器。程序指令及数据放在存储器中。程序执行时同步地进行指令的读取、译码和执行:(1)对ALU中的数据进行操作;(2)修改寄存器的内容;(3)修改程序计数器(PC);指令寄存器(IR)和地址寄存器(ADD_R)的内容;(4)修改存储单元的内容;(5)获取存储器中的数据和指令;(6)控制系统总线上的数据传送。其中,指令寄存器IR用于存放当前正在执行的指令,程序计数器PC用于存放下一条将要执行指令的存储地址,而地址寄存器ADD_R则用于保存下一个将要读/写的存储单元地址。

2023-03-12

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除