AHB-SRMAC系列(2)

330 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第8天!

SoC芯片设计流程

  • Design
    • Specification
    • Partition
    • RTL coding(Verlog/System Verilog)
    • IP integration
  • Verification
    • plan
    • Testbench and Tentcase
    • Regression
    • Integration verification
  • RTL freeze
    • Presynthesis sign-off
  • Logic Synthesis
    • map RTL to gate-level netlist
  • FM(Foraml Verification形式验证)
  • STA(Static Timing Analysis 静态时序分析)
  • DFT(检测芯片在设计过程中可能由于工艺引入的缺陷导致的芯片失效,通过DFT测试可以把坏的芯片筛掉)
    • Test generation and fault simulation
  • PD ( 即P&R DRC/LVS,之后再去做一次静态时序分析,SDF实验检查时序check )
    • placement,scan chain and CTS,cell routing Verify physical and electrical design rules Extract parasitics
  • Post_Layout STA
  • 生成最终的GDSII
  • Tape-Out流片

通过SystemVerilog testbench , 其结果: coverage0-driven
覆盖率:

  • code coverage【客观】 line, experssion, path ,toggle(翻转信号) , fsm(状态机)
  • function coverage 【主观】 利用SV里的cover group;自己去建模,去建立cover group,然后针对要覆盖的点去写cover point
  • assertion coverage 看具体的代码量,有点类似
  • 完备性、正确性、协议符合型、容错处理
    • 完备性:要求我们一定要在Specification基础之上将Feature分解全!
    • 正确性:要求我们构造的用例需要真pass,整个环境的check要比较全面
    • 协议符合型:要求我们要符合协议,在该项目中就是AHB协议
    • 容错处理:这个异常处理场景也需要去考虑,如何构造异常场景包(用例)
      • 如: 地址addr和size要对齐,假如size是16bit,那么地址可以发0或者2,不能发1或者3。这个容错处理就是说,如果发1或3,不能让总线挂死!这个也要作为Feature的测试点列出来。

AHB_if 接口中的时钟块信号代码

  clocking  cb_master @(posedge clock); // non-synthesis only for verification
      default input #1 output #1;
      output haddr;
      output hburst;
      output hbusreq;
      output hlock;
      output hprot;
      output hsize;
      output htrans;
      output hwdata;
      output hwrite;
      input  hrdata;
      input  hready_in;
      input  hresp;
      input  hgrant;
   endclocking
   
   clocking  cb_slave @(posedge clock);
      default input #1 output #1;
      input  hsel;
      input  haddr;
      input  hwrite;
      input  htrans;
      input  hsize;
      input  hburst;
      input  hwdata;
      input  hmaster;
      input  hmastlock;
      input  hready_in;
      output hrdata;
      output hready_out;
      output hresp;
      output hsplit;
   endclocking


clocking  cb_monitor @(posedge clock);
      default input #1 output #1;
      input hsel;
      input haddr;
      input hwrite;
      input htrans;
      input hsize;
      input hburst;
      input hwdata;
      input hmaster;
      input hmastlock;
      input hready_in;
      input hrdata;
      input hready_out;
      input hresp;
      input hsplit;
   endclocking

对于Master, 在时钟上升沿前一个时钟单位采样,在时钟上升沿后一个时钟单位驱动。
而对于Master和slave模块,其输入输出信号刚好对应互补。
对于monitor而言,所有的信号的都是让输入信号。
clocking信号是不可综合的。

  • 验证语言
    • System Verilog
  • 验证平台架构
  • 验证策略
    • 覆盖率驱动的验证策略
    • 白盒验证策略
    • 激励
      • 定向测试(极大,极小,边界跳转空间)
      • 带约束的随机化验证策略
    • 基于断言的验证策略(测试内部信号跳变)
    • 功能点划分(根据Feature来分解测试点testpoints,根据测试点再来构造测试用例testcases)
      • Features
      • testpoints
      • testcases
        • 如,NO.1 testcase:把SRAM 的地址空间全部写1,然后再读全部是否为1

        • NO.2 testcase: 把SRAM的地址空间全部写0,然后再读写全部是否为0

        • NO.3 testcase: 向SRAM中写8bit的数

        • NO.4 testcase:向SRAM中写16bit 的数

        • NO.5 testcase: 做一些随机...