一. 使用perl对Soc中的digital ip进行lint check

一. 使用perl对Soc中的digital ip进行lint check

1. purpose

  • 在SoC芯片设计中,需要用到很多的digital ip。在前端设计来到中后期时,在RTL sign off之前,需要对rtl进行lint check,一般使用的是synopsys家的SpyGlass。如果一个个到对应的ip目录下run SpyGlass软件并查看输出报告是非常费事费力的,而且还不能确定万无一失。因此我们就可以使用perl脚本的方式来运行SpyGlass来进行lint check。

2. Design Flow

  • 首先我们要确定使用场景:

    1. 当SoC中的digital ip并不是都release并且Top Core把digital ip都instance啦,此时我们进行spyglass时,更偏向自己写一个vfiles,此文件包含了要instance的ip的文件路径,通过此路径,我们进到对应的目录下,进行lint check。
    2. 当Top Core instance了所有的digital ip后并且Top Core可以编译,此时编译Top Core可以自动生成vfiles,此时就不用我们自己定义vfiles,会更准确更自动化。
  • 因为对于此perl脚本运行时,给出的options至少有 customized vfiles mode 和 toplevelbuild mode 以及 restart mode(因为通常编译一个top core需要较久的时间,如果之前check时编译过top core,那么此模式直接去对应目录读取vfiles即可)以及help模式。

    如下,同时给出了usage

    GetOptions( 
        'help'          =>  \$GetHelp,       # get help
        'h'             =>  \$GetHelp,       # get help
        'file|f=s'      =>  \$VFileName,     # get vfile
        'top_build|t'   =>  \$TopCoreBuild,  # it wiil build the top core and use vfile
        'restart|r'     =>  \$RestartCheck,  # it will restart again and use the vfile already exist
    );
    
  • 再进一步分析,给出了不同options之后,我们要根据不同的options分别做相应的处理。

  • 首先是top core build模式,对于此模式需要先进到top core目录下,编译rtl,生成vfile,因此需要一个top_core_build函数来做相应的处理。

  • 之后就是拿到了对应的vfiles,我们需要对此文件进行预处理。因为vfiles给的都是用到的ip对应的绝对路径文件,因此预处理此文件获得用到的ip名和ip的版本。因此需要个get_ipname函数。此函数返回一个hash %IPsGroup,包含了对应的ip名和版本号。

  • 之后就是拿到了对应的IPsGroup,来循环分别处理每个ip,先判断run cdccheck相应的文件存不存在,然后再分别进入到相应的ip位置run cdccheck,然后分析输出的的cdc report。

  • 之后会陆续更新相应部分的perl代码和思路。

你可能感兴趣的:(#,perl在ic设计中的应用,perl,language,perl,硬件架构,开发语言)