US5819065A - System and method for emulating memory - Google Patents
- ️Tue Oct 06 1998
US5819065A - System and method for emulating memory - Google Patents
System and method for emulating memory Download PDFInfo
-
Publication number
- US5819065A US5819065A US08/597,197 US59719796A US5819065A US 5819065 A US5819065 A US 5819065A US 59719796 A US59719796 A US 59719796A US 5819065 A US5819065 A US 5819065A Authority
- US
- United States Prior art keywords
- memory
- address
- emulation
- circuit
- design Prior art date
- 1995-06-28 Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/261—Functional testing by simulating additional hardware, e.g. fault simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
Definitions
- This invention relates to the field of circuit emulation systems.
- the invention relates to a system for emulating memory circuit designs within an emulation system.
- Logic emulators test complex circuit designs as the designs develop.
- Logic emulators can include software configurable hardware which emulates the functions of the circuit design.
- the circuit design is specified by a data set that describes the function and behavior of the circuit design.
- Memory circuit designs are one component of circuit designs that need to be emulated. Circuit designs can include many different types of memory circuit designs, for example, single ported random access memory (RAM), and multi-ported video RAM (VRAM). The size of these memory circuit designs can also vary in height and width. For example, a memory circuit design may have 3072 entries (3K high) while each entry may be twenty-four bits wide. Another memory circuit design may be 128 entries high while each entry may be 128 bits wide.
- RAM single ported random access memory
- VRAM multi-ported video RAM
- 5,448,522 describes a system supporting multiport memory circuit emulation using tag registers. Multiple copies of the memory array are created in order to implement as many read ports and write ports as the multiport memory circuit being implemented. However, this has a number of disadvantages. For example, because multiple duplications of the memory array are needed, large amounts of memory is used in the emulator. Additionally, writes in one duplicate of a memory array must be tracked and reflected in the other duplicates of the memory array. This requires additional logic to be used in the memory array.
- a system for emulating memory circuit designs is described.
- the system simultaneously emulates multiple memory circuit designs.
- the address spaces of the memory circuit designs are mapped to the address space of the system's emulation memory.
- the address spaces are also mapped across multiple time periods.
- the system can emulate memory circuits having multiple ports.
- the system includes a time sliced logic emulator.
- the time sliced logic emulator emulates the functions performed in one cycle of a target design by emulating portions of the functions in a set of time slices. That is, a set of time slices represents a single clock cycle in the target design.
- the system emulates many different types of memory designs included in the target design.
- the system includes an emulation memory.
- the memory designs are mapped to the emulation memory via a programmable address generation block.
- the programmable address generation block generates an address that maps all or part of a memory design address to an emulation memory address.
- the programmable address generation block allows multiple memory designs to be mapped to a single emulation memory and allows a single memory design to be mapped to multiple emulation memories.
- the system can emulate many different types of memories.
- FIG. 1 illustrates an emulation system having emulation memory circuits.
- FIG. 2 illustrates an emulation memory circuit for use in the emulation system.
- FIG. 3 illustrates an embodiment of a method of emulating a circuit design that includes memory circuit designs.
- FIG. 4 illustrates an embodiment of a method of mapping memory circuit designs to the emulation memories.
- FIG. 5 illustrates an example of mapping memory circuit designs to an emulation memory address space.
- FIG. 1 illustrates an emulation system for emulating circuit designs including different types of memory designs.
- the emulation system includes a computer system 100 and a logic emulator 150.
- the computer system 100 includes a processor 110, a computer memory 105 and an external interface 120 all coupled together.
- the processor 110 is for executing processes and for controlling the computer memory 105 and the external interface 120.
- the computer memory 105 stores programs and data.
- the external interface 120 communicates with the logic emulator 150.
- the data includes a circuit design 190.
- the circuit design 190 also known as the target design, represents a circuit to be emulated by the logic emulator 150.
- the circuit design 190 includes a VHDL description of a circuit.
- the circuit design 190 includes a Verilog description of a circuit.
- the circuit design 190 includes any number of memory circuit designs 195.
- the memory circuit designs 195 can be of many different types.
- the memory circuit designs 195 can include simple RAM memory designs, multiported cache memory designs, EEPROMs and register files.
- the variety and number of memory designs that can be included in a circuit design 190 is a commercially important aspect of one embodiment of the invention. Designers can emulate more designs more easily than previous systems.
- the computer system 100 includes a workstation from Sun Microsystems, of Mountain View, Calif. In other embodiments, the computer system 100 includes other computers such as an IBM PC compatible, a workstation from Hewlet-Packard, Inc., a workstation from Silicon Graphics, Inc. In another embodiment, the computer system 100 and the logic emulator 150 are included in one computer system.
- the logic emulator 150 emulates the functions of the circuit design 190.
- the logic emulator 150 is described in greater detail in U.S. patent application Ser. No. 08/ToBeCompleted.
- the logic emulator 150 emulates the functions of the circuit design 190 using a technique called time slicing. Time slicing allows the logic emulator 150 to use multiple clock cycles to emulate a function performed in one clock cycle of the circuit design 190. The outputs from one emulator clock cycle are fed back into the emulation circuits to generate new outputs. The emulation circuits are reconfigured between emulator clock cycles, allowing the emulator 150 to emulate the functions of the circuit design 190.
- the logic emulator 150 includes a number of processor boards 160. Each processor board 160 includes a number of integrated circuits 170 connected to a board interface 162 circuit. The integrated circuits 170 can exchange information across processor boards 160 and can therefore work together to emulate the circuit design 190. In one embodiment, one integrated circuit 170 can emulate multiple small memory designs and multiple integrated circuits 170 can emulate one large memory design.
- the integrated circuit 170 includes a number of circuit blocks having the following interconnections.
- the inputs to the integrated circuit 170 are connected to a routing and logic block 172, a backplane selector 174 and the control and output circuits 171.
- the routing and logic block 172 and the backplane selectors 174 are connected to an output selector 176.
- the output of the output selector is connected to a register 178, a feedback selector 179, an emulation memory 180 and the output of the integrated circuit 170.
- the control and output circuits 171 are also connected to the output of the integrated circuit 170.
- the control and output circuits 171 receive control signals from the integrated circuit 170 inputs.
- the control and output circuits 171 generate control signals to control the circuits within the integrated circuit 170.
- the control and output circuits 171 also include a programmable output memory for outputting programmed outputs.
- the backplane selectors include thirty-two 32:1 selectors. This allows the integrated circuit 170 to select any of the thirty-two backplane inputs (from the board interface 162) in any order.
- the routing and logic block 172 includes multiple groups of selectors, registers and programmable logic blocks. During an emulation of a circuit design 190, the routing and logic block 172 is continually programmed and reprogrammed while being fed inputs and feedback from its outputs. Thus, the routing and logic block 172 performs a large part of the emulation process. During an emulation, the routing and logic block 172 is programmed to generated addresses and data for the emulation memory 180.
- the register 178 stores outputs from the output selector 176 for later use, (eg., for programmable pipelining).
- the feedback selector 179 selects between a straight feedback from the output selector 176 or from the output of the register 178.
- the emulation memory 180 enables the emulator 150 to emulate many different types of memory designs.
- the emulation memory 180 receives inputs from the output selector 176 and generates outputs that are fed back into the output selector 176.
- FIG. 2 illustrates one embodiment of the emulation memory 180 of FIG. 1.
- the emulation memory 180 is integrated on the integrated circuit 170.
- the emulation memory 180 is integrated on a separate integrated circuit or on multiple integrated circuits.
- the emulation memory 180 includes the circuits having the following connections.
- the emulation data selectors 200 and the emulation address selectors are connected to the emulation memory 180 input.
- the output of the emulation data selectors 200 is coupled to the data input (thirty-two bit Wdata) of the 4K ⁇ 32 RAM 230.
- the output of the emulation address selectors 210 is coupled to an emulation address register 220.
- the output of the emulation address registers 220 is coupled to the RAM 230 address (twelve bits) and write enable (four bits) inputs.
- the RAM 230 also has a chip select line.
- the output of the RAM 230 (thirty-two bit Rdata) is coupled to the memory output selectors 240.
- the output of the memory output selectors 240 is coupled to the output of the emulation memory 180.
- the emulation data selectors include thirty-two 32:1 selectors.
- the thirty-two input lines come from the thirty-two bit wide input data bus of the emulation memory 180.
- the thirty-two 32:1 selectors allow the emulation data selectors 200 to connect any input line to any Wdata input. This provides flexibility in the system by allowing data for the RAM 230 to be generated on any of the thirty-two bit data lines.
- the emulation address selectors 210 include sixteen 35:1 selectors. Each 35:1 selector has thirty-five input lines that include the thirty-two input lines of the emulation memory 180, a ground line, a VCC line, and a corresponding output line from the emulation address registers 220. For example, the 35:1 selector that outputs the address 224 bit seven for the emulation address registers 220 has the following inputs: bits 31-0 from the emulation memory 180 input bus, VCC, ground, and address 224 bit seven output by the emulation address registers 220. Thus, the emulation data selectors 200 select their output to be from the emulation memory's 180 input, feedback from the emulation address registers 220, set values (0 or 1 from the VCC and ground lines), or combinations of these lines.
- the emulation address registers 220 store the output from the emulation address selectors 210.
- the output of the emulation address registers 220 includes a twelve bit address 224 and four write enable lines.
- the address 224 selects the address of one thirty-two bit entry in the RAM 230 while the four write enables 222 select which of the four bytes of the entry are to be written to.
- any byte in the RAM 230 can be selectively written to.
- the emulation address registers 220 allow the emulation memory 180 to store an address over multiple time slices during an emulation. For example, assume that in a time slice only the least significant sixteen bits of a thirty-two bit data entry are generated by the routing and logic block 172. Assume also that the address for that entry is also generated. The emulation address registers 220 can store that address during the first time slice but only enable the two lowest bytes of an entry in the RAM 230. During the next time slice, the upper sixteen bits of information are generated by the routing and logic block 172. The same address is used but only the upper two bytes of the entry in the RAM 230 are enabled. Thus, the address does not need to be regenerated for multiple memory accesses to the same memory location.
- the output of the RAM 230 (Rdata) is connected to the memory output selectors 240.
- the memory output selectors include thirty-two 32:1 multiplexors. The thirty-two 32:1 multiplexors allow any data line from the RAM 230 to be connected to any data line of the emulation memory's 180 output.
- the emulation data selectors 200, the emulation address selectors 210, the emulation address registers 220, the selectors 240, and the chip select of the RAM 230, are all controlled by the control and output circuits 171.
- the RAM 230 includes a 4K ⁇ 32 static random access memory that has a read port and a write port.
- the RAM 230 is a write-through memory (if a value X is written during a clock cycle, the value X appears at the output of the RAM 230 during that clock cycle).
- other types of memories are used in place and/or in addition to RAM 230, such as a 16K ⁇ 64 EEPROM or a 1M ⁇ 1 DRAM.
- different types of memories replace the RAM 230 on different emulation memories 180 in different integrated circuits 170. Additionally, the RAM 230 need not be included on the integrated circuit 170. Thus, in one embodiment, the RAM 230 is of the integrated circuit 170.
- corresponding changes are made to the emulation data selectors 200, the emulation address selectors 210, the emulation address registers 220 and the memory output selectors 240.
- FIG. 3 illustrates one embodiment of a method of emulating a number of memory circuit designs 195.
- This embodiment can be implemented in the computer system 100 and the emulator 150.
- this embodiment maps the memory circuit designs 195 to one or more emulation memories 180. The mapping involves identifying the memory circuit designs 195 and determining an effective correlation between the memory circuit designs 195's address spaces and the address spaces of the emulation memories 180.
- the computer system 100 identifies the memory circuit designs 195 within the circuit design 190. This can be done by analyzing the behavioral description of the target circuit design.
- the computer system 100 identifies the width, in bits, and the height, in entries, of each memory circuit design. Thus, each memory circuit design is identified by the number of entries in the memory circuit design and the number of bits in each entry. Additionally, the number and types of ports for each memory circuit design are identified. For example, the computer system 100 can identify a memory circuit design as a dual ported RAM with 1K entries and thirty-two bit wide entries.
- block 320 a test is made to determine whether all the memory types have been processed. If not, then block 323 and block 325 are executed.
- each memory circuit design is padded out to the nearest write enable boundary of the RAM 230. For example, if a memory circuit design has entries only four bits wide, but the write enables for the RAM 230 are on eight bit boundaries, then the memory circuit design's width is increased to eight bits. This block, therefore, matches the minimum granularity of the RAM 230 to the width of the memory circuit design's entry. In the case of read only memories, padding is not necessary in all cases, since the output selectors 240 allow memory values to be accessed as individual bits.
- the size, in bits, of each memory circuit design is determined. This is done by multiplying the padded width by the number of entries. For example, for the emulation memory 180 of FIG. 2, a 1K ⁇ 32 memory circuit design has 32,768 bits, while a 1K ⁇ 4 memory circuit design has 8,192 bits (1K ⁇ 8--the width being padded out to eight).
- the memory circuit designs 195 are sorted by size. The largest memories are at the top of the sorted list.
- block 340 the computer system 100 tests to determine whether all the memory circuit designs 195 have been mapped to the emulation memories 180. If not all the memory circuit designs 195 have been mapped then block 343 and block 345 are executed. Thus, block 343 and block 345 are executed for each of the memory circuit designs 195 beginning with the largest sized memory circuit design 195.
- a particular memory circuit design's address space is mapped to the address space of the emulation memories 180.
- the address space of the emulation memories 180 is treated as one large memory space (a memory palette).
- Each memory circuit design is then allocated to a corresponding portion of the memory palette.
- FIG. 4 illustrates block 343.
- additional time slices are allocated for different subspaces if necessary. Ideally, all the memory circuit designs 195 directly map to a part of a RAM 230. However, additional time slices may be necessary where the memory circuit design is for a multiported memory. In the first time slice, the emulation memory 180 can emulate the access by the first port and in the second time slice, the emulation memory 180 can emulate the access by the second port. Thus, in one embodiment, the additional time slices are added for each port of the memory circuit design in excess of one.
- Further additional time slices may be added for memory circuit designs 195 that are wider than the width of the RAM 230.
- the memory circuit design is sixty-four bits wide
- the RAM 230 is thirty-two bits wide.
- the mapping block 343 creates two address subspaces to represent the address space of the memory circuit design. Further assume the two address subspaces are mapped to a single RAM 230 address space. Then, the low order thirty-two bits of an entry for the memory circuit design are written to the RAM 230 in the first time slice and the high order thirty-two bits of that entry are written to the RAM 230 in the second time slice.
- Another reason to add additional time slices occurs where address spaces from different memories are mapped into the same RAM 230's address space and there is a conflict for access to the RAM 230. For example, if two memory circuit designs 195 map into the same RAM 230's address space, and the circuit design 190 defines that both of those memory circuit designs are to be accessed within the same cycle, then an additional time slice may be needed.
- the emulator 150 is programmed by the computer system 100. This involves loading the control and output circuits 171 with the control programs. Part of the load includes the control signals to ensure that the routing and logic blocks 172, and the other components of the integrated circuits 170, provide the correct address and data information to the emulation memory 180 to map the memory circuit address spaces to the emulation memories 180's address space.
- the emulation is executed. This includes providing the emulator 150 with the test vectors to exercise the circuit design 190.
- FIG. 4 illustrates one embodiment of a method of mapping the memory circuit design to the emulation memory 180's address space.
- Block 410 the memory circuit's address space is first divided by the height of the RAM 230 to generate one or more partial address subspaces.
- Block 410 solves the problem of fitting a memory circuit design having a height greater than the height of the RAM 230 into the emulation memory's 180 address space by distributing the memory circuit's address space across multiple RAMs 230.
- the partial address subspaces are then divided further, if necessary.
- the partial address subspaces created in block 410 are divided by the width of the RAM 230 to generate address subspaces.
- the block 410 solves the problem of fitting a memory circuit design having a width greater than the width of a RAM 230 into the emulation memory address space by distributing the memory circuit design's address space across multiple entries in the RAMs 230.
- the entries may be in one or more RAMs 230.
- the computer system 100 determines the relationship between the address subspaces and the emulation address space. This involves assigning a particular subspace to a particular part of a RAM 230 in the logic emulator.
- FIG. 5 illustrates an example of a number of memories in a design being mapped to the emulation memories 180.
- the software tools treat the emulation memories' 180 address space as one large memory palette.
- the memory circuit designs 195 are mapped into that memory palette 500.
- the circuit design 190 includes the following memory circuit designs 195: 8K ⁇ 64 bit memory 510, a 3K ⁇ 24 bit dual ported memory 520, a 4 ⁇ 256 bit memory 530, 128 ⁇ 128 memory 540 and a 32 ⁇ 32 bit memory 550. These memory circuit designs 195 are mapped to the memory palette 500 using the steps in FIG. 3.
- the memory palette 500 only represents an address space of six times 4K ⁇ 32. In one system, the memory palette 500 includes much larger memory spaces.
- the memory pallette 500 includes illustrative 4K ⁇ 32 bit boundaries that represent the physical address spaces of the RAMs 230.
- the memory circuit designs 195 are mapped to the memory palette 500 as follows.
- Block 323 pads the 1K ⁇ 4 memory 530 out to a 1K ⁇ 8 memory 530 in this example where the write enable boundaries of the RAMs 230 are on byte boundaries.
- the following memories have the following sizes shown in Table 1.
- Table 2 shows the sorted list of memory circuit designs 195 after executing block 330.
- each of the memory circuit designs 195 are mapped to the memory palette 500.
- the 8K ⁇ 64 memory's 510 address space is broken into two partial subspaces of 4K ⁇ 64 each.
- the two partial subspaces are further broken into complete subspaces of 4K ⁇ 32 each.
- these four complete subspaces are mapped to the memory palette 500's first available address spaces (the address spaces of the first four emulation memories 180).
- Block 410 and block 420 are executed for the 3K ⁇ 24 memory 520 resulting in one address subspace of 3K ⁇ 24. This address subspace is mapped, at block 430, to the next available part of the memory palette 500.
- Block 410 results in an 128 ⁇ 128 partial address subspace.
- Block 420 results in four 128 ⁇ 32 complete address subspaces.
- the computer system 100 then maps these subspaces to the next available space in the memory palette 500.
- Block 410 and block 420 are then executed for the 1K ⁇ 4 memory 530 resulting in an address subspace of 1K ⁇ 8. Because there is still room in the fifth emulation memory 180's address space, the 1K ⁇ 8 address subspace is mapped to the space next to the 1K ⁇ 24 address subspace.
- the 32 ⁇ 32 memory 550 is run through block 410 and block 420. These are mapped to the next available areas of the memory palette 500.
- Table 3 shows the results of block 345. After the mapping is done for a memory circuit design 195, then block 345 is executed. Table 3 illustrates the results of the time slice allocation.
- a conflict arises where multiple ports on a memory circuit design exist (e.g., 3K ⁇ 24 dual ported memory 520). A conflict also arises where multiple address subspaces for a memory circuit design are mapped into the same RAM 230 (e.g., 128 ⁇ 128 memory 540). Further, a conflict arises where two or more memory circuit designs 195 are to be written to, or read from, in the same clock cycle of the circuit design 190 (e.g., 3K ⁇ 24 memory 520, 1K ⁇ 4 memory 530 and 32 ⁇ 32 memory 550). Assume, for this example, every memory circuit design 195 is to be written to or read from in every clock cycle of the circuit design 190. In many circuit designs 190, this is not true and will not result in a conflict and therefore will not require multiple time slices to resolve.
- memory circuit designs 195 that are accessed in the same clock cycle of the circuit design 190 are mapped to different RAM 230s to avoid adding additional time slices.
- the set of subspaces created from memory circuit designs 195 that are wider than thirty-two bits are mapped across multiple RAM 230s. This reduces the number of time slices needed at the expense of potentially duplicating work in the routing and logic block 172.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
A system and method for emulating memory designs is described. The system includes a time sliced logic emulator. The time sliced logic emulator emulates the functions performed in one cycle of a target design by emulating portions of the functions in a set of time slices. That is, a set of time slices represents a single clock cycle in the target design. The system emulates many different types of memory designs included in the target design. The system includes an emulation memory. The memory designs are mapped to the emulation memory via a programmable address generation block. For a given time slice, the programmable address generation block generates an address that maps all or part of a memory design address to an emulation memory address. The programmable address generation block allows multiple memory designs to be mapped to a single emulation memory and allows a single memory design to be mapped to multiple emulation memories. Thus, over multiple time slices, the system can emulate many different types of memories.
Description
This application is a continuation-in-part of prior filed U.S. application Ser. No. 08/496,239, entitled EMULATION SYSTEM HAVING MULTIPLE EMULATED CLOCK CYCLES PER EMULATOR CLOCK CYCLE AND IMPROVED SIGNAL ROUTING, filed Jun. 28, 1995, which is incorporated by reference.
THE BACKGROUND OF THE INVENTIONa. The Field of the Invention
This invention relates to the field of circuit emulation systems. In particular, the invention relates to a system for emulating memory circuit designs within an emulation system.
b. A Description of the Related Art
As electronic circuit designs continue to increase in speed and complexity, the testing of the developing circuit designs at various stages of development becomes even more critical. Logic emulators test complex circuit designs as the designs develop. Logic emulators can include software configurable hardware which emulates the functions of the circuit design. The circuit design is specified by a data set that describes the function and behavior of the circuit design.
Memory circuit designs are one component of circuit designs that need to be emulated. Circuit designs can include many different types of memory circuit designs, for example, single ported random access memory (RAM), and multi-ported video RAM (VRAM). The size of these memory circuit designs can also vary in height and width. For example, a memory circuit design may have 3072 entries (3K high) while each entry may be twenty-four bits wide. Another memory circuit design may be 128 entries high while each entry may be 128 bits wide.
In previous logic emulators, designers have had to wire up their own working versions of the memory circuit designs. The designer then interfaces the wired up memory circuit to the logic emulator. This is undesirable for a number of reasons. First, a designer cannot simply use the software description of the circuit design directly in the logic emulator because the memory circuit designs must be removed or otherwise disabled. Second, the designer must build the physical memory circuits to interface to the emulator. This is a time consuming, error prone, and costly procedure that limits a designer's ability to easily try new memory circuit designs. Third, the logic emulator must interface directly with the wired up version of the memory circuit design. This adds expense to the logic emulator and ties up hardware interface resources that could be used to interface the logic emulator with other external circuits. U.S. Pat. No. 5,448,522 describes a system supporting multiport memory circuit emulation using tag registers. Multiple copies of the memory array are created in order to implement as many read ports and write ports as the multiport memory circuit being implemented. However, this has a number of disadvantages. For example, because multiple duplications of the memory array are needed, large amounts of memory is used in the emulator. Additionally, writes in one duplicate of a memory array must be tracked and reflected in the other duplicates of the memory array. This requires additional logic to be used in the memory array.
Therefore, what is needed is an improved logic emulator.
A SUMMARY OF THE INVENTIONA system for emulating memory circuit designs is described. The system simultaneously emulates multiple memory circuit designs. The address spaces of the memory circuit designs are mapped to the address space of the system's emulation memory. The address spaces are also mapped across multiple time periods. Thus, the system can emulate memory circuits having multiple ports.
A system and method for emulating memory circuit designs is described. The system includes a time sliced logic emulator. The time sliced logic emulator emulates the functions performed in one cycle of a target design by emulating portions of the functions in a set of time slices. That is, a set of time slices represents a single clock cycle in the target design. The system emulates many different types of memory designs included in the target design. The system includes an emulation memory. The memory designs are mapped to the emulation memory via a programmable address generation block. For a given time slice, the programmable address generation block generates an address that maps all or part of a memory design address to an emulation memory address. The programmable address generation block allows multiple memory designs to be mapped to a single emulation memory and allows a single memory design to be mapped to multiple emulation memories. Thus, over multiple time slices, the system can emulate many different types of memories.
Although many details have been included in the description and the figures, the invention is defined by the scope of the claims. Only limitations found in those claims apply to the invention.
A BRIEF DESCRIPTION OF THE DRAWINGSThe figures illustrate the invention by way of example, and not limitation. Like references indicate similar elements.
FIG. 1 illustrates an emulation system having emulation memory circuits.
FIG. 2 illustrates an emulation memory circuit for use in the emulation system.
FIG. 3 illustrates an embodiment of a method of emulating a circuit design that includes memory circuit designs.
FIG. 4 illustrates an embodiment of a method of mapping memory circuit designs to the emulation memories.
FIG. 5 illustrates an example of mapping memory circuit designs to an emulation memory address space.
THE DESCRIPTION a. An Emulation SystemFIG. 1 illustrates an emulation system for emulating circuit designs including different types of memory designs. The emulation system includes a
computer system100 and a
logic emulator150.
The
computer system100 includes a
processor110, a
computer memory105 and an
external interface120 all coupled together. The
processor110 is for executing processes and for controlling the
computer memory105 and the
external interface120. The
computer memory105 stores programs and data. The
external interface120 communicates with the
logic emulator150. The data includes a
circuit design190. The
circuit design190, also known as the target design, represents a circuit to be emulated by the
logic emulator150. In one embodiment, the
circuit design190 includes a VHDL description of a circuit. In another embodiment, the
circuit design190 includes a Verilog description of a circuit. Importantly, the
circuit design190 includes any number of memory circuit designs 195. The memory circuit designs 195 can be of many different types. For example, the memory circuit designs 195 can include simple RAM memory designs, multiported cache memory designs, EEPROMs and register files. The variety and number of memory designs that can be included in a
circuit design190 is a commercially important aspect of one embodiment of the invention. Designers can emulate more designs more easily than previous systems.
In one embodiment, the
computer system100 includes a workstation from Sun Microsystems, of Mountain View, Calif. In other embodiments, the
computer system100 includes other computers such as an IBM PC compatible, a workstation from Hewlet-Packard, Inc., a workstation from Silicon Graphics, Inc. In another embodiment, the
computer system100 and the
logic emulator150 are included in one computer system.
The
logic emulator150 emulates the functions of the
circuit design190. The
logic emulator150 is described in greater detail in U.S. patent application Ser. No. 08/ToBeCompleted. In one embodiment, the
logic emulator150 emulates the functions of the
circuit design190 using a technique called time slicing. Time slicing allows the
logic emulator150 to use multiple clock cycles to emulate a function performed in one clock cycle of the
circuit design190. The outputs from one emulator clock cycle are fed back into the emulation circuits to generate new outputs. The emulation circuits are reconfigured between emulator clock cycles, allowing the
emulator150 to emulate the functions of the
circuit design190.
The
logic emulator150 includes a number of
processor boards160. Each
processor board160 includes a number of
integrated circuits170 connected to a
board interface162 circuit. The
integrated circuits170 can exchange information across
processor boards160 and can therefore work together to emulate the
circuit design190. In one embodiment, one
integrated circuit170 can emulate multiple small memory designs and multiple
integrated circuits170 can emulate one large memory design.
The
integrated circuit170 includes a number of circuit blocks having the following interconnections. The inputs to the
integrated circuit170 are connected to a routing and
logic block172, a
backplane selector174 and the control and
output circuits171. The routing and
logic block172 and the
backplane selectors174 are connected to an
output selector176. The output of the output selector is connected to a
register178, a
feedback selector179, an
emulation memory180 and the output of the
integrated circuit170. The control and
output circuits171 are also connected to the output of the
integrated circuit170.
The control and
output circuits171 receive control signals from the
integrated circuit170 inputs. The control and
output circuits171 generate control signals to control the circuits within the
integrated circuit170. The control and
output circuits171 also include a programmable output memory for outputting programmed outputs.
The backplane selectors include thirty-two 32:1 selectors. This allows the
integrated circuit170 to select any of the thirty-two backplane inputs (from the board interface 162) in any order.
The routing and
logic block172 includes multiple groups of selectors, registers and programmable logic blocks. During an emulation of a
circuit design190, the routing and
logic block172 is continually programmed and reprogrammed while being fed inputs and feedback from its outputs. Thus, the routing and
logic block172 performs a large part of the emulation process. During an emulation, the routing and
logic block172 is programmed to generated addresses and data for the
emulation memory180.
The
register178 stores outputs from the
output selector176 for later use, (eg., for programmable pipelining).
The
feedback selector179 selects between a straight feedback from the
output selector176 or from the output of the
register178.
The
emulation memory180 enables the
emulator150 to emulate many different types of memory designs. The
emulation memory180 receives inputs from the
output selector176 and generates outputs that are fed back into the
output selector176.
FIG. 2 illustrates one embodiment of the
emulation memory180 of FIG. 1. In one embodiment, the
emulation memory180 is integrated on the
integrated circuit170. In another embodiment, the
emulation memory180 is integrated on a separate integrated circuit or on multiple integrated circuits.
The
emulation memory180 includes the circuits having the following connections. The emulation data selectors 200 and the emulation address selectors are connected to the
emulation memory180 input. The output of the emulation data selectors 200 is coupled to the data input (thirty-two bit Wdata) of the 4K×32
RAM230. The output of the
emulation address selectors210 is coupled to an
emulation address register220. The output of the emulation address registers 220 is coupled to the
RAM230 address (twelve bits) and write enable (four bits) inputs. The
RAM230 also has a chip select line. The output of the RAM 230 (thirty-two bit Rdata) is coupled to the
memory output selectors240. The output of the
memory output selectors240 is coupled to the output of the
emulation memory180.
The emulation data selectors include thirty-two 32:1 selectors. The thirty-two input lines come from the thirty-two bit wide input data bus of the
emulation memory180. The thirty-two 32:1 selectors allow the emulation data selectors 200 to connect any input line to any Wdata input. This provides flexibility in the system by allowing data for the
RAM230 to be generated on any of the thirty-two bit data lines.
The
emulation address selectors210 include sixteen 35:1 selectors. Each 35:1 selector has thirty-five input lines that include the thirty-two input lines of the
emulation memory180, a ground line, a VCC line, and a corresponding output line from the emulation address registers 220. For example, the 35:1 selector that outputs the
address224 bit seven for the emulation address registers 220 has the following inputs: bits 31-0 from the
emulation memory180 input bus, VCC, ground, and address 224 bit seven output by the emulation address registers 220. Thus, the emulation data selectors 200 select their output to be from the emulation memory's 180 input, feedback from the emulation address registers 220, set values (0 or 1 from the VCC and ground lines), or combinations of these lines.
The emulation address registers 220 store the output from the
emulation address selectors210. The output of the emulation address registers 220 includes a twelve
bit address224 and four write enable lines. The
address224 selects the address of one thirty-two bit entry in the
RAM230 while the four write enables 222 select which of the four bytes of the entry are to be written to. Thus, using the combination of the
address224 and the write enable 222, any byte in the
RAM230 can be selectively written to.
The emulation address registers 220 allow the
emulation memory180 to store an address over multiple time slices during an emulation. For example, assume that in a time slice only the least significant sixteen bits of a thirty-two bit data entry are generated by the routing and
logic block172. Assume also that the address for that entry is also generated. The emulation address registers 220 can store that address during the first time slice but only enable the two lowest bytes of an entry in the
RAM230. During the next time slice, the upper sixteen bits of information are generated by the routing and
logic block172. The same address is used but only the upper two bytes of the entry in the
RAM230 are enabled. Thus, the address does not need to be regenerated for multiple memory accesses to the same memory location.
The output of the RAM 230 (Rdata) is connected to the
memory output selectors240. The memory output selectors include thirty-two 32:1 multiplexors. The thirty-two 32:1 multiplexors allow any data line from the
RAM230 to be connected to any data line of the emulation memory's 180 output.
The emulation data selectors 200, the
emulation address selectors210, the emulation address registers 220, the
selectors240, and the chip select of the
RAM230, are all controlled by the control and
output circuits171.
The
RAM230 includes a 4K×32 static random access memory that has a read port and a write port. The
RAM230 is a write-through memory (if a value X is written during a clock cycle, the value X appears at the output of the
RAM230 during that clock cycle). In other embodiments, other types of memories are used in place and/or in addition to
RAM230, such as a 16K×64 EEPROM or a 1M×1 DRAM. In other embodiments, different types of memories replace the
RAM230 on
different emulation memories180 in different
integrated circuits170. Additionally, the
RAM230 need not be included on the
integrated circuit170. Thus, in one embodiment, the
RAM230 is of the
integrated circuit170. For these other types of memories, corresponding changes are made to the emulation data selectors 200, the
emulation address selectors210, the emulation address registers 220 and the
memory output selectors240.
FIG. 3 illustrates one embodiment of a method of emulating a number of memory circuit designs 195. This embodiment can be implemented in the
computer system100 and the
emulator150. Generally, this embodiment maps the memory circuit designs 195 to one or
more emulation memories180. The mapping involves identifying the memory circuit designs 195 and determining an effective correlation between the memory circuit designs 195's address spaces and the address spaces of the
emulation memories180.
At
block310, the
computer system100 identifies the memory circuit designs 195 within the
circuit design190. This can be done by analyzing the behavioral description of the target circuit design. The
computer system100 identifies the width, in bits, and the height, in entries, of each memory circuit design. Thus, each memory circuit design is identified by the number of entries in the memory circuit design and the number of bits in each entry. Additionally, the number and types of ports for each memory circuit design are identified. For example, the
computer system100 can identify a memory circuit design as a dual ported RAM with 1K entries and thirty-two bit wide entries.
Next, at
block320, a test is made to determine whether all the memory types have been processed. If not, then block 323 and block 325 are executed.
At
block323, the width of each memory circuit design is padded out to the nearest write enable boundary of the
RAM230. For example, if a memory circuit design has entries only four bits wide, but the write enables for the
RAM230 are on eight bit boundaries, then the memory circuit design's width is increased to eight bits. This block, therefore, matches the minimum granularity of the
RAM230 to the width of the memory circuit design's entry. In the case of read only memories, padding is not necessary in all cases, since the
output selectors240 allow memory values to be accessed as individual bits.
Next, at
block325, the size, in bits, of each memory circuit design is determined. This is done by multiplying the padded width by the number of entries. For example, for the
emulation memory180 of FIG. 2, a 1K×32 memory circuit design has 32,768 bits, while a 1K×4 memory circuit design has 8,192 bits (1K×8--the width being padded out to eight).
After all the memory circuit designs have been processed, then at
block330, the memory circuit designs 195 are sorted by size. The largest memories are at the top of the sorted list.
Next, at
block340, the
computer system100 tests to determine whether all the memory circuit designs 195 have been mapped to the
emulation memories180. If not all the memory circuit designs 195 have been mapped then block 343 and block 345 are executed. Thus, block 343 and block 345 are executed for each of the memory circuit designs 195 beginning with the largest sized
memory circuit design195.
At
block343, a particular memory circuit design's address space is mapped to the address space of the
emulation memories180. The address space of the
emulation memories180 is treated as one large memory space (a memory palette). Each memory circuit design is then allocated to a corresponding portion of the memory palette. FIG. 4 illustrates
block343.
At
block345, additional time slices are allocated for different subspaces if necessary. Ideally, all the memory circuit designs 195 directly map to a part of a
RAM230. However, additional time slices may be necessary where the memory circuit design is for a multiported memory. In the first time slice, the
emulation memory180 can emulate the access by the first port and in the second time slice, the
emulation memory180 can emulate the access by the second port. Thus, in one embodiment, the additional time slices are added for each port of the memory circuit design in excess of one.
Further additional time slices may be added for memory circuit designs 195 that are wider than the width of the
RAM230. For example, assume the memory circuit design is sixty-four bits wide, the
RAM230 is thirty-two bits wide. Further assume that the
mapping block343 creates two address subspaces to represent the address space of the memory circuit design. Further assume the two address subspaces are mapped to a
single RAM230 address space. Then, the low order thirty-two bits of an entry for the memory circuit design are written to the
RAM230 in the first time slice and the high order thirty-two bits of that entry are written to the
RAM230 in the second time slice.
Another reason to add additional time slices occurs where address spaces from different memories are mapped into the
same RAM230's address space and there is a conflict for access to the
RAM230. For example, if two memory circuit designs 195 map into the
same RAM230's address space, and the
circuit design190 defines that both of those memory circuit designs are to be accessed within the same cycle, then an additional time slice may be needed.
After all the
memory circuit design195 address spaces have been mapped to the
emulation memories180, at
block350, the
emulator150 is programmed by the
computer system100. This involves loading the control and
output circuits171 with the control programs. Part of the load includes the control signals to ensure that the routing and logic blocks 172, and the other components of the
integrated circuits170, provide the correct address and data information to the
emulation memory180 to map the memory circuit address spaces to the
emulation memories180's address space. Next, the emulation is executed. This includes providing the
emulator150 with the test vectors to exercise the
circuit design190.
FIG. 4 illustrates one embodiment of a method of mapping the memory circuit design to the
emulation memory180's address space.
At
block410, the memory circuit's address space is first divided by the height of the
RAM230 to generate one or more partial address subspaces.
Block410 solves the problem of fitting a memory circuit design having a height greater than the height of the
RAM230 into the emulation memory's 180 address space by distributing the memory circuit's address space across
multiple RAMs230.
At
block420, the partial address subspaces are then divided further, if necessary. The partial address subspaces created in
block410 are divided by the width of the
RAM230 to generate address subspaces. Thus, the
block410 solves the problem of fitting a memory circuit design having a width greater than the width of a
RAM230 into the emulation memory address space by distributing the memory circuit design's address space across multiple entries in the
RAMs230. The entries may be in one or
more RAMs230.
At
block430, the
computer system100 determines the relationship between the address subspaces and the emulation address space. This involves assigning a particular subspace to a particular part of a
RAM230 in the logic emulator.
FIG. 5 illustrates an example of a number of memories in a design being mapped to the
emulation memories180. Importantly, as noted above, the software tools treat the emulation memories' 180 address space as one large memory palette. The memory circuit designs 195 are mapped into that
memory palette500.
In this example, the
circuit design190 includes the following memory circuit designs 195: 8K×64
bit memory510, a 3K×24 bit dual ported
memory520, a 4×256
bit memory530, 128×128
memory540 and a 32×32
bit memory550. These memory circuit designs 195 are mapped to the
memory palette500 using the steps in FIG. 3.
For the purposes of this example, the
memory palette500 only represents an address space of six
times4K×32. In one system, the
memory palette500 includes much larger memory spaces. The
memory pallette500 includes illustrative 4K×32 bit boundaries that represent the physical address spaces of the
RAMs230.
Following the embodiments described in FIG. 3 and FIG. 4, the memory circuit designs 195 are mapped to the
memory palette500 as follows.
First, at
block310, all the memory circuit designs 195 are identified. Next, block 323 and block 345 are executed for each
memory circuit design195.
Block323 pads the 1K×4
memory530 out to a 1K×8
memory530 in this example where the write enable boundaries of the
RAMs230 are on byte boundaries. Thus, the following memories have the following sizes shown in Table 1.
TABLE 1 ______________________________________ Memory Circuit Design 195 Size in Bits ______________________________________ 8K × 64 Memory 510 52488 32 × 32 Memory 550 1024 128 × 128 Memory 540 16382 3K × 24 Memory 520 73728 1K × 4 Memory 530 8192 ______________________________________
Table 2 shows the sorted list of memory circuit designs 195 after executing
block330.
TABLE 2 ______________________________________ Memory Circuit Design 195 Size in Bits ______________________________________ 8K × 64 Memory 510 524288 3K × 24 Memory 520 73728 128 × 128 Memory 540 16382 1K × 4 Memory 530 8192 32 × 32 Memory 550 1024 ______________________________________
Next, each of the memory circuit designs 195 are mapped to the
memory palette500. At
block410, the 8K×64 memory's 510 address space is broken into two partial subspaces of 4K×64 each. At
block420, the two partial subspaces are further broken into complete subspaces of 4K×32 each. At
block430, these four complete subspaces are mapped to the
memory palette500's first available address spaces (the address spaces of the first four emulation memories 180).
Block410 and block 420 are executed for the 3K×24
memory520 resulting in one address subspace of 3K×24. This address subspace is mapped, at
block430, to the next available part of the
memory palette500. Next, the 128×128
memory540 is run through
block410 and block 420.
Block410 results in an 128×128 partial address subspace.
Block420 results in four 128×32 complete address subspaces. The
computer system100 then maps these subspaces to the next available space in the
memory palette500.
Block410 and block 420 are then executed for the 1K×4
memory530 resulting in an address subspace of 1K×8. Because there is still room in the
fifth emulation memory180's address space, the 1K×8 address subspace is mapped to the space next to the 1K×24 address subspace. Next, the 32×32
memory550 is run through
block410 and block 420. These are mapped to the next available areas of the
memory palette500.
Table 3 shows the results of
block345. After the mapping is done for a
memory circuit design195, then block 345 is executed. Table 3 illustrates the results of the time slice allocation.
In the time slice allocation, a number of conflicts result in additional time slices being required. A conflict arises where multiple ports on a memory circuit design exist (e.g., 3K×24 dual ported memory 520). A conflict also arises where multiple address subspaces for a memory circuit design are mapped into the same RAM 230 (e.g., 128×128 memory 540). Further, a conflict arises where two or more memory circuit designs 195 are to be written to, or read from, in the same clock cycle of the circuit design 190 (e.g., 3K×24
memory520, 1K×4
memory530 and 32×32 memory 550). Assume, for this example, every
memory circuit design195 is to be written to or read from in every clock cycle of the
circuit design190. In many circuit designs 190, this is not true and will not result in a conflict and therefore will not require multiple time slices to resolve.
TABLE 3 ______________________________________ Memory Circuit Emulation Design Address RAM Memory 180 Time 195 Space Subspace 230 Address Space Slice ______________________________________ 8K × 64 1FFF-0: FFF-0: bits 31-0 0 0FFF-0: bits 31-0 1 Memory bits FFF-0: bits 63-32 1 0FFF-0: bits 31-0 1 510 63-0 1FFF-1000: bits 2 0FFF-0: bits 31-0 1 31-0 1FFF-1000: bits 3 0FFF-0: bits 31-0 1 63-32 3K × 24 BFF-0: BFF-0: bits 23-0 4 BFF-0: bits 23-0 1- Memory bits Port 520 23-0 0 2- Port 1 128 × 128 7F-0: 7F-0: bits 31-0 5 7F-0: bits 31-0 1 Memory bits 7F-0: bits 63-32 5 FF-80: bits 31-0 2 540 127-0 7F-0: bits 95-64 5 17F-100: bits 3 31-0 7F-0: bits 127-96 5 1FF-80: bits 31-0 4 1K × 4 3FF-0: 3FF-0: bits 7-0 4 3FF-0: bits 32-24 3 Memory bits 530 3-0 32 × 32 IF-0: 1F-0: bits 31-0 4 C1F-C00: bits 4 Memory bits 31-0 550 31-0 ______________________________________
Other embodiments have numerous improvements over the basic mapping algorithm described above. For example, in one embodiment, memory circuit designs 195 that are accessed in the same clock cycle of the
circuit design190 are mapped to different RAM 230s to avoid adding additional time slices. In another embodiment, the set of subspaces created from memory circuit designs 195 that are wider than thirty-two bits are mapped across multiple RAM 230s. This reduces the number of time slices needed at the expense of potentially duplicating work in the routing and
logic block172.
Claims (8)
1. An emulation memory comprising:
a memory circuit having an address port and a data port;
an address circuit having an address output port coupled to said address port, said address circuit being programmable, said address circuit mapping a set of addresses of a plurality of target memories to a set of emulation memory addresses over a set of time periods, said set of target memories includes a first target memory of a first type and a second target memory of a second type, said first target memory and said second target memory for receiving addresses during a single cycle of a target design, and wherein said address circuit is for generating a first emulation address corresponding to a first target memory address during a first cycle of said emulation memory, and a second target memory address corresponding to a second target memory address during a second cycle of said emulation memory.
2. An emulation memory comprising:
a memory circuit having an address port and a data port:
an address circuit having an address output port coupled to said address port, said address circuit being programmable, said address circuit mapping a set of addresses of a plurality of target memories to a set of emulation memory addresses over a set of time periods, said emulation memory further including a first memory circuit and a second memory circuit, each memory circuit for storing an N words of data, and wherein said set of target memories includes a first target memory design for storing a M words of data, where M is greater than N, and wherein said address circuit includes a first address circuit for generating a first set of emulation addresses for said first memory corresponding to N words of data of said M words of data, and wherein said address circuit includes a second address circuit for generating a set of second emulation addresses for said second memory corresponding to M-N words of data of said M words of data.
3. The emulation memory of claim 2 wherein N is 4096 and M is 6144 and said first set of emulation addresses correspond to word zero through word 4095 of said M words of data and where said second set of emulation addresses correspond to word 4096 through word 6143.
4. An emulation memory comprising:
a memory circuit having an address port and a data port;
an address circuit having an address output port coupled to said address port, said address circuit being programmable, said address circuit mapping a set of addresses of a plurality of target memories to a set of emulation memory addresses over a set of time periods;
a first memory circuit for storing an N bit wide data word, and wherein said set of target memories includes a first target memory design for storing a M bit wide data word, where M is greater than N, and wherein said address circuit includes a first address circuit for generating a first emulation address for said first memory corresponding to N bits of said M bit wide data word, and wherein said first address circuit is for generating a second emulation address for said first memory circuit corresponding to M-N bits of said M bit wide data word.
5. The emulation memory of claim 4 wherein N is thirty-two and M is sixty-four.
6. a method of emulating a set of memory designs in an emulator, said emulator including an address circuit and a memory circuit, said memory circuit includes a set of emulation memories, each emulation memory being N bits in size, and wherein a first memory design being M bits in size, M being greater than N said method comprising:
mapping each memory design to an address space in said memory circuit and to a set of time slices, said set of time slices corresponding to a cycle in said each memory design, said mapping step further comprising:
mapping N low order bits of said first memory design to a first emulation memory;
mapping M-N high order bits of said first memory design to a second emulation memory;
responsive to receiving a memory design function command, performing the following, generating a set of memory addresses in said address space over a corresponding set of time slices; and
performing a set of memory functions on said memory circuit over said corresponding set of time slices and using said set of memory addresses, said set of memory functions emulation said memory design function.
7. The method of claim 6 wherein N is 131,072 bits.
8. A method of emulating a set of memory designs in an emulator, said emulator including an address circuit and a memory circuit, said memory circuit includes an emulation memory having a 32 bit word and wherein a first memory design having a 64 bit wide word said method comprising:
mapping each memory design to an address space in said memory circuit and to a set of time slices, said set of time slices corresponding to a cycle in said each memory design, said mapping step further comprises:
mapping bits 31-0 of said 64 bit wide word to a first word of a first pair of words in said emulation memory; and
mapping bits 63-32 of said 64 bit wide word to a second word of said first pair of words;
responsive to receiving a memory design function command, performing the following, generating a set of memory addresses in said address space over a corresponding set of time slices; and
performing a set of memory functions on said memory circuit over said corresponding set of time slices and using said set of memory addresses, said set of memory functions emulating said memory design function.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/597,197 US5819065A (en) | 1995-06-28 | 1996-02-06 | System and method for emulating memory |
DE69737757T DE69737757T2 (en) | 1996-02-06 | 1997-02-05 | System and method for memory emulation |
EP97101802A EP0789311B1 (en) | 1996-02-06 | 1997-02-05 | System and method for emulating memory |
JP05975397A JP3995751B2 (en) | 1996-02-06 | 1997-02-06 | System and method for emulating memory |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/496,239 US5923865A (en) | 1995-06-28 | 1995-06-28 | Emulation system having multiple emulated clock cycles per emulator clock cycle and improved signal routing |
US08/597,197 US5819065A (en) | 1995-06-28 | 1996-02-06 | System and method for emulating memory |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/496,239 Continuation-In-Part US5923865A (en) | 1995-06-28 | 1995-06-28 | Emulation system having multiple emulated clock cycles per emulator clock cycle and improved signal routing |
Publications (1)
Publication Number | Publication Date |
---|---|
US5819065A true US5819065A (en) | 1998-10-06 |
Family
ID=24390505
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/597,197 Expired - Lifetime US5819065A (en) | 1995-06-28 | 1996-02-06 | System and method for emulating memory |
Country Status (4)
Country | Link |
---|---|
US (1) | US5819065A (en) |
EP (1) | EP0789311B1 (en) |
JP (1) | JP3995751B2 (en) |
DE (1) | DE69737757T2 (en) |
Cited By (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6141636A (en) * | 1997-03-31 | 2000-10-31 | Quickturn Design Systems, Inc. | Logic analysis subsystem in a time-sliced emulator |
US6230114B1 (en) | 1999-10-29 | 2001-05-08 | Vast Systems Technology Corporation | Hardware and software co-simulation including executing an analyzed user program |
WO2001035629A2 (en) * | 1999-11-08 | 2001-05-17 | Ondotek, Inc. | Data image management via emulation of persistent storage device |
US6279146B1 (en) | 1999-01-06 | 2001-08-21 | Simutech Corporation | Apparatus and method for verifying a multi-component electronic design |
US20030088396A1 (en) * | 2001-11-06 | 2003-05-08 | Kuan Chou Chen | Apparatus in an ICE system |
US6618698B1 (en) | 1999-08-12 | 2003-09-09 | Quickturn Design Systems, Inc. | Clustered processors in an emulation engine |
US20030188278A1 (en) * | 2002-03-26 | 2003-10-02 | Carrie Susan Elizabeth | Method and apparatus for accelerating digital logic simulations |
US6763029B2 (en) * | 1996-09-11 | 2004-07-13 | Mcdata Corporation | Low latency shared memory switch architecture |
US6799157B1 (en) * | 1999-03-23 | 2004-09-28 | Seiko Epson Corporation | Method for improving pin compatibility in microcomputer emulation equipment |
US20050160097A1 (en) * | 2001-03-22 | 2005-07-21 | Gschwind Michael K. | SIMD-RISC microprocessor architecture |
US20050204325A1 (en) * | 2002-11-14 | 2005-09-15 | Altera Corporation. | Method for mapping logic design memory into physical memory devices of a programmable logic device |
EP1710722A1 (en) * | 2005-04-06 | 2006-10-11 | Quickturn Design Systems, Inc. | System and method for providing compact mapping between dissimilar memory systems |
US20070094534A1 (en) * | 2005-10-24 | 2007-04-26 | Andreev Alexander E | RRAM memory error emulation |
CN100359473C (en) * | 2003-01-23 | 2008-01-02 | 快速转动设计系统公司 | Memory rewind and reconstruction for hardware emulator |
US20090106604A1 (en) * | 2005-05-02 | 2009-04-23 | Alexander Lange | Procedure and device for emulating a programmable unit |
US7555424B2 (en) | 2006-03-16 | 2009-06-30 | Quickturn Design Systems, Inc. | Method and apparatus for rewinding emulated memory circuits |
US20090216939A1 (en) * | 2008-02-21 | 2009-08-27 | Smith Michael J S | Emulation of abstracted DIMMs using abstracted DRAMs |
US20090292523A1 (en) * | 2005-04-06 | 2009-11-26 | Quickturn Design Systems, Inc. | System and Method for Providing Compact Mapping Between Dissimilar Memory Systems |
US20100020585A1 (en) * | 2005-09-02 | 2010-01-28 | Rajan Suresh N | Methods and apparatus of stacking drams |
US20100161308A1 (en) * | 2008-12-22 | 2010-06-24 | Unity Semiconductor Corporation | Multi-structured memory |
US20100281280A1 (en) * | 2006-07-31 | 2010-11-04 | Google Inc. | Interface Circuit System And Method For Performing Power Management Operations In Conjunction With Only A Portion Of A Memory Circuit |
US8080874B1 (en) | 2007-09-14 | 2011-12-20 | Google Inc. | Providing additional space between an integrated circuit and a circuit board for positioning a component therebetween |
US8089795B2 (en) | 2006-02-09 | 2012-01-03 | Google Inc. | Memory module with memory stack and interface with enhanced capabilities |
US8112266B2 (en) | 2006-07-31 | 2012-02-07 | Google Inc. | Apparatus for simulating an aspect of a memory circuit |
US8111566B1 (en) | 2007-11-16 | 2012-02-07 | Google, Inc. | Optimal channel design for memory devices for providing a high-speed memory interface |
US8122207B2 (en) | 2006-07-31 | 2012-02-21 | Google Inc. | Apparatus and method for power management of memory circuits by a system or component thereof |
US8130560B1 (en) | 2006-11-13 | 2012-03-06 | Google Inc. | Multi-rank partial width memory modules |
US8244971B2 (en) | 2006-07-31 | 2012-08-14 | Google Inc. | Memory circuit system and method |
US8280714B2 (en) | 2006-07-31 | 2012-10-02 | Google Inc. | Memory circuit simulation system and method with refresh capabilities |
US8327104B2 (en) | 2006-07-31 | 2012-12-04 | Google Inc. | Adjusting the timing of signals associated with a memory system |
US8335894B1 (en) | 2008-07-25 | 2012-12-18 | Google Inc. | Configurable memory system with interface circuit |
US8370566B2 (en) | 2006-10-05 | 2013-02-05 | Google Inc. | System and method for increasing capacity, performance, and flexibility of flash storage |
US8386833B2 (en) | 2005-06-24 | 2013-02-26 | Google Inc. | Memory systems and memory modules |
US8386722B1 (en) | 2008-06-23 | 2013-02-26 | Google Inc. | Stacked DIMM memory interface |
US8397013B1 (en) | 2006-10-05 | 2013-03-12 | Google Inc. | Hybrid memory module |
US8566516B2 (en) | 2006-07-31 | 2013-10-22 | Google Inc. | Refresh management of memory modules |
US8595683B1 (en) | 2012-04-12 | 2013-11-26 | Cadence Design Systems, Inc. | Generating user clocks for a prototyping environment |
US8595419B2 (en) | 2006-07-31 | 2013-11-26 | Google Inc. | Memory apparatus operable to perform a power-saving operation |
US8705240B1 (en) | 2007-12-18 | 2014-04-22 | Google Inc. | Embossed heat spreader |
US8710862B2 (en) | 2009-06-09 | 2014-04-29 | Google Inc. | Programming of DIMM termination resistance values |
US8773937B2 (en) | 2005-06-24 | 2014-07-08 | Google Inc. | Memory refresh apparatus and method |
US8796830B1 (en) | 2006-09-01 | 2014-08-05 | Google Inc. | Stackable low-profile lead frame package |
US8949519B2 (en) | 2005-06-24 | 2015-02-03 | Google Inc. | Simulating a memory circuit |
US9171585B2 (en) | 2005-06-24 | 2015-10-27 | Google Inc. | Configurable memory circuit system and method |
US9507739B2 (en) | 2005-06-24 | 2016-11-29 | Google Inc. | Configurable memory circuit system and method |
US9542353B2 (en) | 2006-02-09 | 2017-01-10 | Google Inc. | System and method for reducing command scheduling constraints of memory circuits |
US9632929B2 (en) | 2006-02-09 | 2017-04-25 | Google Inc. | Translating an address associated with a command communicated between a system and memory circuits |
US10013371B2 (en) | 2005-06-24 | 2018-07-03 | Google Llc | Configurable memory circuit system and method |
US11487925B1 (en) | 2021-07-02 | 2022-11-01 | Changxin Memory Technologies, Inc. | Simulation method, apparatus, and device, and storage medium |
WO2023272998A1 (en) * | 2021-07-02 | 2023-01-05 | 长鑫存储技术有限公司 | Simulation method and apparatus, device, and storage medium |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6173419B1 (en) * | 1998-05-14 | 2001-01-09 | Advanced Technology Materials, Inc. | Field programmable gate array (FPGA) emulator for debugging software |
US6611796B1 (en) * | 1999-10-20 | 2003-08-26 | Texas Instruments Incorporated | Method and apparatus for combining memory blocks for in circuit emulation |
JP5043500B2 (en) * | 2006-05-12 | 2012-10-10 | 三星電子株式会社 | Circuit emulation with state recovery |
KR101282963B1 (en) * | 2006-05-12 | 2013-07-08 | 삼성전자주식회사 | Emulation system and method thereof |
Citations (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3955180A (en) * | 1974-01-02 | 1976-05-04 | Honeywell Information Systems Inc. | Table driven emulation system |
US4277827A (en) * | 1979-01-02 | 1981-07-07 | Texas Instruments Incorporated | Microprocessor based system for the development and emulation of programmable calculator control read only memory software |
US4306286A (en) * | 1979-06-29 | 1981-12-15 | International Business Machines Corporation | Logic simulation machine |
US4357678A (en) * | 1979-12-26 | 1982-11-02 | International Business Machines Corporation | Programmable sequential logic array mechanism |
US4527249A (en) * | 1982-10-22 | 1985-07-02 | Control Data Corporation | Simulator system for logic design validation |
US4583169A (en) * | 1983-04-29 | 1986-04-15 | The Boeing Company | Method for emulating a Boolean network system |
US4587625A (en) * | 1983-07-05 | 1986-05-06 | Motorola Inc. | Processor for simulating digital structures |
US4642759A (en) * | 1984-04-02 | 1987-02-10 | Targa Electronics Systems Inc. | Bubble memory disk emulation system |
US4656580A (en) * | 1982-06-11 | 1987-04-07 | International Business Machines Corporation | Logic simulation machine |
US4695968A (en) * | 1983-11-03 | 1987-09-22 | Prime Computer, Inc. | Digital system simulation method and apparatus having improved sampling |
US4697241A (en) * | 1985-03-01 | 1987-09-29 | Simulog, Inc. | Hardware logic simulator |
US4769817A (en) * | 1986-01-31 | 1988-09-06 | Zycad Corporation | Concurrent fault simulation for logic designs |
US4782461A (en) * | 1984-06-21 | 1988-11-01 | Step Engineering | Logical grouping of facilities within a computer development system |
US4787062A (en) * | 1986-06-26 | 1988-11-22 | Ikos Systems, Inc. | Glitch detection by forcing the output of a simulated logic device to an undefined state |
US4787061A (en) * | 1986-06-25 | 1988-11-22 | Ikos Systems, Inc. | Dual delay mode pipelined logic simulator |
US4819150A (en) * | 1985-04-05 | 1989-04-04 | Unisys Corporation | Array for simulating computer functions for large computer systems |
US4862347A (en) * | 1986-04-22 | 1989-08-29 | International Business Machine Corporation | System for simulating memory arrays in a logic simulation machine |
US4868822A (en) * | 1988-02-19 | 1989-09-19 | John Fluke Mfg. Co., Inc. | Memory emulation method and system for testing and troubleshooting microprocessor-based electronic systems |
US4879646A (en) * | 1986-04-18 | 1989-11-07 | Nec Corporation | Data processing system with a pipelined structure for editing trace memory contents and tracing operations during system debugging |
US4914612A (en) * | 1988-03-31 | 1990-04-03 | International Business Machines Corporation | Massively distributed simulation engine |
US4954942A (en) * | 1987-11-20 | 1990-09-04 | Hitachi Ltd. | Software debugging system for writing a logical address conversion data into a trace memory of an emulator |
US4958315A (en) * | 1985-07-02 | 1990-09-18 | The United States Of America As Represented By The Secretary Of The Navy | Solid state electronic emulator of a multiple track motor driven rotating magnetic memory |
US4972334A (en) * | 1987-03-13 | 1990-11-20 | Hitachi, Ltd. | Automatic generation method of a simulation program for numerically solving a partial differential equation according to a boundary-fitted method |
US5025364A (en) * | 1987-06-29 | 1991-06-18 | Hewlett-Packard Company | Microprocessor emulation system with memory mapping using variable definition and addressing of memory space |
US5031129A (en) * | 1989-05-12 | 1991-07-09 | Alcatel Na Network Systems Corp. | Parallel pseudo-random generator for emulating a serial pseudo-random generator and method for carrying out same |
US5036473A (en) * | 1988-10-05 | 1991-07-30 | Mentor Graphics Corporation | Method of using electronically reconfigurable logic circuits |
US5068812A (en) * | 1989-07-18 | 1991-11-26 | Vlsi Technology, Inc. | Event-controlled LCC stimulation |
US5084824A (en) * | 1990-03-29 | 1992-01-28 | National Semiconductor Corporation | Simulation model generation from a physical data base of a combinatorial circuit |
US5109353A (en) * | 1988-12-02 | 1992-04-28 | Quickturn Systems, Incorporated | Apparatus for emulation of electronic hardware system |
US5114353A (en) * | 1991-03-01 | 1992-05-19 | Quickturn Systems, Incorporated | Multiple connector arrangement for printed circuit board interconnection |
US5126966A (en) * | 1986-06-25 | 1992-06-30 | Ikos Systems, Inc. | High speed logic simulation system with stimulus engine using independent event channels selectively driven by independent stimulus programs |
US5259006A (en) * | 1990-04-18 | 1993-11-02 | Quickturn Systems, Incorporated | Method for substantially eliminating hold time violations in implementing high speed logic circuits or the like |
US5291584A (en) * | 1991-07-23 | 1994-03-01 | Nexcom Technology, Inc. | Methods and apparatus for hard disk emulation |
US5321828A (en) * | 1991-06-07 | 1994-06-14 | Step Engineering | High speed microcomputer in-circuit emulator |
US5325365A (en) * | 1991-10-04 | 1994-06-28 | John Fluke Mfg. Co., Inc. | In a memory emulation test apparatus, a method of and system for fast functional testing of memories in microprocessor-based units |
US5329471A (en) * | 1987-06-02 | 1994-07-12 | Texas Instruments Incorporated | Emulation devices, systems and methods utilizing state machines |
US5329470A (en) * | 1988-12-02 | 1994-07-12 | Quickturn Systems, Inc. | Reconfigurable hardware emulation system |
US5331571A (en) * | 1992-07-22 | 1994-07-19 | Nec Electronics, Inc. | Testing and emulation of integrated circuits |
US5345580A (en) * | 1990-11-29 | 1994-09-06 | Kabushiki Kaisha Toshiba | Microprocessor device and emulator device thereof |
US5352123A (en) * | 1992-06-08 | 1994-10-04 | Quickturn Systems, Incorporated | Switching midplane and interconnection system for interconnecting large numbers of signals |
US5377123A (en) * | 1992-06-08 | 1994-12-27 | Hyman; Edward | Programmable logic device |
US5386550A (en) * | 1992-01-24 | 1995-01-31 | Fujitsu Limited | Pseudo-LSI device and debugging system incorporating same |
US5396498A (en) * | 1990-12-07 | 1995-03-07 | Thomson Csf | Integrated circuit with peripheral test controller |
US5425036A (en) * | 1992-09-18 | 1995-06-13 | Quickturn Design Systems, Inc. | Method and apparatus for debugging reconfigurable emulation systems |
US5437037A (en) * | 1992-06-05 | 1995-07-25 | Mega Chips Corporation | Simulation using compiled function description language |
US5448496A (en) * | 1988-10-05 | 1995-09-05 | Quickturn Design Systems, Inc. | Partial crossbar interconnect architecture for reconfigurably connecting multiple reprogrammable logic devices in a logic emulation system |
US5448522A (en) * | 1994-03-24 | 1995-09-05 | Quickturn Design Systems, Inc. | Multi-port memory emulation using tag registers |
US5452239A (en) * | 1993-01-29 | 1995-09-19 | Quickturn Design Systems, Inc. | Method of removing gated clocks from the clock nets of a netlist for timing sensitive implementation of the netlist in a hardware emulation system |
US5473765A (en) * | 1994-01-24 | 1995-12-05 | 3Com Corporation | Apparatus for using flash memory as a floppy disk emulator in a computer system |
US5475624A (en) * | 1992-04-30 | 1995-12-12 | Schlumberger Technologies, Inc. | Test generation by environment emulation |
US5475830A (en) * | 1992-01-31 | 1995-12-12 | Quickturn Design Systems, Inc. | Structure and method for providing a reconfigurable emulation circuit without hold time violations |
US5515525A (en) * | 1993-09-28 | 1996-05-07 | Bull Hn Information Systems Inc. | Emulating the memory functions of a first system on a second system |
US5551013A (en) * | 1994-06-03 | 1996-08-27 | International Business Machines Corporation | Multiprocessor for hardware emulation |
US5572710A (en) * | 1992-09-11 | 1996-11-05 | Kabushiki Kaisha Toshiba | High speed logic simulation system using time division emulation suitable for large scale logic circuits |
US5640542A (en) * | 1993-10-29 | 1997-06-17 | Intel Corporation | On-chip in-circuit-emulator memory mapping and breakpoint register modules |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4281392A (en) * | 1979-05-01 | 1981-07-28 | Allen-Bradley Company | Memory circuit for programmable machines |
US4400794A (en) * | 1981-11-17 | 1983-08-23 | Burroughs Corporation | Memory mapping unit |
US5088033A (en) * | 1986-04-28 | 1992-02-11 | Xerox Corporation | Data processing system emulation in a window with a coprocessor and I/O emulation |
US4984213A (en) * | 1989-02-21 | 1991-01-08 | Compaq Computer Corporation | Memory block address determination circuit |
-
1996
- 1996-02-06 US US08/597,197 patent/US5819065A/en not_active Expired - Lifetime
-
1997
- 1997-02-05 EP EP97101802A patent/EP0789311B1/en not_active Expired - Lifetime
- 1997-02-05 DE DE69737757T patent/DE69737757T2/en not_active Expired - Lifetime
- 1997-02-06 JP JP05975397A patent/JP3995751B2/en not_active Expired - Fee Related
Patent Citations (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3955180A (en) * | 1974-01-02 | 1976-05-04 | Honeywell Information Systems Inc. | Table driven emulation system |
US4277827A (en) * | 1979-01-02 | 1981-07-07 | Texas Instruments Incorporated | Microprocessor based system for the development and emulation of programmable calculator control read only memory software |
US4306286A (en) * | 1979-06-29 | 1981-12-15 | International Business Machines Corporation | Logic simulation machine |
US4357678A (en) * | 1979-12-26 | 1982-11-02 | International Business Machines Corporation | Programmable sequential logic array mechanism |
US4656580A (en) * | 1982-06-11 | 1987-04-07 | International Business Machines Corporation | Logic simulation machine |
US4527249A (en) * | 1982-10-22 | 1985-07-02 | Control Data Corporation | Simulator system for logic design validation |
US4583169A (en) * | 1983-04-29 | 1986-04-15 | The Boeing Company | Method for emulating a Boolean network system |
US4587625A (en) * | 1983-07-05 | 1986-05-06 | Motorola Inc. | Processor for simulating digital structures |
US4695968A (en) * | 1983-11-03 | 1987-09-22 | Prime Computer, Inc. | Digital system simulation method and apparatus having improved sampling |
US4725971A (en) * | 1983-11-03 | 1988-02-16 | Prime Computer, Inc. | Digital system simulation method and apparatus |
US4642759A (en) * | 1984-04-02 | 1987-02-10 | Targa Electronics Systems Inc. | Bubble memory disk emulation system |
US4782461A (en) * | 1984-06-21 | 1988-11-01 | Step Engineering | Logical grouping of facilities within a computer development system |
US4697241A (en) * | 1985-03-01 | 1987-09-29 | Simulog, Inc. | Hardware logic simulator |
US4819150A (en) * | 1985-04-05 | 1989-04-04 | Unisys Corporation | Array for simulating computer functions for large computer systems |
US4958315A (en) * | 1985-07-02 | 1990-09-18 | The United States Of America As Represented By The Secretary Of The Navy | Solid state electronic emulator of a multiple track motor driven rotating magnetic memory |
US4769817A (en) * | 1986-01-31 | 1988-09-06 | Zycad Corporation | Concurrent fault simulation for logic designs |
US4879646A (en) * | 1986-04-18 | 1989-11-07 | Nec Corporation | Data processing system with a pipelined structure for editing trace memory contents and tracing operations during system debugging |
US4862347A (en) * | 1986-04-22 | 1989-08-29 | International Business Machine Corporation | System for simulating memory arrays in a logic simulation machine |
US4787061A (en) * | 1986-06-25 | 1988-11-22 | Ikos Systems, Inc. | Dual delay mode pipelined logic simulator |
US5126966A (en) * | 1986-06-25 | 1992-06-30 | Ikos Systems, Inc. | High speed logic simulation system with stimulus engine using independent event channels selectively driven by independent stimulus programs |
US4787062A (en) * | 1986-06-26 | 1988-11-22 | Ikos Systems, Inc. | Glitch detection by forcing the output of a simulated logic device to an undefined state |
US4972334A (en) * | 1987-03-13 | 1990-11-20 | Hitachi, Ltd. | Automatic generation method of a simulation program for numerically solving a partial differential equation according to a boundary-fitted method |
US5329471A (en) * | 1987-06-02 | 1994-07-12 | Texas Instruments Incorporated | Emulation devices, systems and methods utilizing state machines |
US5025364A (en) * | 1987-06-29 | 1991-06-18 | Hewlett-Packard Company | Microprocessor emulation system with memory mapping using variable definition and addressing of memory space |
US4954942A (en) * | 1987-11-20 | 1990-09-04 | Hitachi Ltd. | Software debugging system for writing a logical address conversion data into a trace memory of an emulator |
US4868822A (en) * | 1988-02-19 | 1989-09-19 | John Fluke Mfg. Co., Inc. | Memory emulation method and system for testing and troubleshooting microprocessor-based electronic systems |
US4914612A (en) * | 1988-03-31 | 1990-04-03 | International Business Machines Corporation | Massively distributed simulation engine |
US5036473A (en) * | 1988-10-05 | 1991-07-30 | Mentor Graphics Corporation | Method of using electronically reconfigurable logic circuits |
US5452231A (en) * | 1988-10-05 | 1995-09-19 | Quickturn Design Systems, Inc. | Hierarchically connected reconfigurable logic assembly |
US5448496A (en) * | 1988-10-05 | 1995-09-05 | Quickturn Design Systems, Inc. | Partial crossbar interconnect architecture for reconfigurably connecting multiple reprogrammable logic devices in a logic emulation system |
US5477475A (en) * | 1988-12-02 | 1995-12-19 | Quickturn Design Systems, Inc. | Method for emulating a circuit design using an electrically reconfigurable hardware emulation apparatus |
US5109353A (en) * | 1988-12-02 | 1992-04-28 | Quickturn Systems, Incorporated | Apparatus for emulation of electronic hardware system |
US5329470A (en) * | 1988-12-02 | 1994-07-12 | Quickturn Systems, Inc. | Reconfigurable hardware emulation system |
US5031129A (en) * | 1989-05-12 | 1991-07-09 | Alcatel Na Network Systems Corp. | Parallel pseudo-random generator for emulating a serial pseudo-random generator and method for carrying out same |
US5068812A (en) * | 1989-07-18 | 1991-11-26 | Vlsi Technology, Inc. | Event-controlled LCC stimulation |
US5084824A (en) * | 1990-03-29 | 1992-01-28 | National Semiconductor Corporation | Simulation model generation from a physical data base of a combinatorial circuit |
US5259006A (en) * | 1990-04-18 | 1993-11-02 | Quickturn Systems, Incorporated | Method for substantially eliminating hold time violations in implementing high speed logic circuits or the like |
US5345580A (en) * | 1990-11-29 | 1994-09-06 | Kabushiki Kaisha Toshiba | Microprocessor device and emulator device thereof |
US5396498A (en) * | 1990-12-07 | 1995-03-07 | Thomson Csf | Integrated circuit with peripheral test controller |
US5114353A (en) * | 1991-03-01 | 1992-05-19 | Quickturn Systems, Incorporated | Multiple connector arrangement for printed circuit board interconnection |
US5321828A (en) * | 1991-06-07 | 1994-06-14 | Step Engineering | High speed microcomputer in-circuit emulator |
US5291584A (en) * | 1991-07-23 | 1994-03-01 | Nexcom Technology, Inc. | Methods and apparatus for hard disk emulation |
US5325365A (en) * | 1991-10-04 | 1994-06-28 | John Fluke Mfg. Co., Inc. | In a memory emulation test apparatus, a method of and system for fast functional testing of memories in microprocessor-based units |
US5386550A (en) * | 1992-01-24 | 1995-01-31 | Fujitsu Limited | Pseudo-LSI device and debugging system incorporating same |
US5475830A (en) * | 1992-01-31 | 1995-12-12 | Quickturn Design Systems, Inc. | Structure and method for providing a reconfigurable emulation circuit without hold time violations |
US5475624A (en) * | 1992-04-30 | 1995-12-12 | Schlumberger Technologies, Inc. | Test generation by environment emulation |
US5437037A (en) * | 1992-06-05 | 1995-07-25 | Mega Chips Corporation | Simulation using compiled function description language |
US5377123A (en) * | 1992-06-08 | 1994-12-27 | Hyman; Edward | Programmable logic device |
US5352123A (en) * | 1992-06-08 | 1994-10-04 | Quickturn Systems, Incorporated | Switching midplane and interconnection system for interconnecting large numbers of signals |
US5331571A (en) * | 1992-07-22 | 1994-07-19 | Nec Electronics, Inc. | Testing and emulation of integrated circuits |
US5572710A (en) * | 1992-09-11 | 1996-11-05 | Kabushiki Kaisha Toshiba | High speed logic simulation system using time division emulation suitable for large scale logic circuits |
US5425036A (en) * | 1992-09-18 | 1995-06-13 | Quickturn Design Systems, Inc. | Method and apparatus for debugging reconfigurable emulation systems |
US5452239A (en) * | 1993-01-29 | 1995-09-19 | Quickturn Design Systems, Inc. | Method of removing gated clocks from the clock nets of a netlist for timing sensitive implementation of the netlist in a hardware emulation system |
US5515525A (en) * | 1993-09-28 | 1996-05-07 | Bull Hn Information Systems Inc. | Emulating the memory functions of a first system on a second system |
US5640542A (en) * | 1993-10-29 | 1997-06-17 | Intel Corporation | On-chip in-circuit-emulator memory mapping and breakpoint register modules |
US5473765A (en) * | 1994-01-24 | 1995-12-05 | 3Com Corporation | Apparatus for using flash memory as a floppy disk emulator in a computer system |
US5448522A (en) * | 1994-03-24 | 1995-09-05 | Quickturn Design Systems, Inc. | Multi-port memory emulation using tag registers |
US5563829A (en) * | 1994-03-24 | 1996-10-08 | Quickturn Design Systems, Inc. | Multi-port memory emulation using tag registers |
US5551013A (en) * | 1994-06-03 | 1996-08-27 | International Business Machines Corporation | Multiprocessor for hardware emulation |
Non-Patent Citations (19)
Title |
---|
"Ikos Systems to Acquire Virtual Machine Works", URL, http://www.ikos.com/company/news/pr960311.html, Mar. 26, 1997. |
"Logic Emulation for the Masses Arrives", URL, http://www.ikos.com/company/news/pr960916.html, Mar. 26, 1997. |
"Virtual Wires Published Papers", URL, http:/cag-www.lcs.mit.edu/vwires/papers/index.html, Mar. 26, 1997. |
`VHDL Mixed-Levl Fault Simulator, URL, http://www.ikos.com/products/voyagerfs/index.html, Mar. 26, 1997. |
Agarwal, Anant, "Virtual Wires™: a Technology for Massive Multi-FPGA Systems", Virtual Marchine Works (no publication date given). |
Agarwal, Anant, "Virtual Wires™: a Technology for Massive Multi-FPGA Systems," Virtual Machine Works, pp. 1-24. |
Agarwal, Anant, Virtual Wires : a Technology for Massive Multi FPGA Systems , Virtual Marchine Works (no publication date given). * |
Agarwal, Anant, Virtual Wires : a Technology for Massive Multi FPGA Systems, Virtual Machine Works, pp. 1 24. * |
Goering, R., "Emulation for the masses", Electronic Engineering Times, Jan. 29, 1996, p. 63. |
Goering, R., Emulation for the masses , Electronic Engineering Times, Jan. 29, 1996, p. 63. * |
Ikos Systems to Acquire Virtual Machine Works , URL, http://www.ikos.com/company/news/pr960311.html, Mar. 26, 1997. * |
Logic Emulation for the Masses Arrives , URL, http://www.ikos.com/company/news/pr960916.html, Mar. 26, 1997. * |
Maliniak, Lisa, "Pin Multiplexing Yields Low-Cost Logic Emualtion", Electronic Design, Jan. 22, 1996. |
Maliniak, Lisa, Pin Multiplexing Yields Low Cost Logic Emualtion , Electronic Design, Jan. 22, 1996. * |
SimExpress Specifications, Mentor Graphic, SimExpress Hardware Emulator. * |
SimExpress Specifications, Mentor Graphic, SimExpress™ Hardware Emulator. |
VHDL Mixed Levl Fault Simulator, URL, http://www.ikos.com/products/voyagerfs/index.html, Mar. 26, 1997. * |
Virtual Wires Published Papers , URL, http:/cag www.lcs.mit.edu/vwires/papers/index.html, Mar. 26, 1997. * |
VirtualLogic SLI Emulation System, Virtual Logic SLI:, URL, http://www.ikos.com/products/vlsi, Mar. 26, 1997. * |
Cited By (96)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6763029B2 (en) * | 1996-09-11 | 2004-07-13 | Mcdata Corporation | Low latency shared memory switch architecture |
US6141636A (en) * | 1997-03-31 | 2000-10-31 | Quickturn Design Systems, Inc. | Logic analysis subsystem in a time-sliced emulator |
US6279146B1 (en) | 1999-01-06 | 2001-08-21 | Simutech Corporation | Apparatus and method for verifying a multi-component electronic design |
US6799157B1 (en) * | 1999-03-23 | 2004-09-28 | Seiko Epson Corporation | Method for improving pin compatibility in microcomputer emulation equipment |
US6618698B1 (en) | 1999-08-12 | 2003-09-09 | Quickturn Design Systems, Inc. | Clustered processors in an emulation engine |
US7047179B2 (en) | 1999-08-12 | 2006-05-16 | Quickturn Design Systems, Inc. | Clustered processors in an emulation engine |
US20030212539A1 (en) * | 1999-08-12 | 2003-11-13 | Quickturn Design Systems, Inc. | Clustered processors in an emulation engine |
US6584436B2 (en) | 1999-10-29 | 2003-06-24 | Vast Systems Technology, Inc. | Hardware and software co-simulation including executing an analyzed user program |
US6230114B1 (en) | 1999-10-29 | 2001-05-08 | Vast Systems Technology Corporation | Hardware and software co-simulation including executing an analyzed user program |
WO2001035629A3 (en) * | 1999-11-08 | 2001-10-11 | Ondotek Inc | Data image management via emulation of persistent storage device |
US6477624B1 (en) * | 1999-11-08 | 2002-11-05 | Ondotek, Inc. | Data image management via emulation of non-volatile storage device |
WO2001035629A2 (en) * | 1999-11-08 | 2001-05-17 | Ondotek, Inc. | Data image management via emulation of persistent storage device |
US6598131B2 (en) * | 1999-11-08 | 2003-07-22 | Ondotek, Inc. | Data image management via emulation of non-volatile storage device |
US20050160097A1 (en) * | 2001-03-22 | 2005-07-21 | Gschwind Michael K. | SIMD-RISC microprocessor architecture |
US7496673B2 (en) * | 2001-03-22 | 2009-02-24 | International Business Machines Corporation | SIMD-RISC microprocessor architecture |
US20030088396A1 (en) * | 2001-11-06 | 2003-05-08 | Kuan Chou Chen | Apparatus in an ICE system |
US20030188278A1 (en) * | 2002-03-26 | 2003-10-02 | Carrie Susan Elizabeth | Method and apparatus for accelerating digital logic simulations |
US7370291B2 (en) * | 2002-11-14 | 2008-05-06 | Altera Corporation | Method for mapping logic design memory into physical memory devices of a programmable logic device |
US20050204325A1 (en) * | 2002-11-14 | 2005-09-15 | Altera Corporation. | Method for mapping logic design memory into physical memory devices of a programmable logic device |
CN100359473C (en) * | 2003-01-23 | 2008-01-02 | 快速转动设计系统公司 | Memory rewind and reconstruction for hardware emulator |
US20090292523A1 (en) * | 2005-04-06 | 2009-11-26 | Quickturn Design Systems, Inc. | System and Method for Providing Compact Mapping Between Dissimilar Memory Systems |
US8594991B2 (en) | 2005-04-06 | 2013-11-26 | Cadence Design Systems, Inc. | System and method for providing compact mapping between dissimilar memory systems |
US20060230251A1 (en) * | 2005-04-06 | 2006-10-12 | Alexandre Birguer | System And Method For Providing Compact Mapping Between Dissimilar Memory Systems |
EP1710722A1 (en) * | 2005-04-06 | 2006-10-11 | Quickturn Design Systems, Inc. | System and method for providing compact mapping between dissimilar memory systems |
US8145469B2 (en) | 2005-04-06 | 2012-03-27 | Quickturn Design Systems, Inc. | System and method for providing compact mapping between dissimilar memory systems |
US7577558B2 (en) | 2005-04-06 | 2009-08-18 | Quickturn Design Systems, Inc. | System and method for providing compact mapping between dissimilar memory systems |
US7937258B2 (en) * | 2005-04-06 | 2011-05-03 | Quickturn Design Systems, Inc. | System and method for providing compact mapping between dissimilar memory systems |
US20090259458A1 (en) * | 2005-04-06 | 2009-10-15 | Quickturn Design Systems, Inc. | System and Method For Providing Compact Mapping Between Dissimilar Memory Systems |
US20090106604A1 (en) * | 2005-05-02 | 2009-04-23 | Alexander Lange | Procedure and device for emulating a programmable unit |
US10013371B2 (en) | 2005-06-24 | 2018-07-03 | Google Llc | Configurable memory circuit system and method |
US8386833B2 (en) | 2005-06-24 | 2013-02-26 | Google Inc. | Memory systems and memory modules |
US8773937B2 (en) | 2005-06-24 | 2014-07-08 | Google Inc. | Memory refresh apparatus and method |
US8359187B2 (en) * | 2005-06-24 | 2013-01-22 | Google Inc. | Simulating a different number of memory circuit devices |
US9507739B2 (en) | 2005-06-24 | 2016-11-29 | Google Inc. | Configurable memory circuit system and method |
US9171585B2 (en) | 2005-06-24 | 2015-10-27 | Google Inc. | Configurable memory circuit system and method |
US8949519B2 (en) | 2005-06-24 | 2015-02-03 | Google Inc. | Simulating a memory circuit |
US8615679B2 (en) | 2005-06-24 | 2013-12-24 | Google Inc. | Memory modules with reliability and serviceability functions |
US8213205B2 (en) | 2005-09-02 | 2012-07-03 | Google Inc. | Memory system including multiple memory stacks |
US8582339B2 (en) | 2005-09-02 | 2013-11-12 | Google Inc. | System including memory stacks |
US20100020585A1 (en) * | 2005-09-02 | 2010-01-28 | Rajan Suresh N | Methods and apparatus of stacking drams |
US8619452B2 (en) | 2005-09-02 | 2013-12-31 | Google Inc. | Methods and apparatus of stacking DRAMs |
US8811065B2 (en) | 2005-09-02 | 2014-08-19 | Google Inc. | Performing error detection on DRAMs |
US20070094534A1 (en) * | 2005-10-24 | 2007-04-26 | Andreev Alexander E | RRAM memory error emulation |
US7493519B2 (en) * | 2005-10-24 | 2009-02-17 | Lsi Corporation | RRAM memory error emulation |
US8089795B2 (en) | 2006-02-09 | 2012-01-03 | Google Inc. | Memory module with memory stack and interface with enhanced capabilities |
US8797779B2 (en) | 2006-02-09 | 2014-08-05 | Google Inc. | Memory module with memory stack and interface with enhanced capabilites |
US9542353B2 (en) | 2006-02-09 | 2017-01-10 | Google Inc. | System and method for reducing command scheduling constraints of memory circuits |
US9542352B2 (en) | 2006-02-09 | 2017-01-10 | Google Inc. | System and method for reducing command scheduling constraints of memory circuits |
US8566556B2 (en) | 2006-02-09 | 2013-10-22 | Google Inc. | Memory module with memory stack and interface with enhanced capabilities |
US9632929B2 (en) | 2006-02-09 | 2017-04-25 | Google Inc. | Translating an address associated with a command communicated between a system and memory circuits |
US9727458B2 (en) | 2006-02-09 | 2017-08-08 | Google Inc. | Translating an address associated with a command communicated between a system and memory circuits |
US7555424B2 (en) | 2006-03-16 | 2009-06-30 | Quickturn Design Systems, Inc. | Method and apparatus for rewinding emulated memory circuits |
US8340953B2 (en) | 2006-07-31 | 2012-12-25 | Google, Inc. | Memory circuit simulation with power saving capabilities |
US8671244B2 (en) | 2006-07-31 | 2014-03-11 | Google Inc. | Simulating a memory standard |
US20100281280A1 (en) * | 2006-07-31 | 2010-11-04 | Google Inc. | Interface Circuit System And Method For Performing Power Management Operations In Conjunction With Only A Portion Of A Memory Circuit |
US8112266B2 (en) | 2006-07-31 | 2012-02-07 | Google Inc. | Apparatus for simulating an aspect of a memory circuit |
US8566516B2 (en) | 2006-07-31 | 2013-10-22 | Google Inc. | Refresh management of memory modules |
US8244971B2 (en) | 2006-07-31 | 2012-08-14 | Google Inc. | Memory circuit system and method |
US8122207B2 (en) | 2006-07-31 | 2012-02-21 | Google Inc. | Apparatus and method for power management of memory circuits by a system or component thereof |
US9047976B2 (en) | 2006-07-31 | 2015-06-02 | Google Inc. | Combined signal delay and power saving for use with a plurality of memory circuits |
US8745321B2 (en) | 2006-07-31 | 2014-06-03 | Google Inc. | Simulating a memory standard |
US8595419B2 (en) | 2006-07-31 | 2013-11-26 | Google Inc. | Memory apparatus operable to perform a power-saving operation |
US8601204B2 (en) | 2006-07-31 | 2013-12-03 | Google Inc. | Simulating a refresh operation latency |
US8181048B2 (en) | 2006-07-31 | 2012-05-15 | Google Inc. | Performing power management operations |
US8327104B2 (en) | 2006-07-31 | 2012-12-04 | Google Inc. | Adjusting the timing of signals associated with a memory system |
US8631220B2 (en) | 2006-07-31 | 2014-01-14 | Google Inc. | Adjusting the timing of signals associated with a memory system |
US8972673B2 (en) | 2006-07-31 | 2015-03-03 | Google Inc. | Power management of memory circuits by virtual memory simulation |
US8667312B2 (en) | 2006-07-31 | 2014-03-04 | Google Inc. | Performing power management operations |
US8280714B2 (en) | 2006-07-31 | 2012-10-02 | Google Inc. | Memory circuit simulation system and method with refresh capabilities |
US8407412B2 (en) | 2006-07-31 | 2013-03-26 | Google Inc. | Power management of memory circuits by virtual memory simulation |
US8868829B2 (en) | 2006-07-31 | 2014-10-21 | Google Inc. | Memory circuit system and method |
US8796830B1 (en) | 2006-09-01 | 2014-08-05 | Google Inc. | Stackable low-profile lead frame package |
US8977806B1 (en) | 2006-10-05 | 2015-03-10 | Google Inc. | Hybrid memory module |
US8370566B2 (en) | 2006-10-05 | 2013-02-05 | Google Inc. | System and method for increasing capacity, performance, and flexibility of flash storage |
US8751732B2 (en) | 2006-10-05 | 2014-06-10 | Google Inc. | System and method for increasing capacity, performance, and flexibility of flash storage |
US8397013B1 (en) | 2006-10-05 | 2013-03-12 | Google Inc. | Hybrid memory module |
US8130560B1 (en) | 2006-11-13 | 2012-03-06 | Google Inc. | Multi-rank partial width memory modules |
US8446781B1 (en) | 2006-11-13 | 2013-05-21 | Google Inc. | Multi-rank partial width memory modules |
US8760936B1 (en) | 2006-11-13 | 2014-06-24 | Google Inc. | Multi-rank partial width memory modules |
US8080874B1 (en) | 2007-09-14 | 2011-12-20 | Google Inc. | Providing additional space between an integrated circuit and a circuit board for positioning a component therebetween |
US8675429B1 (en) | 2007-11-16 | 2014-03-18 | Google Inc. | Optimal channel design for memory devices for providing a high-speed memory interface |
US8111566B1 (en) | 2007-11-16 | 2012-02-07 | Google, Inc. | Optimal channel design for memory devices for providing a high-speed memory interface |
US8730670B1 (en) | 2007-12-18 | 2014-05-20 | Google Inc. | Embossed heat spreader |
US8705240B1 (en) | 2007-12-18 | 2014-04-22 | Google Inc. | Embossed heat spreader |
US20090216939A1 (en) * | 2008-02-21 | 2009-08-27 | Smith Michael J S | Emulation of abstracted DIMMs using abstracted DRAMs |
US8631193B2 (en) | 2008-02-21 | 2014-01-14 | Google Inc. | Emulation of abstracted DIMMS using abstracted DRAMS |
US8438328B2 (en) | 2008-02-21 | 2013-05-07 | Google Inc. | Emulation of abstracted DIMMs using abstracted DRAMs |
US8762675B2 (en) | 2008-06-23 | 2014-06-24 | Google Inc. | Memory system for synchronous data transmission |
US8386722B1 (en) | 2008-06-23 | 2013-02-26 | Google Inc. | Stacked DIMM memory interface |
US8819356B2 (en) | 2008-07-25 | 2014-08-26 | Google Inc. | Configurable multirank memory system with interface circuit |
US8335894B1 (en) | 2008-07-25 | 2012-12-18 | Google Inc. | Configurable memory system with interface circuit |
US20100161308A1 (en) * | 2008-12-22 | 2010-06-24 | Unity Semiconductor Corporation | Multi-structured memory |
US8710862B2 (en) | 2009-06-09 | 2014-04-29 | Google Inc. | Programming of DIMM termination resistance values |
US8595683B1 (en) | 2012-04-12 | 2013-11-26 | Cadence Design Systems, Inc. | Generating user clocks for a prototyping environment |
US11487925B1 (en) | 2021-07-02 | 2022-11-01 | Changxin Memory Technologies, Inc. | Simulation method, apparatus, and device, and storage medium |
WO2023272998A1 (en) * | 2021-07-02 | 2023-01-05 | 长鑫存储技术有限公司 | Simulation method and apparatus, device, and storage medium |
Also Published As
Publication number | Publication date |
---|---|
DE69737757T2 (en) | 2008-01-31 |
JPH1055288A (en) | 1998-02-24 |
JP3995751B2 (en) | 2007-10-24 |
EP0789311A3 (en) | 2001-03-28 |
EP0789311A2 (en) | 1997-08-13 |
DE69737757D1 (en) | 2007-07-12 |
EP0789311B1 (en) | 2007-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5819065A (en) | 1998-10-06 | System and method for emulating memory |
Denneau | 1988 | The Yorktown simulation engine |
JP2989518B2 (en) | 1999-12-13 | Multi-processor emulation system |
US5278973A (en) | 1994-01-11 | Dual operating system computer |
US4914612A (en) | 1990-04-03 | Massively distributed simulation engine |
EP0931380B1 (en) | 2002-07-03 | Reconfigurable computing system |
US6629296B1 (en) | 2003-09-30 | Functional verification of integrated circuit designs |
US9069918B2 (en) | 2015-06-30 | System and method implementing full-rate writes for simulation acceleration |
US4819150A (en) | 1989-04-04 | Array for simulating computer functions for large computer systems |
US6691287B2 (en) | 2004-02-10 | Functional verification system |
GB2390702A (en) | 2004-01-14 | Providing local addressing of memory cells for use with global and local addressing in multi-processor systems by driving the row select line with a binary 1 |
US7904288B1 (en) | 2011-03-08 | Hardware emulator having a variable input emulation group |
JPH0752386B2 (en) | 1995-06-05 | Multi-data path CPU architecture |
JP2005524852A (en) | 2005-08-18 | Tester system with multipurpose memory |
US8090568B2 (en) | 2012-01-03 | Hardware emulator having a variable input primitive |
US6144930A (en) | 2000-11-07 | Method for providing a memory model of a memory device for use in simulation |
US20010025238A1 (en) | 2001-09-27 | Emulation system and method |
US7043417B1 (en) | 2006-05-09 | High speed software driven emulator comprised of a plurality of emulation processors with improved multiplexed data memory |
US7089538B1 (en) | 2006-08-08 | High speed software driven emulator comprised of a plurality of emulation processors with a method to allow memory read/writes without interrupting the emulation |
JPH0462648A (en) | 1992-02-27 | Storage device |
JPS60202593A (en) | 1985-10-14 | Random access memory writing method |
JPS6145339A (en) | 1986-03-05 | Computer |
EP0450837A2 (en) | 1991-10-09 | Logic simulation |
EP0226103A2 (en) | 1987-06-24 | Address generation for cellular array processors |
EP0483965A2 (en) | 1992-05-06 | Logic simulation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
1996-02-06 | AS | Assignment |
Owner name: SYNOPSYS, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CHILTON, JOHN E.;SARNO, TONY R.;SCHAEFER, INGO;REEL/FRAME:007848/0556 Effective date: 19960206 |
1997-08-07 | AS | Assignment |
Owner name: QUICKTURN DESIGN SYSTEMS, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SYNOPSYS, INC.;REEL/FRAME:008644/0818 Effective date: 19970702 |
1998-10-01 | STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
2002-04-18 | FPAY | Fee payment |
Year of fee payment: 4 |
2002-04-18 | SULP | Surcharge for late payment | |
2006-03-28 | FPAY | Fee payment |
Year of fee payment: 8 |
2010-04-06 | FPAY | Fee payment |
Year of fee payment: 12 |
2012-03-01 | AS | Assignment |
Owner name: CADENCE DESIGN SYSTEMS, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:QUICKTURN DESIGN SYSTEMS, INC.;REEL/FRAME:027789/0450 Effective date: 20120227 |