zoukankan      html  css  js  c++  java
  • 模块级布局布线——ICC学习

    ICC确实是不太好上手的一个软件,从教程和脚本就看得出来,以前跑dc vcs之类的也就一个几行脚本,换到ICC就有点可怕。

    第一步 找视频 找教程 找lab

    视频去b站上找,听人讲能学到你自学接触不到的东西,但是只能听个大概,不能达到手把手效果;

    教程当然首推ICC官方教程,主要有workshop、user guide、workshop student guide;

    lab和教程是配套的,目前能在eetop上找到2010、2012、2013这几个年份的lab和教程,还是有很多区别的。

    第二步 跑lab

    把data_setup跑完,basic flow跑完,基本概念比如什么是物理库了解了就能掌握个大概;跑lab有很不好的一点是,它的文件和脚本都是准备好的,但是它不告诉你实际中这文件在哪儿,你不知道怎么去找,文件过多的情况下会给人很大压力,毕竟你只有一个自己的rtl代码和综合出的网表,工艺库也看不太懂。

    这个时候就比较考验耐心了。

    跑完这两步就想着跑我自己的lab了,毕竟吃透lab也不是件容易的事情,而且很可能这些lab都跑完了换个库你也不一定会跑自己的design。

    第三步 下载工艺库,准备data_setup

    eetop上能下载到smic180,文件超大,有点费银子。关于数字的东西都在digital那个文件夹里,物理库有io、标准单元、ip库,从smic180里面能找到前两个。布局布线相关的都在Apollo里面。这个文件要对照着lab里面的把它们都找到,当然也不是所有文件都有,比如.map文件,要自己写,照葫芦画瓢再多一点思考是可取的。建议用6层金属的,金属层太少貌似不实用。另外这里有一个坑就是smic180压缩包里的东西解压出来有错误,所有的:都变成了_,所以在linux下要用 rename空格'_'空格':'空格*把它们都改过来,不然ICC读库的时候无法识别那些命名错误的文件。CEL文件夹虽然PR用不到但也别删除,因为里面有一个unit啥啥啥的文件还是用的到的。

     工程文件:

     .mw文件是执行脚本生成的,不用准备,solution应该是个隐藏文件,里面放着执行布局布线的顶层脚本run.tcl,初学也不用准备。还有一个隐藏文件是.synopsys_dc.setup,这个要有,可以参考lab里面的,但是里面涉及到的路径要自己改。

    左边是lab2,右边是自己的,修改完的对照。

     def文件是floorplan之后生成的,不用准备。sdc要自己写,其实就是dc中的那些,时钟周期,输出输出delay,驱动强度等等,也可以参考lab。

     script下放的是各种要用到的脚本,因为PR流程比较繁琐,所以脚本都拆开写了,然后在最顶层也就是run.tcl文件中去source“子脚本”(瞎起的名字)

    data_setup、floorlan要用到的脚本不一样。

    ref下面有6个文件夹:

     

    下图tcl文件是照着lab改的,工艺库里没有

     

     

     tools这个文件夹原封不动从lab上扒下来的,icc_setting.tcl文件也是

     第四步 打开icc,执行脚本

    在有.synopsys_dc.setup文件的目录下打开终端,输入icc_shell -gui

    删除可能存在的.mw:

     建库,读设计文件,读tlu,没啥问题的前提是在启动文件中把变量都设定好:

    ############################################################
    # Create Milkyway Design Library
    ############################################################
    create_mw_lib $my_mw_lib -open -technology $tech_file
    -mw_reference_library "$mw_path/sc $mw_path/io"

    ############################################################
    # Load the netlist, constraints and controls.
    ############################################################
    import_designs $verilog_file
    -format verilog
    -top $top_design

    ############################################################
    # Load TLU+ files
    ############################################################
    set_tlu_plus_files
    -max_tluplus $tlup_max
    -min_tluplus $tlup_min
    -tech2itf_map $tlup_map

  • 相关阅读:
    Unicode与JavaScript详解 [很好的文章转]
    4种方法生成二维码 (js 控制canvas 画出 二维码)
    JQuery-Dialog(弹出窗口,遮蔽窗口)
    JQuery实现可编辑的表格
    7个提高效率的JavaScript调试工具
    jQuery中的编程范式
    10款CSS3按钮
    jQuery(function(){})与(function(){})(jQuery)的区别
    JQuery之ContextMenu(右键菜单)
    糟糕的css用法 1
  • 原文地址:https://www.cnblogs.com/zhanghaha-zzz/p/12757353.html
Copyright © 2011-2022 走看看