Browse Prior Art Database

Method to implement memory in a file for modelling and simulation

IP.com Disclosure Number: IPCOM000013563D
Original Publication Date: 2003-Jun-18
Included in the Prior Art Database: 2003-Jun-18
Document File: 1 page(s) / 38K

Publishing Venue

IBM

Abstract

While writing a BFM or modelling any I/O device for simulation purpose, user always expect it to do the data sanity check. For example, if it is a master device user want it to do the data checking when it receives data for any read transaction, and if it is a slave device user would expect it to do data checking for the data written by the master device and also supply the data for a read transaction requested by the master device. The most common way to do it by declaring a big memory type element in the HDL code and save address and corresponding data. But there are several problems involved in using this. The method described below discusses those problems and how this new method avoids them.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 78% of the total text.

Page 1 of 1

Method to implement memory in a file for modelling and simulation

There are following problems involved with the old way of doing the things :

1)The old method of declaring big memory element , slows down the simulation in case of large memory declaration. 2)It also it puts a limit on the address range user can use in simulation.

3)The command file becomes very large.

The new method proposed here solves all the above problems, runs the simulation faster and this can be easily enhanced to check the other attributes(BEs, length of data etc.) which come along with the transaction data . There will never be a data overflow problem in this method.

In this new method the slave memory can be implemented outside the HDL code in a data file by using three generic

PLI routines "$get_data", "$sav_data" and "$chk_data".

1) Now whenever slave has to return the data in response to a read request , it will use "$get_data" to retrieve the

data from the data file.

2) Whenever some master device writes on the slave, it will call another PLI routine "$sav_data" , which will modify the

data file.

3)In case of master device, whenever it receives data from slave device, master calls the PLI routine "$chk_data" to

verify the data.

The format of the data file will be

Address/Data/<attributes>

This way user never has to declare big memories in simulation and also there won't be any limit on the address range, it may be of any size. And at the end of the simulation user will have the imag...