使用VCS进行带UPF的RTL低功耗仿真

 

1. 两个文档   

  现在的VCS工具都自带了Power Aware仿真工具 VCS NLP(Native Low Power),可以进行动态的低功耗仿真(术语 PA Simulation). Synopsys的两个文档涵盖了这方面的内容。

    1)Synopsys Multivoltage Flow User Guide(smvfug).

    2)  VCS Native Low Power(NLP) User Guide(vcsnlpug).

                                本博客所有文章均同步发表于www.mx1980.cn/blog

2. 创建PA仿真环境要思考的问题

   2.1 创建通用的UPF 

      UPF反映了design的power intent,要用到项目开发的不同阶段,从RTL,Gate一直到P&R。所以最初创建时候要考虑到这个因素,努力创建广泛适用的UPF,尽量避免面向不同工具做不必要的修改。UPF具有良好的一致性,对项目成功帮助巨大。

       现在通常使用的“Golden UPF flow”,就是在RTL阶段创建一个原始的golden UPF,随后的DC/IC工具均会在golden UPF的基础上添加更为详尽的信息。工程师在创建Golden UPF时,不仅考虑综合工具能用,也要考虑仿真工具也能用,因为这两个工具所能支持的UPF语句集合存在差异。

使用VCS进行带UPF的RTL低功耗仿真_第1张图片

      要创建RTL仿真和gate仿真能复用的UPF。门级网表和RTL有很多差异,如flatten造成的hierarchy差异等,这篇文章讲了如何在些UPF时采用什么办法解决RTL/Gate的差异:

     Writing Reusable UPF For RTL And Gate-Level Low Power Verification

      如在upf中使用到多bit宽信号,尽量单bit分开引用,避免到gate下找不到。以及尽可能使用find_object。

  2.2 低功耗验证的目的 

       现在的SOC复杂的高,power domain划分和控制比较复杂,在开发过程中早验证早发现问题,纠错成本就愈低。

       PA RTL仿真和no-PA RTL仿真的区别:

              ① RTL仿真没有power supply port,PA有

              ② RTL仿真没有power domain状态信息,PA有

              ③ RTL仿真没有完全里用模拟hard macro的电源信息,PA可以

              ④ PA仿真具有的‘X-progagation’特性,可使RTL行为仿真更贴近Gate仿真结果,提前发现问题。

       动态RTL PA验证,可以动态复杂系统控制模块的行为和UPF描述的power intent之间的互动,能模拟真实应用中的场景,检验RTL是否存在bug,UPF定义中有没有问题。如RTL状态机的power on/off sequence有没有问题,UPF中的isolation cell设定的clamp value正确与否,这些是UPF静态检查工具(如VCLP)所不具备的优势。

     插曲,理解curruption含义:

In formal terms, ‘corruption’ denotes the temporary or permanent change of a signal from its current value to an ‘X’ value due to power disruption. -----Advanced RTL power-aware verification》

  2.3 低功耗验证的目标 

         PA仿真可以生成覆盖率数据库,可以通过DVE/Verdi来分析覆盖率,除了测试覆盖率达标外,还要从功能上检查这些问题:

             ① 检查所有的电源状态切换都符合期望。有没有不希望的状态切换?

             ② 检查各个PD的上电/掉电序列,确保PSW控制信号,isolation控制信号,reset信号以及retention的Save&Restore控制信号的时序满足要求(如需要,写power-aware assertions)。

             ③ 检查可断电的PD所有的输出信号的isolation所设定的clamp value有没有问题。有没有漏掉的output没被isolated?clamp值会不会影响系统中没断电部分的正常工作?例如AXI/AHB的ready信号如果clamp到0,就有可能会block住上电PD的正常工作。

             

  2.4 Hard Macro对应的仿真模型有什么要求?

     Hard Macro一般是第三方IP,其提供商都会提供HDL仿真模型文件(simulation behavior model, verlog/sv/vhdl文件),有带PG的和不带PG的。有的是两个独立文件,有的是同一个文件,通过宏定义来区分PG和No PG。RTL PA仿真需要使用带PG的仿真模型,在UPF中需要对Hard Macro的power supply进行正确连接。

    sim model一般都会使用initial 块,在一般的RTL仿真中,initial块只会在仿真开始运行一次。但PA仿真时,希望initial块在所在PD每次power on时都会运行,否则sim model的行为会出现异常。在VCS中,需要在UPF中打开SNPS_reinit属性,来确保initial块多次执行。

       set_design_attributes -attribute SNPS_reinit TRUE

     更多细节,可以参考“Power Aware Libraries:Standardization and Requirements for Questa Power Aware”

  2.5 Test Bench需要做什么?

         一般power supplies是在UPF中定义的,不出现在RTL的port list中,UPF标准提供在TB中可以开关电源的方法:supply_on/supply_off,在使用是应该首先import UPF::*。 具体可参考这篇文章:

          How To Connect Your Testbench to Your Low Power UPF Models    

        注意,supply_on/off的第一个参数是目标power supply port的路径,这里一定要使用‘/’,不能使用‘.’, 否则仿真中会报warning,不会起作用。

         supply_on("tb.u1.VDD",1.0);

         supply_on("tb/u1/VDD",1.0);

         在TB中添加控制DUT的power supplies的代码如下:

import UPF::*;    // 在module块内外均可以
module testbench;
  ...
  always @(pwr_en) begin
    if(pwr_en)  supply_on("DUT/VDD",1.0);
     else   supply_off("DUT/VDD");
  end
  ...
endmodule

3. 用VCS进行RTL级PA仿真的步骤

   3.1  Analyze这一步和普通RTL仿真一样

           % vlogan [-sverilog] [options]  file/filelist

            % vhdlan [options]  file/filelist

   3.2 Elaboration时需要使用-upf 编译选项 

            % vcs -upf -power_top

         Elaboration时需要使用-upf 编译选项,这样VCS工具就会自动调用VCS-NLP。

         如果UPF中已经使用set_design_top知道了design top,则 -power_top 可以省略。

         这里使用的upf应该是top design对应的upf,在这个upf内一般会引用其他tcl/upf文件。

    3.3 开始仿真

             % simv [options]

             % simv  [options] -power power_config.tcl   #加载运行时的upf相关配置

               注意这里的tcl中只能加入运行时使用的属性,例如下面这句必须在elab时加入upf中,在运行时加入不行

                  set_design_attributes -attribute SNPS_reinit TRUE

       

                本博客所有文章均同步发表于www.mx1980.cn/blog

参考文献 


  1. Efficient Low Power Verification & Debug Methodology Using Power-Aware Simulation
  2. Writing Reusable UPF For RTL And Gate-Level Low Power Verification

 

你可能感兴趣的:(SOC,IC,前端设计,UPF,低功耗设计,PA仿真,VCS低功耗仿真)