admin • 来自相关话题

5月前

高通内推职位--包含应届生

高通招聘设计、验证、后端、ATE等其它岗位,有内推需求的可以联系我们,微信号chipist1

高通招聘设计、验证、后端、ATE等其它岗位,有内推需求的可以联系我们,微信号chipist1

芯片家 • 来自相关话题

5月前

Soc芯片debug 经验<3>

在介绍bug之前,继续讲解一下在在wave中debug中经常用到的小技巧。1,标亮Wave中的信号选中Wave中的信号(左键点击一下),按下字母c,打开“Change Color”对话框。选择想要的颜色。2,Bus Operations   ...查看全部

在介绍bug之前,继续讲解一下在在wave中debug中经常用到的小技巧。

1,标亮Wave中的信号

选中Wave中的信号(左键点击一下),按下字母c,打开“Change Color”对话框。选择想要的颜色。

2,Bus Operations

   右键点击信号,选择Bus Operations,可以看到很多Bus操作。这里着重讲解一下Create Bus 操作。例,在dut中定义了一个信号addr [39:4],该信号在wave中只显示位宽[39:4],该地址只是case中写地址的一部分,我们要想确定该地址addr[39:4]是不是对应着case中的写地址,我们可以打开Create Bus对话框,使用Add Logic Low按钮,补全低四位。这样在Wave中的信号列表中显示的数据就是完整的case 中的地址。

3,Waveform->Signal value Radix

Wave中拉出来的信号默认显示是16进制,但dut中有时候会使用十进制的数据10’d等。使用Signal value Radix 可以改变该信号显示的进制。

接下来开始讲解Soc 验证中遇到的问题。

       1. 在soc系统中,集成了很多IP,有时候需要验证一个IP发送出去数据包的datapath是否正确。一般情况下,使用的是该IP的UVC去发送数据包,编译的是该IP的一个model,里面只有接口,没有实际的功能,把该IP的model 输入输出接口,连接到该IP UVC的interface上,这样如果启动验证环境,IP UVC的接口上有了数据包,就相当于该IP 发送了数据包。该IP数据包的验证通路要想成功的到达最终的地方,在发送该数据包之前,需要配置很多关键的寄存器。如果没有配置该寄存器,该数据可能在中途就会丢失。导致该case不能成功到达。

举例:A->B->C数据通路,ABC之间的数据传递使用的协议接口,A 的输出连接到B的输入,并且A的数据成功的传递到B的输入上,但是在B内部,经过复杂的逻辑之后,B没有了输出。我们在波形中一直去追踪B的输出,可能最终会发现如下代码,信号名字都是随手写的。

If (cntl)

   Valid<=iwdata[3];

我们可能会发现cntl没有起来,这个说明我们要配置一个寄存器的第3位,把第三位置为1,具体是哪一个寄存器,我们可以继续追踪cntl。我们可能会发现如下代码。

case (x_cntl_x)

    404: cntl=1;

    403:cntl_a=1;

default: cntl_b=1;

endcase

          这段代码,我们可以看到,寄存器的地址偏移是404,关键词是x_cntl_x。这个时候,我们就可以去寄存器地址文件表(一般情况下,所有的寄存器地址定义的define都在一个文件里)里去匹配关键词x_cntl_x,去找到后缀是404的寄存器。然后在自己的case里面,先去配置该寄存器,把该寄存器的域3,配置成1。我们也可以去看看对该寄存器的域的说明,去UVM寄存器模型里面搜索该寄存器,会找到该寄存器的所有域的说明以及总的位宽。假设该寄存器的位宽是32,我们可以通过读出该寄存器的值,然后把值和32‘h0008相或,把或之后的值写入该寄存器即可。代码如下。

         read_data=read_cntl_reg(xx_cntl_xx);

          read_data=read_data|32’b0008;

          write_cntl_reg(xx_cntl_xx, read_data);

   2. 在编写数据包的时候,数据包是要连接到IP uvc 的interface上的,这些interface上的接口都是协议接口,协议接口文件里面定义了很多assertion,也有部分assertion是单独编写的,单独例化的。这些assertion可能对于写数据的一些属性有固定要求或者有约束范围,如果我们没有按照要求给激励,在仿真环节会出现违背assertion 的error。

  例如错误现象:UVM_ERROR: $datapath/src/verif/assertion.sv #16.

       A==0

