学习SOC--RTL代码编写指南

编程知识 更新时间:2023-04-05 15:43:33

1、模块RTL代码编写前都必须准备设计说明书。一般来说,设计说明书主要描述一下内容:

    1.1、模块功能简要介绍

    1.2、模块接口信号以及系统框图   

    1.3、模块寄存器地址及功能描述

    1.4、时钟信号连接(Multicycle Path/False Path/Negedge Clock/Generated Clock)

    1.5、复位信号连接(Gated Reset/Soft Reset)

    1.6、模块挂载总线--ARM公司的AMBA和AXI总线,IBM公司的Processor Local Bus

2、模块划分

    2.1、确保只有顶层模块中才包含IO引脚。

    2.2、顶层模块还应该包含边界扫描单元等测试逻辑。

    2.3、IP选择及设计

        2.3.1、确定那些模块是基于标准单元库进行设计,那些模块需要购买IP。

        2.3.2、模块接口协议要尽可能简单。一个常用技巧就是在设计传输接口建立申请应答机制。

        2.3.3、分钟分布,关键路径布线,电源和地址布线,IP模块支持的测试结构保持与系统芯片一致。

3、可测性

芯片可测性是指在芯片的生产测试中发现生产缺陷的能力。对于数字电路,通常使用扫描链提高可测试性。一般来说,综合工具中会有对RTL可测试的检查工具。但RTL设计人员应当尽量避免在RTL编写中引入影响可测试的问题:

    3.1、复位信号在测试过程中应当设置为无效,否则测试过程可能被复位信号打乱。 

    3.2、门控时钟在测试中应当有效,只有时钟有效才可以进行扫描连的操作。

    3.3、三态的驱动在测试中必要有可知的输出

    3.4、边界扫描的逻辑应当放在一个单独的设计模块中,边界扫描的生产主要在综合中进行。

    3.5、RAM测试。目前常用的方法是BIST(Bulit-in-self-test)

4、芯片速度

5、布线

调用Synopsys DesignWare优化设计

DesignWare是由Synopsys公司提供的IP库,DesignWare在综合时的调用是自动的,也可以是手工的。所谓的自动就是在写RTL代码时完全不考虑架构,由综合工具根据约束自动选择。这种情况通常对于电路规模小,综合时加一些特使约束是有效的。手工的方法是指在RTL代码编写时将选用的DesignWare单元“隐含”进去,这样子综合时就能够选用指定的DesignWare 了。具体有Operator Inference和Component Instantiation(模块实例化)两种。以超前进位加法器(carry-lock-ahead adder,cla)为例,举例如下:

DesignWare的使用需要Synopsys公司许可。以Foundation IP为例,首先需要在综合库(synthetic_library)变量中添加DesignWare库“synthetic_library=dw_foudation.sldb”,在启动Synopsys的综合工具DC后执行“set synthetic_library dw_foundation.sldb”。这样在综合上述RTL代码后的网表中,module my_adde将是用超前进位加法器这种架构实现

 

更多推荐

学习SOC--RTL代码编写指南

本文发布于:2023-04-05 15:43:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/0320825272f4b1b958e2c74a17f43d3d.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:代码   指南   SOC   RTL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 46721文章数
  • 14阅读数
  • 0评论数