Spyglass使用小总结

科技   2024-11-29 12:03   陕西  



Spyglass使用小总结




脚本启动spyglass进行一系列的代码检查,包括指定了项目的配置文件,以批处理模式运行,不需要用户在命令行输入命令就可以完成自动化执行命令,以及明确了一系列要执行的分析类型。

上图要进行的检查有:

lint/lint_rtl,lint/lint_turbo_rtl,lint/lint_functional_rtl,adv_lint/adv_lint_struct,adv_lint/adv_lint_verify,cdc/cdc_setup_check,cdc/clock_reset_integrity,cdc/cdc_verify_struct,cdc/cdc_verify


lint/lint_rtl:基本的RTL代码检查,检查代码风格和常见错误。

lint/lint_turbo_rtl:更深入的RTL代码检查,包括一些性能相关的检查。

lint/lint_functional_rtl:功能性的RTL代码检查,检查代码是否满足功能要求。

adv_lint/adv_lint_struct:结构化的高级RTL代码检查,它检查代码的结构问题。

adv_lint/adv_lint_verify:包括一些综合后或布局布线后的检查。

cdc/cdc_setup_check:时钟域交叉(CDC)设置的检查。

cdc/clock_reset_integrity:时钟和复位完整性的检查,避免时序问题。

cdc/cdc_verify_struct:CDC结构的验证,指时钟域交叉的信号路径。

cdc/cdc_verify:确保CDC的正确性,以避免时序问题。


在GUI操作,可以按照需求选择要检查的goal。在Goal Setup的Select页面可以进行操作,比如可以只进行cdc_setup_check检查,选择后点击Run Goal(s)。

如果有特殊需求,可以在lint_rtl里右键选择Edit Rules and Parameters来修改或waive规则。


配置文件gmac.prj,主要告诉SpyGlass如何处理和分析设计,包括指定源文件、顶层模块、时钟约束、分析目标等。

read_file -type sourcelist ../lis/sg.lis:告诉SpyGlass从../lis/sg.lis文件中读取源文件列表。sg.lis文件通常包含所有Verilog源文件的路径,这些文件构成了设计的RTL代码。

read_file -type sgdc gmac.sgdc:告诉SpyGlass读取设计约束文件gmac.sgdc。.sgdc文件包含了与设计相关的各种约束信息,如时钟约束、复位约束等。

set_option projectwdir .:设置了项目的工作目录为当前目录。

set_option designread_enable_synthesis no:设置在读取设计时关闭综合功能。综合是硬件描述语言(HDL)代码转换为实际硬件的过程。

set_option designread_disable_flatten no:设置在读取设计时不禁用扁平化。扁平化是设计中模块实例化展开的过程。

set_option top xins_gmac_wrapper:指定了设计的顶层模块为xins_gmac_wrapper。顶层模块是设计中的最高层模块,它包含了所有子模块的实例化。

set_option enableSV yes:启用了SystemVerilog(SV)支持,这可能意味着在分析过程中会考虑SV代码的特性。

set_option incdir {../src}:设置了包含目录为../src,这告诉SpyGlass在编译RTL代码时搜索包含文件的地方。

set_option stop TS6N28HPCPHVTA256X68M2SWBSO:设置了停止标志TS6N28HPCPHVTA256X68M2SWBSO,这可能在分析过程中用于停止处理特定的实例。

set_option stop xins_DWC_ether_qos:设置了停止标志xins_DWC_ether_qos,这可能在分析过程中用于停止处理特定的实例。

set_option active_methodology /opt/synopsys/spyglass/SPYGLASS2018.09-SP2/SPYGLASS_HOME/GuideWare/latest/block/rtl_handoff:指定了要使用的分析方法论为rtl_handoff,这是一个SpyGlass的预定义方法论,用于处理RTL代码。

current_methodology /opt/synopsys/spyglass/SPYGLASS2018.09-SP2/SPYGLASS_HOME/GuideWare/latest/block/rtl_handoff:指定了当前的活动方法论为rtl_handoff,这与active_methodology设置相同,这可能是SpyGlass的一个配置选项。


也可以在Design Setup的Set Option页面来进行一系列的配置。

添加.sgdc约束文件,它包含了与设计相关的各种约束信息,如时钟约束、复位约束等。设计约束文件的作用是定义时序和信号完整性要求,以确保设计在特定工艺和操作条件下能够正确工作。

current_design xins_gmac_wrapper:指定了当前的设计为xins_gmac_wrapper模块。在SpyGlass的分析过程中,这定义了分析的入口点。

clock -domain "clk_rx" -name "clk_rx_i" -period 8 -edge {0 4}:定义了名为clk_rx_i的时钟信号,它属于clk_rx时钟域。

clock -domain "clk_osc" -name "clk_osc_i" -period 8 -edge {0 4}:定义了名为clk_osc_i的时钟信号,它属于clk_osc时钟域。

clock -domain "clk_tx" -name "clk_tx_from_phy" -period 10 -edge {0 5}:定义了名为clk_tx_from_phy的时钟信号,它属于clk_tx时钟域。

clock -domain  "pclk"  -name "pclk" -period 10 -edge {0 5}:定义了名为pclk的时钟信号,它属于pclk时钟域。

clock -domain  "aclk"  -name "aclk_i" -period 3.2 -edge {0 1.6}:定义了名为aclk_i的时钟信号,它属于aclk时钟域。

reset -name "presetn" -value 0:定义了一个低电平复位信号presetn。

reset -name "aresetn_i" -value 0:定义了一个低电平复位信号aresetn_i。

ip_block -name xins_DWC_ether_qos:定义了一个名为xins_DWC_ether_qos的IP块。


约束文件包含了用于描述和约束设计时序和行为的规则,通常要包括:

时钟约束(Clock Constraints):

  • 时钟源(Clock Source)约束:定义时钟信号的源、频率、相位、边沿等属性。

  • 时钟网络(Clock Network)约束:定义时钟信号在设计中的传播延迟、相位关系等。

复位约束(Reset Constraints):

  • 复位信号(Reset Signal)约束:定义复位信号的源、宽度、时序等属性。

  • 复位网络(Reset Network)约束:定义复位信号在设计中的传播延迟、复位时间等。

电源约束(Power Constraints):

  • 电源信号(Power Signal)约束:定义电源信号的源、电压、上电/下电时间等属性。

  • 电源网络(Power Network)约束:定义电源信号在设计中的传播延迟、电源噪声等。

引脚约束(Pin Constraints):

  • 引脚(Pin)约束:定义引脚的驱动能力、负载类型、I/O类型等属性。

  • 引脚网络(Pin Network)约束:定义引脚在设计中的传播延迟、驱动/负载关系等。

延迟约束(Delay Constraints):

  • 信号传播延迟(Signal Propagation Delay)约束:定义信号在设计中的传播延迟、路径长度等。

  • 同步延迟(Synchronization Delay)约束:定义信号在不同时钟域之间的同步延迟、路径长度等。

设置完后进行检查,检查结果按照各个Goal分别放在不同的文件夹。spyglass.log会记录report所在的位置,然后就可以查看检查结果。

点击方框中的类似图像界面的符号,还可以查看设计的电路原理图。

 红色信息表示错误,橙色信息表示警告,绿色信息表示正常。

选中违规信息,右键选择Waive Selected Messages可以忽略掉某种类型的检查。



*免责声明:本文由作者原创。文章内容系作者个人观点,路科验证转载仅为了传达一种不同的观点,不代表路科验证对该观点赞同或支持,如果有任何异议,欢迎联系路科验证。



END



路科验证
专注于数字芯片验证的系统思想和前沿工程领域。
 最新文章