Hierarchy.a.b.c.A

我们通过Hierarchy.a.b.c.A 在波形Wave中拉出来信号A,发现他是0。然后我们打开文件assertion.sv,找到了assertion的第16行对A进行了assertion约束。具体写法略。

我们去追踪该信号,可能会发现如下例化代码。

.A(write_valid&&write_AWSIZE!=3)

我们就可以发现我们在写协议包属性的时候,把AWSIZE写成3了。最后我们要去查看该IP对应的技术文档,去确定技术文档里面,这个接口信号是不是标注了不能等于3,如果找不到,要去找对应的IP 部门去确认修改。

3. 在Soc系统中,有时候不止使用了一种协议,可能是多个协议。这里面就有了协议的转换。例如A->B->C这么一段datapath,A的输入接口是AXI协议,A的输出是其他类型协议,这样在A内部就有一个协议转换。如果发现A的输出valid没有起来,那我们一直追下去,可能会发现如下代码。

 Always @ (posedge clk)

      if(axi_valid)

         valid<=1;

我们把axi_valid和clk在波形中拉出来,发现axi_valid和clk都有,但是axi_valid翻转的脉冲很短,这个clk相对较慢,在clk的上升沿,axi_valid完美的错位过去了。这个现象是由于产生axi_valid的时钟是一个比较快的时钟,那这个axi_valid如果出现在clk上升沿之内,valid可能无法正确获得1。这个需要把问题发出来让其他部门的人一起来看看。

admin • 来自相关话题

5月前

AMD最新职位招聘(七月)

AMD七月最新内推职位,有需要联系微信号chipist1。LocationJob TitleShanghai1.SMTS/MTS/Sr.   Silicon Design Engineer - PD2.MTS Silicon   Desig ...查看全部

AMD七月最新内推职位,有需要联系微信号chipist1。


Location

Job Title

Shanghai

1.SMTS/MTS/Sr.   Silicon Design Engineer - PD

2.MTS Silicon   Design Engineering - Design Verification

3.MTS Silicon   Design Engineering - Design Verification

4.PMTS/SMTS/MTS   Software Engineer - Machine Deep learning

1. SMTS/MTS   Silicon Design Engineering – Physical Design

2. Sr./MTS Power   Management Engineer Urgent

3.   Senior/MTS/SMTS Design Verification Engineer Urgent

4. Senior   Silicon Design Engineer

5. Digital Logic   IP Systems Engineer Urgent

6. SMTS/ MTS GFX   FE tile owner

7. Frontend   Engineer - Graphics Urgent

8. MTS/SMTS   Design Verification Engineer (Low power) Urgent

9. GPU Core   Verification Engineer

10. Sr./MTS/SMTS   Silicon Design Engineer (Graphic Performance Verification and Analysis) Urgent

11. Sr./MTS ASIC   simulation analysis/software engineer (Graphics Performance) Urgent

12. Sr/MTS/SMTS   Silicon Engineer (Graphics Performance Analysis and Architecture Modeling)

13. Sr./MTS/   SMTS Validation Engineer – Signal Urgent

14. Sr.   Validation Engineer – Automation

15. MTS GFX   DV/infrastructure Engineer

16. SMTS Silicon   Design Engineer Urgent

17. Intern   - GPU infrastructure Urgent

18. Intern -   Graphics/AI Performance Analysis Urgent

1. SMTS SoC Diag   Lead (Diagnostics Team)

2. Sr./MTS IP Design   Engineer (FCH Team)

3. PMTS/Fellow   USB IP Arichtect (FCH Team) Urgent

4. ISP   Diagnostics Firmware Engineer (Diagnostics Team)

5. Sr. Front-End   Intergreation Engineer (CIP Team)

6. Sr./ MTS IP   DV Engineer (CIP Team)

