在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7772|回复: 15

[求助] UVM+questa_sim 10.2c编译报错

[复制链接]
发表于 2014-11-5 10:10:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
在学习《uvm实战》过程中,在questa_sim 10.2c上面跑书里面的实例,结果报错,希望有朋友可以指导一下是为什么,代码如下



  1. module dut(clk,
  2. rst_n,
  3. rxd,
  4. rx_dv,
  5. txd,
  6. tx_en);
  7. input clk;
  8. input rst_n;
  9. input[7:0] rxd;
  10. input rx_dv;
  11. output [7:0] txd;
  12. output tx_en;

  13. reg[7:0] txd;
  14. reg tx_en;

  15. always @(posedge clk) begin
  16. if(!rst_n) begin
  17. txd <= 8'b0;
  18. tx_en <= 1'b0;
  19. end
  20. else begin
  21. txd <= rxd;
  22. tx_en <= rx_dv;
  23. end
  24. end
  25. endmodule




复制代码





  1. `ifndef MY_DRIVER__SV
  2. `define MY_DRIVER__SV
  3. class my_driver extends uvm_driver;
  4.    function new(string name = "my_driver", uvm_component parent = null);
  5.       super.new(name, parent);
  6.    endfunction
  7.    extern virtual task main_phase(uvm_phase phase);
  8. endclass
  9. task my_driver::main_phase(uvm_phase phase);
  10.    top_tb.rxd <= 8'b0;
  11.    top_tb.rx_dv <= 1'b0;
  12.    while(!top_tb.rst_n)
  13.       @(posedge top_tb.clk);
  14.    for(int i = 0; i < 256; i++)begin
  15.       @(posedge top_tb.clk);
  16.       top_tb.rxd <= $urandom_range(0, 255);
  17.       top_tb.rx_dv <= 1'b1;
  18.       `uvm_info("my_driver", "data is drived", UVM_LOW)
  19.    end
  20.    @(posedge top_tb.clk);
  21.    top_tb.rx_dv <= 1'b0;
  22. endtask
  23. `endif




复制代码






  1. `timescale 1ns/1ps
  2. `include "uvm_macros.svh"
  3. import uvm_pkg::*;
  4. `include "my_driver.sv"
  5. module top_tb;
  6. reg clk;
  7. reg rst_n;
  8. reg[7:0] rxd;
  9. reg rx_dv;
  10. wire[7:0] txd;
  11. wire tx_en;
  12. dut my_dut(.clk(clk),
  13.            .rst_n(rst_n),
  14.            .rxd(rxd),
  15.            .rx_dv(rx_dv),
  16.            .txd(txd),
  17.            .tx_en(tx_en));
  18. initial begin
  19.    my_driver drv;
  20.    drv = new("drv", null);
  21.    drv.main_phase(null);
  22.    $finish();
  23. end
  24. initial begin
  25.    clk = 0;
  26.    forever begin
  27.       #100 clk = ~clk;
  28.    end
  29. end
  30. initial begin
  31.    rst_n = 1'b0;
  32.    #1000;
  33.    rst_n = 1'b1;
  34. end
  35. endmodule





复制代码


my_driver.sv出现报错,在第三行class my_driver extends uvm_driver;
报错信息如下:
1.near "uvm_driver" syntax error,unexpected IDENTIFIER
2.Error in class extension specification
 楼主| 发表于 2014-11-5 10:11:56 | 显示全部楼层
我看systemverilog里面对于类的继承的语法也是这样的,所以不知道为什么会出现这种错误
发表于 2014-11-5 14:34:15 | 显示全部楼层
uvm_driver用法不对,其定义uvm_driver #(REQ,RSP),必须有REQ参数
 楼主| 发表于 2014-11-5 15:09:03 | 显示全部楼层
发表于 2014-11-5 16:15:17 | 显示全部楼层
加上数据包类型就可以了
 楼主| 发表于 2014-11-5 16:24:33 | 显示全部楼层


加上数据包类型就可以了
allencherry 发表于 2014-11-5 16:15


    试过了,还是报错,跟没加一样的
发表于 2014-11-5 18:27:24 | 显示全部楼层
这样试一下,
class  xxx_driver  extends  uvm_driver #(transaction_class_name);
发表于 2015-1-23 14:34:32 | 显示全部楼层
回复 7# allencherry


   求问大神那个transaction_class_name应该填什么?谢啦
发表于 2015-7-3 13:06:47 | 显示全部楼层
回复 1# 441307320 class my_driver extends uvm_driver;我在这行代码前加了include “uvm_pkg.sv”因为在需要的地方导入uvm_pkg,不然不能识别uvm_driver类

发表于 2015-8-6 21:11:30 | 显示全部楼层
贴出你的do文件看看,应该是你的TCL脚本有问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-23 00:28 , Processed in 0.021917 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表