UVM+questa_sim 10.2c编译报错
时间:10-02
整理:3721RD
点击:
在学习《uvm实战》过程中,在questa_sim 10.2c上面跑书里面的实例,结果报错,希望有朋友可以指导一下是为什么,代码如下
my_driver.sv出现报错,在第三行class my_driver extends uvm_driver;
报错信息如下:
1.near "uvm_driver" syntax error,unexpected IDENTIFIER
2.Error in class extension specification
- module dut(clk,
- rst_n,
- rxd,
- rx_dv,
- txd,
- tx_en);
- input clk;
- input rst_n;
- input[7:0] rxd;
- input rx_dv;
- output [7:0] txd;
- output tx_en;
- reg[7:0] txd;
- reg tx_en;
- always @(posedge clk) begin
- if(!rst_n) begin
- txd <= 8'b0;
- tx_en <= 1'b0;
- end
- else begin
- txd <= rxd;
- tx_en <= rx_dv;
- end
- end
- endmodule
-
- `ifndef MY_DRIVER__SV
- `define MY_DRIVER__SV
- class my_driver extends uvm_driver;
- function new(string name = "my_driver", uvm_component parent = null);
- super.new(name, parent);
- endfunction
- extern virtual task main_phase(uvm_phase phase);
- endclass
- task my_driver::main_phase(uvm_phase phase);
- top_tb.rxd <= 8'b0;
- top_tb.rx_dv <= 1'b0;
- while(!top_tb.rst_n)
- @(posedge top_tb.clk);
- for(int i = 0; i < 256; i++)begin
- @(posedge top_tb.clk);
- top_tb.rxd <= $urandom_range(0, 255);
- top_tb.rx_dv <= 1'b1;
- `uvm_info("my_driver", "data is drived", UVM_LOW)
- end
- @(posedge top_tb.clk);
- top_tb.rx_dv <= 1'b0;
- endtask
- `endif
-
- `timescale 1ns/1ps
- `include "uvm_macros.svh"
- import uvm_pkg::*;
- `include "my_driver.sv"
- module top_tb;
- reg clk;
- reg rst_n;
- reg[7:0] rxd;
- reg rx_dv;
- wire[7:0] txd;
- wire tx_en;
- dut my_dut(.clk(clk),
- .rst_n(rst_n),
- .rxd(rxd),
- .rx_dv(rx_dv),
- .txd(txd),
- .tx_en(tx_en));
- initial begin
- my_driver drv;
- drv = new("drv", null);
- drv.main_phase(null);
- $finish();
- end
- initial begin
- clk = 0;
- forever begin
- #100 clk = ~clk;
- end
- end
- initial begin
- rst_n = 1'b0;
- #1000;
- rst_n = 1'b1;
- end
- endmodule
my_driver.sv出现报错,在第三行class my_driver extends uvm_driver;
报错信息如下:
1.near "uvm_driver" syntax error,unexpected IDENTIFIER
2.Error in class extension specification
我看systemverilog里面对于类的继承的语法也是这样的,所以不知道为什么会出现这种错误
uvm_driver用法不对,其定义uvm_driver #(REQ,RSP),必须有REQ参数
那该怎么写呢?
加上数据包类型就可以了
试过了,还是报错,跟没加一样的
这样试一下,
classxxx_driverextendsuvm_driver #(transaction_class_name);
求问大神那个transaction_class_name应该填什么?谢啦
class my_driver extends uvm_driver;我在这行代码前加了include “uvm_pkg.sv”因为在需要的地方导入uvm_pkg,不然不能识别uvm_driver类
贴出你的do文件看看,应该是你的TCL脚本有问题
请问问题解决了吗
碰到了同样的问题,怎么解决呢?
遇到同样的问题。
我也遇到了,按照书上的例子写的,不知道为什么那个地方一直提示语法错误,请问怎么解决呢?谢谢
你好,问题解决了么?现在我也遇到这个了,不知道什么原因
我解决了,我的编译脚本指定编译顺序了,把编译脚本改了,就没事了,希望对其他人有帮助