7. Sr./ MTS   Firmware Engineer - I/O related ((Diagnostics Team)

8. Sr./ MTS   Firmware Engineer - Power Management ((Diagnostics Team)

1. Sr/MTS OpenGL   Compiler Software Engineer

2. SMTS/MTS IPSE   Engineer

3. MTS Software   Engineer - KMD & Display

4. MTS Power   Performance Lead Urgent

5. SMTS Silicon   Design Engineer(memory信号完整性 Urgent

6. MTS Silicon   Design Engineer(memory信号完整性) Urgent

7. Sr/MTS DFT   Engineer

8. SMTS DFT   Engineer

9. Sr Manager,   IPSE/RTG Platform Debug

10. Graphics   Validation Engineer

1. SMTS Lead   System Engineer Urgent

2. Manager   Hardware Development (Board Design) Urgent

3. MTS/ Sr   Hardware Development Engineer (Board design) Urgent

4. Validation   Engineer

5. MTS/Sr. Debug   Engineer (BIOS/Firmware)

6. Sr/ MTS BIOS   Engineer

7. Product   Development Engineer( Power& Performance)

8. Graphic   Validation Intern

9. Software   Intern

10. Design   Verification Intern

11. Hardware   Development Intern

1. PMTS Product   Development Engineer

2.  Layout   Design Engineer 2

3. ASIC Layout   Design Engineer 2

4. MTS ASIC   Layout Design Engineer

5. SMTS Silicon   Design Engineer

6.System   Software Design Engineer

1. Linux Kernel   Software Engineer for APU – NCG/Sr. Eng/MTS Eng/SMTS

2. NCG/MTS   Software Engineer – Virtualization

3. Camera Driver   MTS Software Engineer - Windows

4.   ADAS/Automotive MTS Software Engineer – Linux BSP/Virtualization

5. ASIC IC   Design SMTS Engineer of ISP

6. Embedded   Software Test Engineer

7. Linux Kernel   MTS Engineer of Machine Learning/GPU Computing

8. Linux DevOps   Engineer

1. Solution   Architect

Beijing

1. SoC MTS   Engineer- Verification

1.SMTS/MTS/Sr.   Silicon Design Engineer - PD

2.MTS Silicon   Design Engineering - Design Verification

3.MTS Silicon   Design Engineering - Design Verification

4.PMTS/SMTS/MTS   Software Engineer - Machine Deep learning

1. Sr. Silicon   Design-Physical Design

Hefei

1.  MTS   Customer Quality Engineer Urgent

1. MTS Debug   Engineer

Shenzhen

1. Solution   Architect

Suzhou

1. Software   Engineer (Java&C++)

2. Product Yield   Engineer

3. ATE Test

4. MTS Packaging   Engineer-Bumping

5. MTS   Manufacturing Quality Engineer

6. Director Test   Manufacturing Engineering

7. System Level   Testing Engineer

Chongqing

1. MTS Customer   Quality Engineer Urgent

Taipei

1. Business   Development Manager

Hsinchu

1. Packaging   Engineer

2. Director Supply   Chain

3. Proudction   planner & controler

4. Director   Product Development Engineer

5. Supplier   Quality Engineer

6. Software   Development Engineer - Display Solutions

7. Supply Chain   Specialist

Japan

1. Specialist   Commercial Marketing Server

Hongkong

1. Supply Chain   Specialist

zcl • 来自相关话题

5月前

广发英雄贴

风里雨里,我在这里等你,模拟ic设计工程师、ic版图设计工程师一枚,欢迎来唠叨!base在杭州,联系方式18559667360

风里雨里,我在这里等你,模拟ic设计工程师、ic版图设计工程师一枚,欢迎来唠叨!base在杭州,联系方式18559667360

芯片家 • 来自相关话题

5月前

最近做的ECO和如何使用verdiload原理图辅助做ECO

        好几年没做过ECO了,再次做起来比较痛苦,有一种清零后重新捡起来的感觉。笨办法做ECO当然是对照网表和RTL,把网表相关寄存器的逻辑都画出来,然后化简分析,找打做ECO的点,然后再手工做。但是曾经在上一家 ...查看全部

        好几年没做过ECO了,再次做起来比较痛苦,有一种清零后重新捡起来的感觉。笨办法做ECO当然是对照网表和RTL,把网表相关寄存器的逻辑都画出来,然后化简分析,找打做ECO的点,然后再手工做。但是曾经在上一家公司(业内养老单位,已经倒闭)做ECO的时候好歹是用“先进”的verdi工具辅助做。不必说用nECO里面的tcl脚本做,起码能帮忙load fan-in/out-core,加速分析吧。
        但是我在使用verdi工具上摔了跟头,不知道怎么load那种带原理图的netlist,奈何问了几个老同事也都告诉我verdi load了网表自然就有那种与非门图形库了。现在我想告诉这几个老同事“编,使劲编”,根本就是大家作为大公司的designer,不管flow,人家都给做好了,你load进来看起来都是好的,实际上verdi是需要load netlist+symbol_lib才能展示如下可爱的模样:

1.jpg

不然只load netlist,就是这个鬼样子:

2.jpg

     不买关子了,怎样建立图形库呢? verdi提供了一个工具,叫做syn2SymDB,这个工具可以把S公司的库转换成symbol库给verdi使用。

在我的main tree目录/proj/usr/my_main 执行如下命令
syn2SymDB -o tsxx_xx *.tsxx.0pxv?00c.lib.gz *.tsxx_FTx.0pxv?00c.lib.gz
setenv NOVAS_LIBS tsxx_xx
setenv NOVAS_LIBPATHS /proj/usr/my_main
然后再用verdi load 网表,找到你关心的逻辑单 元,再去tools->new schemetic->fan-out-core之类的,漂亮的带与或非门的原理图就呈现出来了。
同时顺便总结下此次ECO的教训,对比RTL前后改动,找到需要修改的点,注意:
1. 改动不要影响其它寄存器,看看你的改动点所有扇出,改动完了之后再检查一遍(load到verdi之类的工具里trace一遍)
2. 如果报了falling point点,有可能是以下原因:
a. 理解错或者用错cell了,在tech/verilog/stdcell/目录里一般有(我这次就用错了,该是与非门ND2,用成了与门 AND2)
b. 你的改动影响到了别的寄存器(我这次n42578改动是给A寄存器的,结果影响到了另外一个寄存器B)
c. 少改了某一处,所以还要反复对照前后改动的RTL(这次我发给flow owner的信里列举的RTL改动点就没列举完全)

admin • 来自相关话题

5月前

内推联盟需要你

亲爱的ICers,内推联盟现在有大量的优质IC简历,他们需要换工作,涵盖数字设计,数字验证,射频, 模拟等方向。现在急需大公司朋友们的加入,只要您们所在大公司有推荐奖励,都可以联系我们,让你赚钱,详情请咨询我们。希望感兴趣的IC工程师联系我们。微信号:chip ...查看全部

亲爱的ICers,内推联盟现在有大量的优质IC简历,他们需要换工作,涵盖数字设计,数字验证,射频, 模拟等方向。现在急需大公司朋友们的加入,只要您们所在大公司有推荐奖励,都可以联系我们,让你赚钱,详情请咨询我们。希望感兴趣的IC工程师联系我们。

微信号:chipist1   

Maggie • 来自相关话题

6月前

关于芯片验证的感悟

 18年下半年参与了某款5G芯片验证的开发过程,空余时间总结一下: 由于现在芯片的规模越来越大, 所以导致芯片验证的工作也越来越重要。 传统的通过写TB 的方式来测试芯片设计功能的方式也越来越吃力,而通过UVM的方式来进行芯片验证已经成为业 ...查看全部

 18年下半年参与了某款5G芯片验证的开发过程,空余时间总结一下:

 由于现在芯片的规模越来越大, 所以导致芯片验证的工作也越来越重要。 传统的通过写TB 的方式来测试芯片设计功能的方式也越来越吃力,而通过UVM的方式来进行芯片验证已经成为业界主流的验证方式。

 使用UVM的方式可以编写任意多个test case 配合对应的 sequence ,加上shell 脚本的辅助,可以在线切换任意的phase场景进行测试,增加了验证的自动化和灵活性,功能覆盖性也大大增强。

1. UVM 验证平台的搭建。

 一个UVM 验证仿真平台的搭建 ,需要一个整体的tb顶层来进行DUT 的封装,时钟和复位的激励生成,以及数据的DUMP 操作,应用的 virtual interface (VIF) 和 总线接口(AXI)的构建和初始化,以及和DUT的接口连接。  

 接下来编写各个应用场景对应的sequence 和test case ,通过 UVM的机制来进行指定test case 的仿真运行和测试。

 sequence 主要负责 参数的随机化生成,寄存器值的初始化,以及仿真的运行时间控制;test case 主要负责 UVM ENV component的初始化,以及在 main phase 中 通过对应的 sequence 来手动开启(关闭) 整个UVM平台的运行(采用 raise objection的方式)。这里可以采用基类构建框架, 继承类 实现具体动作的方式来增加灵活性。 我们这里还在sequence body 里面,调用了refer-C DPI 的功能,来运行C 功能。

  env component 模块主要负责各个子component(agent , moniter ,scoreborad )的集成, 这里我们使用了AXI 总线,所以这里我们也集成了AXI的一些模块(register model , adapter , VIP )。agent component 集成了sequencer 和 driver 组件 ,sequencer模块功能比较简单,负责将sequence 里面的transcation形式的数据发送给 driver ;driver组件总要负责将transcation形式的数据解析给 virtual interface ,进而传输给了DUT 。

  moniter 组件负责将DUT 的输出打包成transaction的形式,传送给scoreboard 组件。

  scoreboard组件负责 将DUT 的数据存储到queue中,同时将refer-C 输出存储到queue中,完成数据的比对。

无标题.png

1.2 寄存器读写 

  这里 主要讨论 AXI的寄存器读写 。由 sequence来完成数据的随机化操作 ,然后写到 register model 中,通过 adapter 来完成 总线和寄存器的转换,最后传送到 VIP 中,输出以 axi_vif 的形式传送给DUT的 AXI 接口。

2.png

1.3 phase的理解

   对于UVM中的component , phase的理解 才能正确使用各个组件。

   build phase 主要 完成 组件内各个子组件的创建 ;

   connect phase 主要完成 该组件与外部组件的连接;

   无时钟消耗的phase:build phase ,connect phase ,before simulation 

   在 sequence raise_objection 某一个 sequencer 后,在各个组件的main_phase 产生时钟消耗。

   关于 main_phase 的流水线设计 :

   这里 需要知道 UVM各个组件是长久活动的,在各个组件main_phase 中也需要 设计成 RTL流水线形式:

   在main_phase 采用 fork  ··· join 来保证先进行具体活动的实行 ;采用 forever  @posedge(clk) 来进行流水线设计 (等同于 RTL 设计的 always@(posedge clk ))

   在 sequence drop objection 来关闭 。

1.4 refer-c 和DPI 接口设计  

   SV 方面:

   如果SV 和 C++ 交互为对象 :import “DPI-C" function chandle getWrapperInstance() ; 来获取对象 ;

   如果SV 和C++ 交互为函数:import "DPI-C" function void systemSetup (input chandle systemInst ,...) 来传送数据给refer-C

   C/C++ 方面:

   添加与SV交互的接口代码 :dpi_main.cpp

   修改C/C++ 代码,GDB 调试 ,最后集成到 UVM 中 

   Makefile :

   添加输入参数给 SV ,环境配置  

   shell:

   test case 的自动化配置,参数传递给 Makefile

菜菜 • 来自相关话题

6月前

成都、厦门--模拟ic设计工程师,模拟版图工程师

微信:861112547成都厦门--模拟ic设计工程师,模拟版图工程师,欢迎推荐

微信:861112547



成都厦门--模拟ic设计工程师,模拟版图工程师,欢迎推荐

左拉呀 #招聘 • 来自相关话题

6月前

北京智能可穿戴创新公司-Digital Verification Engineer  

岗位Digital Verification Engineer Design and Integration Engineer 要求:5年以上,有RISC-V经验者优先欢迎详细了解微信:1370621224 ...查看全部

岗位

Digital Verification Engineer

 

Design and Integration Engineer

 

要求:5年以上,有RISC-V经验者优先

欢迎详细了解

微信:1370621224