View Full Version : XBUS example - is this OVM or just URM?
avidane
01-14-2008, 07:56 AM
Hi,
I was surprised to discover that the xbus example needs to have the location of the IPCM installation in order to compile. Not only that, it doesn't really look at any of the files in the OVM relaease. Finally, it doesn't run with Questa. So, can this example really be relied on, or is it just a place holder?
Avidan Efody,
Verilab
www.specman-verification.com
cgales
01-14-2008, 08:17 AM
Hi,
I was surprised to discover that the xbus example needs to have the location of the IPCM installation in order to compile. Not only that, it doesn't really look at any of the files in the OVM relaease. Finally, it doesn't run with Questa. So, can this example really be relied on, or is it just a place holder?
Avidan Efody,
Verilab
www.specman-verification.com
The XBUS example works with Questa. If you go to the examples/xbus/examples directory, there is a 'run_questa' script which will compile the design and run a simple test with Questa.
avidane
01-14-2008, 09:41 AM
when I try to run the "run_questa" or the "irun -f compile_isu.f" I get the following error:
xbus_master_if.sv file can't be found
A grep over all the files in the OVM release in fact shows that this file doesn't exist. So I don't see how this could compile and run.
The only way I could run this example is by using the demo.sh file at the directory:
ovm/examples/xbus
And this one works with a Makefile, that simply uses the IPCM_HOME.
In any case, if the OVM doesn't need the URM at all, then I guess this demo.sh file and the Makefile should be removed, since they are only confusing.
Best,
Avidan Efody
Verilab
www.specman-verification.com
jfowler
01-14-2008, 09:47 AM
The command to run the xbus example on IUS is 'irun -f compile_ius.f'. 'run_questa', as Chuck suggests, should be sufficient for Questa.
If you have previously run 'demo.sh', you will corrupt files in your OVM xbus area. You need to replace the files in the xbus area with the originals from the OVM tarball.
The demo.sh file should be ignored and will be removed in an upcoming kit.
John
cgales
01-14-2008, 09:58 AM
If you ran the demo.sh script, then it is possible that the example/xbus/example directory was overwritten from your IUS installation. This would make it seem that the XBUS example only uses the URM.
In the ovm-1.0 release, there is no file xbus_master_if.sv, nor is there any reference to it in any of the compilation scripts.
I would recommend extracting the ovm-1.0 tarball again and try running the examples again in the examples/xbus/examples directory, and ignoring the run.sh script.
avidane
01-15-2008, 01:50 AM
Hi Again,
Ok, unbelievable, this demo.sh file really overrides everything. When you think you've seen everything...
Anyway, I extracted everything again and managed to run it with NC. With Questa 6.3c I'm still getting compilation errors. Do I have to move to 6.3d?
Best,
Avidan
Nigele
01-15-2008, 06:08 AM
It certainly runs with 6.3d ok
$ run_questa
** Warning: (vlib-34) Library already exists at "work".
QuestaSim vlog 6.3d Compiler 2007.11 Nov 26 2007
-- Compiling package ovm_pkg
-- Compiling module dut_dummy
-- Compiling interface xbus_if
-- Compiling module xbus_tb_top
Top level modules:
xbus_tb_top
Reading D:/QuestaSim_6.3d/tcl/vsim/pref.tcl
# 6.3d
# vsim +OVM_TESTNAME=test_read_modify_write -do vsim.do -c -suppress 3829 xbus_tb_top
# ** Note: (vsim-3812) Design is being optimized...
# // QuestaSim 6.3d Nov 26 2007
# //
# // Copyright 1991-2007 Mentor Graphics Corporation
# // All Rights Reserved.
# //
# // THIS WORK CONTAINS TRADE SECRET AND
# // PROPRIETARY INFORMATION WHICH IS THE PROPERTY
# // OF MENTOR GRAPHICS CORPORATION OR ITS LICENSORS
# // AND IS SUBJECT TO LICENSE TERMS.
# //
# Loading sv_std.std
# Loading work.xbus_tb_top(fast)
# Loading work.xbus_if(fast)
# do vsim.do
# resume
# OVM_INFO @ 0: reporter [RNTST] Running test test_read_modify_write...
# OVM_INFO @ 0: reporter [OVMTOP] OVM testbench topology:
# ----------------------------------------------------------------------
# Name Type Size Value
# ----------------------------------------------------------------------
# urm_command_line_proces+ ovm_object - @{urm_command_line+
# ----------------------------------------------------------------------
# ----------------------------------------------------------------------
# Name Type Size Value
# ----------------------------------------------------------------------
# ovm_test_top test_read_modify_w+ - @{ovm_test_top} {r+
# xbus_demo_sve0 xbus_demo_sve - @{xbus_demo_sve0} +
# scoreboard0 xbus_demo_scoreboa+ - @{scoreboard0} {re+
# item_collected_imp ovm_connector_base - @{item_collected_i+
# disable_scoreboard integral 1 'h0
# num_writes integral 32 'd0
# num_init_reads integral 32 'd0
# num_uninit_reads integral 32 'd0
# xbus0 xbus_env - @{xbus0} {ref to c+
# bus_monitor xbus_bus_monitor - @{bus_monitor} {re+
# masters[0] xbus_master_agent - @{masters[0]} {ref+
# slaves[0] xbus_slave_agent - @{slaves[0]} {ref +
# has_bus_monitor integral 1 'h1
# num_masters integral 32 'h1
# num_slaves integral 32 'h1
# xbus_checks_enable integral 1 'h1
# xbus_coverage_ena+ integral 1 'h1
# ----------------------------------------------------------------------
# [110] hier=ovm_test_top.xbus_demo_sve0.scoreboard0: READ to empty address...Updating address : 70b0 with data : c0
# [110] hier=ovm_test_top.xbus_demo_sve0.xbus0.bus_monitor : Transfer collected :
# ----------------------------------------------------------------------
# Name Type Size Value
# ----------------------------------------------------------------------
# xbus_transfer_inst xbus_transfer - @{xbus_transfer_in+
# addr integral 16 'h70b0
# read_write xbus_read_write_en+ 32 READ
# size integral 32 'h1
# data da(integral) 1 -
# [0] integral 8 'hc0
# wait_state da(integral) 0 -
# error_pos integral 32 'h0
# transmit_delay integral 32 'h0
# master string 10 masters[0]
# slave string 9 slaves[0]
# begin_time time 64 70
# end_time time 64 110
# ----------------------------------------------------------------------
# [200] hier=ovm_test_top.xbus_demo_sve0.scoreboard0: WRITE to existing address...Updating address : 70b0 with data : c1
# [200] hier=ovm_test_top.xbus_demo_sve0.xbus0.bus_monitor : Transfer collected :
# ----------------------------------------------------------------------
# Name Type Size Value
# ----------------------------------------------------------------------
# xbus_transfer_inst xbus_transfer - @{xbus_transfer_in+
# addr integral 16 'h70b0
# read_write xbus_read_write_en+ 32 WRITE
# size integral 32 'h1
# data da(integral) 1 -
# [0] integral 8 'hc1
# wait_state da(integral) 0 -
# error_pos integral 32 'h0
# transmit_delay integral 32 'h0
# master string 10 masters[0]
# slave string 9 slaves[0]
# begin_time time 64 180
# end_time time 64 200
# ----------------------------------------------------------------------
# [330] hier=ovm_test_top.xbus_demo_sve0.scoreboard0: READ to existing address...Checking address : 70b0 with data : c1
# [330] hier=ovm_test_top.xbus_demo_sve0.xbus0.bus_monitor : Transfer collected :
# ----------------------------------------------------------------------
# Name Type Size Value
# ----------------------------------------------------------------------
# xbus_transfer_inst xbus_transfer - @{xbus_transfer_in+
# addr integral 16 'h70b0
# read_write xbus_read_write_en+ 32 READ
# size integral 32 'h1
# data da(integral) 1 -
# [0] integral 8 'hc1
# wait_state da(integral) 0 -
# error_pos integral 32 'h0
# transmit_delay integral 32 'h0
# master string 10 masters[0]
# slave string 9 slaves[0]
# begin_time time 64 290
# end_time time 64 330
# ----------------------------------------------------------------------
# [2000] hier=ovm_test_top: User activated end of simulation
# [2000] hier=ovm_test_top.xbus_demo_sve0.scoreboard0: Reporting scoreboard information...
# ----------------------------------------------------------------------
# Name Type Size Value
# ----------------------------------------------------------------------
# scoreboard0 xbus_demo_scoreboa+ - @{scoreboard0} {re+
# item_collected_imp ovm_connector_base - @{item_collected_i+
# disable_scoreboard integral 1 'h0
# num_writes integral 32 'd1
# num_init_reads integral 32 'd1
# num_uninit_reads integral 32 'd1
# ----------------------------------------------------------------------
# ** Note: $finish : ../../../src/base/ovm_env.sv(267)
# Time: 2 us Iteration: 7 Instance: /xbus_tb_top/ovm_env::run_test
bosman
01-15-2008, 09:09 AM
Yes you need to migrate to Questa 6.3d. The xbus example does not compile on Questa 6.3c.
Bahaa
divyeshg
01-31-2008, 12:28 AM
Hi All,
I am able to compile xbus example after below mention changes.
File: xbus_master_driver.sv
replace below nonblocking statement at line 75, 100, 98 by blocking.
xmi.sig_request[master_id] <= <value>;
as Questa6.3c gives ERROR for any dynamic variable on lhs of non blocking statement.
After Questa 6.3c gives runtime ERROR of bad pointer access at line 77 of xbus_env.sv.
Reason :
File : xbus_env.sv
$cast(masters[i], create_component("xbus_master_agent", inst_name));
at line 76 is not creating the object.
so comment out the line use new construtor :
masters[i] = new(inst_name,this);
same way replace for slave on line no. 84
$cast(slaves[i], create_component("xbus_slave_agent", inst_name));
by
slaves[i] = new(inst_name,this);
After above changes XBUS example will run with Questa 6.3c.
I also have a Query about " Why create component failing in above example?".
Cay anyone clarify it?
Powered by vBulletin™ Version 4.0.3 Copyright © 2010 vBulletin Solutions, Inc. All rights reserved.