spyglass_cdc001:sgdc约束如何写

1、什么是spyglass cdc sgdc约束

Spyglass 是一款IC设计的EDA工具,可以用来进行Verilog代码质量检查、功耗分析等等。

Verilog质量检查包含lint和cdc检查。Lint主要用来检查语法方面,如组合逻辑、时序逻辑位宽是否匹配,是否有latch,时序逻辑是否缺少复位值,......等等。

Cdc检测通常用来检查verilog代码跨时钟是否正确,它会提取所有的跨时钟路径,按相应的规则列举出来,让使用者逐项确定。

Spyglass cdc检查需要格式为xxx.sgdc格式的约束文件,说明哪些信号是时钟,哪些是复位,以及数据类信号的时钟域。

1、为什么要写Sgdc约束

是否匹配spyglass 工具自己也能产生约束文件,我们需要检查工具产生的约束文件,并查缺补漏,修改错误的约束,补充遗漏的约束。Sgdc约束越详细,spyglass cdc报的Error和warning越少,能够有效减少工作量。

3、哪些信号需要用Sgdc约束

模块的输入信号,说明哪些信号是时钟,哪些是复位,以及数据类信号的时钟域。

模块的输出信号,不用约束

Black-box的输入,输出信号都需要约束。

4、如何编写Sgdc约束

定义当前的顶层:用current_design,如下图所示:mac是当前顶层,rmon_cnt是mac内部的一个black box,只有input和output定义,内部没有逻辑。

定义时钟用clokc,定义复位用reset,定义数据信号的时钟域用abstract

5、注意事项

  1. Black box的input和output都需要约束
  2. 约束中多多比特信号不能用[*]替代位宽,如tx_data[*]不能被识别,必须写tx_data[1023:0]
  3. 多比特数据位宽表达[xxx:xxx]不能有计算,如错误表达tx_data[1024-1:0]
current_design "mac"

clock -name "mac.host_clk"  -domain host_clk -tag host_clk
clock -name "mac.sys_clk"   -domain sys_clk  -tag sys_clk

reset -name "mac.host_clk_soft_rst_n"  -value 0
reset -name "mac.host_clk_hard_rst_n"  -value 0

abstract_port  -module mac  -ports soc_wr                -clock mac.host_clk
abstract_port  -module mac  -ports soc_rd                -clock mac.host_clk
abstract_port  -module mac  -ports soc_rw_addr[12:0]     -clock mac.host_clk
abstract_port  -module mac  -ports soc_wr_dat[31:0]      -clock mac.host_clk

abstract_port  -module mac  -ports tx_data[1023:0]       -clock mac.sys_clk
abstract_port  -module mac  -ports tx_eop                -clock mac.sys_clk
abstract_port  -module mac  -ports tx_sop                -clock mac.sys_clk
abstract_port  -module mac  -ports tx_vld                -clock mac.sys_clk

#---------- rmon_cnt is the black box , only has input and output signal ,don't have logic in rmon_cnt.v " ------#


#### input signal ######
abstract_port  -module rmon_cnt  -ports mem_wr                -clock mac.host_clk
abstract_port  -module rmon_cnt  -ports mem_rd                -clock mac.host_clk
abstract_port  -module rmon_cnt  -ports mem_rw_addr[12:0]     -clock mac.host_clk
abstract_port  -module rmon_cnt  -ports mem_wr_dat[31:0]      -clock mac.host_clk

#### output signal ######
abstract_port  -module rmon_cnt  -ports mem_rd_datvld               -clock mac.host_clk
abstract_port  -module rmon_cnt  -ports mem_rd_dat[31:0]            -clock mac.host_clk

 

  • 21
    点赞
  • 175
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值