JPS6386040A - Hardware simulator - Google Patents

Hardware simulator

Info

Publication number
JPS6386040A
JPS6386040A JP61233608A JP23360886A JPS6386040A JP S6386040 A JPS6386040 A JP S6386040A JP 61233608 A JP61233608 A JP 61233608A JP 23360886 A JP23360886 A JP 23360886A JP S6386040 A JPS6386040 A JP S6386040A
Authority
JP
Japan
Prior art keywords
input
output
switching matrix
logic
circuit
Prior art date
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.)
Pending
Application number
JP61233608A
Other languages
Japanese (ja)
Inventor
Junichi Iwasaki
岩先 純一
Shingo Kojima
小嶋 伸吾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP61233608A priority Critical patent/JPS6386040A/en
Publication of JPS6386040A publication Critical patent/JPS6386040A/en
Pending legal-status Critical Current

Links

Landscapes

  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

PURPOSE:To realize a hardware simulator having flexibility equivalent to that of a software simulator by changing a switching matrix which performs free connection between input and output lines by means of the software. CONSTITUTION:When a switching matrix of 4X4 has connections like A-a, B-c, C-b and D-d, an output line train is defined as (a, b, c, d)=(0, 0, 0, 0) with input of (A, B, C, D)=(0, 0, 0, 0) and then as (a, b, c, d)=(1, 0, 0, 0) with input of (A, B, C, D)=(0, 0, 0, 1) respectively. In other words, the data shown in the 1st table is written to a RAM of 16 word X4 bits together with an output signal line group 103 and an input signal line group 102 connected to an address bus and a data bus respectively.

Description

【発明の詳細な説明】 [産業上の利用分野] 本発明はデジタル回路技術に関し、特にLSI設計時に
ワイヤードロジックによって作られるハードウェアシミ
ュレータに関する。
DETAILED DESCRIPTION OF THE INVENTION [Field of Industrial Application] The present invention relates to digital circuit technology, and particularly to a hardware simulator created by wired logic during LSI design.

口従来の技術] LSIを設計する場合には、その論理設計を検証するた
めに、なんらかの形で論理回路のシミュレーションをす
る必要がある。従来、そのためには、大きく分けて二つ
の方法があった。
[Background Art] When designing an LSI, it is necessary to perform some form of simulation of the logic circuit in order to verify the logic design. Conventionally, there have been two main methods for this purpose.

第一の方法は、対象となるLSIの論理設計と等価な論
理式群によって構成されたシミ=レーションプログラム
による計算機上でのソフトウェアシミュレーションであ
る。(う一つの方法は、各種ゲー)、F/F、ラッチな
どの個々の論理素子をワイヤーラッピングもしくはプリ
ント基板によって実際に結線して作成したブレッドボー
ドモデルによるハードウェアシミュレーションである。
The first method is software simulation on a computer using a simulation program composed of a group of logical formulas equivalent to the logical design of the target LSI. Another method is hardware simulation using a breadboard model created by actually connecting individual logic elements such as various games, F/Fs, and latches using wire wrapping or printed circuit boards.

まず、ソフトウェアシミュレーンヨンについて説明する
First, software simulation will be explained.

デジタルLSIは一般的には、内部の電子回路の各信号
線や記憶回路にはOか1かのデジタル情報しか存在せず
、また、それぞれの状態はクロックと呼ばれる、外部か
らLSIに与えられる基準時刻信号としての一定周波数
のパルス波に同期してのみ変化する。よって、目的とす
るLSIの中の電子回路における各信号線の状態を電子
計算機の上で仮想的にそれぞれの変数に対応させ、クロ
ック毎にそのすべての内部状態を計算機上に単なるソフ
トウェア情報として再現し、クロックを進めて行くこと
によってLSIの動作を模倣することができる。このと
き、LSIが内部に持っている論理ゲート(NAND、
NOR,NOT、その他)は、計算機上では、それぞれ
同じ機能を有する論理関数を用い、信号線に対応させた
変数と組み合わせることによって、その出力を再現する
ことができる。
Digital LSIs generally only have digital information of O or 1 in each signal line and memory circuit of the internal electronic circuit, and each state is a reference given to the LSI from the outside, called a clock. It changes only in synchronization with a constant frequency pulse wave as a time signal. Therefore, the state of each signal line in the electronic circuit in the target LSI is virtually made to correspond to each variable on the electronic computer, and all internal states are reproduced on the computer as mere software information every clock. However, by advancing the clock, it is possible to imitate the operation of an LSI. At this time, the logic gates (NAND,
(NOR, NOT, etc.) can reproduce the output on a computer by using logic functions that have the same function and combining them with variables that correspond to signal lines.

次にハードウェアシミュレーションについて説明する。Next, hardware simulation will be explained.

ン7トウェアシミュレーションがLSIの内部状態をソ
フトウェア情報として仮想するだけなのに対して、ハー
ドウェアシミュレーションは実際に電子部品を使って物
理的に再現してしまう。目的とするLSIが設計上持っ
ている論理ゲート、フリップフロップ、ラッチ、バッフ
ァなどを本物の電子部品を用いて基盤上に実施し、LS
Iの設計図と同じように配線して、目的とするLSIと
全く同じ機能を持つ電子装置を作シ上げ、それを用いて
LSIを模倣するものである。このような電子装置のこ
とをB、B、M、(BreadboardMachin
e)またはモックアツプという。
Whereas software simulation only virtualizes the internal state of an LSI as software information, hardware simulation actually physically reproduces it using electronic components. Logic gates, flip-flops, latches, buffers, etc. that are included in the design of the target LSI are implemented on the board using real electronic components, and the LSI
The idea is to wire the device in the same way as the design drawing of I, create an electronic device that has exactly the same functions as the target LSI, and use it to imitate the LSI. These electronic devices are referred to as B, B, M, (BreadboardMachine)
e) Or called mock-up.

[発明が解決しようとする問題点] 上述した従来のシミュレーション方法には、どちらの場
合にも一長一短がある。
[Problems to be Solved by the Invention] The conventional simulation methods described above have advantages and disadvantages in both cases.

ソフトウェアシミエレーシ百ンを用いた場合は、シミュ
レータ自体を作成することは比較的容易であシ、また、
設計変更に対する柔軟性や、設計の自由度においても優
れているが、シミュレーションスピードは非常に遅くな
ってしまう。これに対し、ハードウェアシミニレ−ジョ
ンを用いた場合には、ソフトウェアシミニレ−ジョンに
比べてはるかに高速と1;なるが、シミーレータ作成は
、シミュレーションプログラムを作成する場合に比べて
困難となる。また、−度作成した後では設計が変更され
た場合の修正は難しく、設計に対する自由度もデジタル
回路技術によって制限される場合がある。
When using software simulation, it is relatively easy to create the simulator itself, and
Although it is superior in flexibility for design changes and freedom in design, simulation speed is extremely slow. On the other hand, when hardware simulation is used, it is much faster than software simulation, but creating a simulator is more difficult than creating a simulation program. Furthermore, once the design has been created, it is difficult to modify it if the design is changed, and the degree of freedom in design may be limited by digital circuit technology.

[発明の目的コ 本発明は、LSI設計時の論理回路シミュレーションに
おいて、ソフトウェアシミュレータに匹敵する柔軟性と
、ハードウェアシミュレータと同等の高速性を有するシ
ミュレータを提供することを目的とする。
[Object of the Invention] An object of the present invention is to provide a simulator that has flexibility comparable to a software simulator and high speed comparable to a hardware simulator in logic circuit simulation during LSI design.

口問題点を解決するだめの手段] 本発明のハードウェアシミュレータは、論理機能または
記憶機能を有する素子から構成される機能部と、入力線
と出力線を自由に接続するスイッチングマトリックスと
から成り、前記スイッチングマトリックスをソフトウェ
アで変更することにより、前記機能部の論理素子または
記憶素子の入力線と出力線の接続を変更できるようにし
たことを特徴とする。
Means for Solving Problems] The hardware simulator of the present invention consists of a functional section composed of elements having a logic function or a memory function, and a switching matrix that freely connects input lines and output lines, The present invention is characterized in that the connection between the input line and the output line of the logic element or memory element of the functional section can be changed by changing the switching matrix using software.

[実施例] 第1図に本発明の概念図を示す。[Example] FIG. 1 shows a conceptual diagram of the present invention.

101は目的とするシミュレータを構成するために必要
な論理素子群であシ、具体的には各種ゲート、バッファ
、F/Fなどの規模の小さなものから、カウンタ、AL
U、メモリなどLSIレベルの規模のものまでを含む。
101 is a group of logic elements necessary to configure the target simulator, specifically various gates, buffers, F/F, etc., from small scale to counters, AL
It includes things up to LSI level scale such as U and memory.

また、各素子の入出力は完全に分離されているものとし
、データバスなどのように双方向性を持つものは、内部
信号を使用するなどして入出力を分離する。例えば、書
き込み時に入力、読み出し時に出力となるRAM31の
データバスの場合には、そのRAMに対する書き込み/
読み出し信号W/Rを用いて第12図に示す回路で入力
時と出力時にそれぞれ入力専用データバス32、出力専
用データバス33だけに接続される様にする。
It is also assumed that the input and output of each element are completely separated, and for bidirectional devices such as data buses, input and output are separated by using internal signals. For example, in the case of a data bus for RAM 31 that is input during writing and output during reading,
Using the read signal W/R, the circuit shown in FIG. 12 is connected only to the input-only data bus 32 and the output-only data bus 33 at the time of input and output, respectively.

102はその論理素子群の各々の入力端子に接続されて
いる入力信号線群であシ、同様に103は各々の出力端
子に接続されている出力信号線群でおる。
102 is a group of input signal lines connected to each input terminal of the logic element group, and 103 is a group of output signal lines connected to each output terminal.

104は出力信号線群103の中の任意の信号線を、入
力信号線群102の中の(複数の)任意の信号線に接続
することができるスイノチングマトリックスであシ、そ
の接続情報は外部から与えることによって容易に変更で
きる。
104 is a switching matrix that can connect any signal line in the output signal line group 103 to any (plural) arbitrary signal line in the input signal line group 102, and the connection information is as follows. It can be easily changed by applying it externally.

105.106はシミュレータの外部に対する入力信号
線群および出力信号線群であり、入力信号線群105は
通常、論理素子群の中のバッファに接続され、出力信号
線群106はスイッチングマトリックスから引き出され
る。
105 and 106 are an input signal line group and an output signal line group to the outside of the simulator, the input signal line group 105 is usually connected to a buffer in the logic element group, and the output signal line group 106 is drawn out from the switching matrix. .

以下、論理素子群101、およびスイッチングマトリッ
クス104について詳述する。
The logic element group 101 and the switching matrix 104 will be described in detail below.

論理素子群101は、上述したように各種ゲート、バッ
ファ、F/Fから、カウンタ、ALU、メモリなどLS
Iレベルのものまで、いろいろな規模の機能部品から構
成される。これらはすべて、それぞれの機能を有する実
際のICを第2図に示すような種々のモジュールに組み
込んで使用する。
As described above, the logic element group 101 includes various gates, buffers, F/Fs, counters, ALUs, memories, etc.
It is composed of functional parts of various sizes, up to the I level. All of these are used by incorporating actual ICs with respective functions into various modules as shown in FIG.

第2図(a)、(b)、(C)は1つの論理素子モジュ
ール21を示す斜視図、底面図であシ、同図(d)、 
(e)、げ)は他の1つの論理素子モジュール22を示
す斜視図、底面図である。このモジュールは、内部のI
Cに対する入出力が完全に分離されておシ、電源端子、
GND、入力端子列、出力端子列の位置などが統一規格
によって定められている。
2(a), 2(b), and 2(C) are a perspective view and a bottom view showing one logic element module 21, and FIG. 2(d),
(e) and (e) are a perspective view and a bottom view showing another logic element module 22. This module has an internal I
The input and output for C are completely separated, and the power terminal,
The positions of GND, input terminal rows, output terminal rows, etc. are determined by unified standards.

さらにこのモジュールは第3図に示すような統一規格の
基板上に実装して使用される。この規格基板もモジュー
ルと同様、モジュールソケットおよび基板端子に対し、
電源端子、GND、入力端子列、出力端子列の位置など
が統一規格によって定められておシ、各モジュールは同
サイズのどのモジー−ルソケットに実装しても動作する
ようになっている。
Further, this module is used by being mounted on a board of uniform standard as shown in FIG. Similar to modules, this standard board also has the following specifications for module sockets and board terminals:
The positions of the power supply terminal, GND, input terminal row, output terminal row, etc. are determined by unified standards, and each module can operate even if it is mounted in any module socket of the same size.

以上のように規格化することにより、結線だけでなく、
論理素子の構成も可変とすることができ、よシ高い柔軟
性を得られる。
By standardizing as described above, not only wiring but also
The configuration of the logic elements can also be made variable, providing greater flexibility.

スイッチングマトリックス104は、 R,AMICに
よって実現できる。
The switching matrix 104 can be realized by R,AMIC.

今、第4図(a)に示した様な4×4のスイッチングマ
トリックスを A−a、  B−C,C−b、  ])−dと結線する
ことを考える。結線状態を第4図(b)にモデル化して
示す。このような結線状態を持つスイッチングマ) I
Jソックス、左側の入力線列(A−D)に、 (A、B、C,D)=(0,0,0,0)と入力したと
きには、下側の出力線列(a−d)は、 (alblcld)=(o、o、o、o)となり、 (A、B、C,D)=(0,0,0,1)としたときに
は、 (alblcld)=(1,010,0)となる。以下
同様に、それぞれの(A、B、C。
Now, consider connecting a 4×4 switching matrix as shown in FIG. 4(a) with A-a, B-C, C-b, ])-d. The wiring state is shown as a model in FIG. 4(b). Switching machine with this kind of connection state) I
J socks, when inputting (A, B, C, D) = (0, 0, 0, 0) into the left input line array (A-D), the lower output line array (a-d) is (alblcld) = (o, o, o, o), and when (A, B, C, D) = (0, 0, 0, 1), (alblcld) = (1,010,0 ). Similarly, each (A, B, C).

D)の組み合わせに対して1対1に対応する、計16通
りの(a+ b+ C+ d)のパターンを有するはず
である。
There should be a total of 16 patterns (a+ b+ C+ d) that correspond one-to-one to the combination D).

つまり、このようなスイッチングマトリックスは16ワ
ード×4ビツト(アドレス線4本、データ線4本)のR
AM  ICと全く同じ機能を有することになる。よっ
て、第4図(b)に示したスイッチングマトリックスを
RAM  ICによって実現するためには、16ワード
×4ビツトのRA Mに第1表 第1表に示すようがデータを書き込み、論理素子群10
1からの出力信号線群103をアドレスバスに、入力信
号線群102をデータバスに接続すればよい。
In other words, such a switching matrix has R of 16 words x 4 bits (4 address lines, 4 data lines).
It will have exactly the same functions as AM IC. Therefore, in order to realize the switching matrix shown in FIG. 4(b) using a RAM IC, data as shown in Table 1 is written in a 16 word x 4 bit RAM, and the logic element group 10 is
It is sufficient to connect the output signal line group 103 from 1 to the address bus and the input signal line group 102 to the data bus.

次に、本発明の実施例の詳細を説明する。Next, details of embodiments of the present invention will be described.

まず、数個のゲートで構成可能な簡単な論理回路を実現
するときの基本構成を第5図に示す。501が第1図の
101に相当する論理素子群であシ、ここでは6個のバ
ッファと、NAND%NOR%NOTゲートをそれぞれ
2つずつ用意した。
First, FIG. 5 shows a basic configuration for realizing a simple logic circuit that can be configured with several gates. 501 is a logic element group corresponding to 101 in FIG. 1, and here six buffers and two NAND%NOR%NOT gates are prepared.

また、第1図の104で示したスイッチングマトリック
ス502は、ここでは説明のために、格子状に交差させ
た倒木かの腺でモテル化し、必要な部分のみを黒丸で結
ぶことによって、その接続情報を示すこととする。
Furthermore, for the sake of explanation, the switching matrix 502 shown at 104 in FIG. Let us show the following.

第6図に示した回路構成の半加算器を、第5図の回路上
に実現したものを第7図に示す。第2表は第6図に対応
する真理値表である。
FIG. 7 shows a half adder having the circuit configuration shown in FIG. 6 realized on the circuit shown in FIG. 5. Table 2 is a truth table corresponding to FIG.

第2表 用意されたハードウェアだけを使い、スイッチングマト
リックスによシ個々の論理素子を接続して同様の回路を
構成していることがわかる。(■、■、・・・・・・な
どの記号によシ、第6図と第7図において同じ動作をし
ている論理素子を対応させている。) 同様に、X=a+b十C−dなる出力を持つ4人力論理
回路の場合を第8図、第9図に示し、また、D7リツプ
フロツプの場合を第10図、第11図に示す。
It can be seen that a similar circuit is constructed by connecting individual logic elements to a switching matrix using only the hardware prepared in Table 2. (The symbols such as ■, ■, ..., etc. correspond to logic elements that operate in the same way in Figures 6 and 7.) Similarly, X = a + b + C - The case of a four-man power logic circuit having an output d is shown in FIGS. 8 and 9, and the case of a D7 lip-flop is shown in FIGS. 10 and 11.

このように、用意し九ノ・−ドウエアの構成を全く変え
ずに、スイッチングマトリックスに与える結線情報だけ
を変更することによって回路を組み替えることができる
In this way, the circuit can be rearranged by changing only the connection information given to the switching matrix without changing the configuration of the prepared hardware at all.

[発明の効果] 以上説明したように本発明は、ハードウェアシミュレー
タにおける個々の論理素子間の接続に、自由に変更が可
能なスイッチングマトリックスを用いることによシ、そ
のマトリックスに与える結線情報を変えることによって
、ソフトウニアシミニレータなみの柔軟性を持ったハー
ドウェアシミュレータとすることができるという効果が
ある。
[Effects of the Invention] As explained above, the present invention uses a freely changeable switching matrix for connections between individual logic elements in a hardware simulator, thereby changing the connection information given to the matrix. This has the effect of making it possible to create a hardware simulator with flexibility comparable to that of a software simulator.

【図面の簡単な説明】[Brief explanation of the drawing]

第1図は本発明の構成を示すブロック図、第2図(a)
、 (b)、 (C)、 (d)、 (e)、げ)は本
発明の一実施例で用いる論理素子モジュールの斜視図、
底面図、第3図は本発明の一実施例で用いる規格基板の
斜視図、第4図(a)、 (b)は本発明の一実施例で
用いるスイッチングマトリックスの説明図、第5図は本
発明の一実施例の基本構成を示す回路図、第6図は一般
の半加算回路の回路図、第7図はこの半加算回路を第5
図で実現したときの回路図、第8図は一般の4人カー1
出力論理回路を示す回路図、第9図はこの4人カー1出
力論理回路を第5図で実現したときの回路図、第10図
は一般のDフリップフロップを示す回路図、第11図は
このDフリップフロップを第5図で実現したときの回路
図、第12図は第1図中の論理素子群の一部を例示する
ブロック図である。 101.501・・・・・・論理素子群、I Q 2.
502・・・・・・スイッチングマトリックス、21.
22・・・・・・論理素子モジュール。 代理人 弁理士  内 原   晋  ”t′1、巾ノ 第1図 菊3ン (,2)             (b)躬4図 躬5図 j;χt−7tナスt・χZ −C=It−χを 石乙図 第7図 x=atbtc −tl 躬8図 荊q図 后10図 筋11回 M lz図
Figure 1 is a block diagram showing the configuration of the present invention, Figure 2 (a)
, (b), (C), (d), (e), ge) are perspective views of a logic element module used in an embodiment of the present invention,
3 is a perspective view of a standard board used in an embodiment of the present invention, FIGS. 4(a) and 4(b) are explanatory diagrams of a switching matrix used in an embodiment of the present invention, and FIG. 5 is a perspective view of a standard board used in an embodiment of the present invention. A circuit diagram showing the basic configuration of an embodiment of the present invention, FIG. 6 is a circuit diagram of a general half-adder circuit, and FIG. 7 is a circuit diagram of a general half-adder circuit.
The circuit diagram when realized in the figure, Figure 8 is a general 4-person car 1
Figure 9 is a circuit diagram showing the output logic circuit. Figure 9 is a circuit diagram when this four-person car one output logic circuit is realized in Figure 5. Figure 10 is a circuit diagram showing a general D flip-flop. Figure 11 is a circuit diagram showing the output logic circuit. FIG. 5 is a circuit diagram when this D flip-flop is realized, and FIG. 12 is a block diagram illustrating a part of the logic element group in FIG. 1. 101.501...Logic element group, IQ 2.
502...Switching matrix, 21.
22...Logic element module. Agent Patent Attorney Susumu Uchihara ``t'1, Width No. 1, Chrysanthemum 3 (, 2) (b) 躬4, 躬5, j; Diagram Otsu Diagram 7

Claims (1)

【特許請求の範囲】[Claims] 論理機能または記憶機能を有する素子から構成される機
能部と、入力線と出力線を自由に接続するスイッチング
マトリックスとから成り、前記スイッチングマトリック
スをソフトウェアで変更することにより、前記機能部の
論理素子または記憶素子の入力線と出力線の接続を変更
できるようにしたことを特徴とするハードウェアシミュ
レータ。
It consists of a functional section composed of elements having a logic function or a memory function, and a switching matrix that freely connects input lines and output lines.By changing the switching matrix with software, the logic elements or memory functions of the functional section can be changed. A hardware simulator characterized in that connections between input lines and output lines of memory elements can be changed.
JP61233608A 1986-09-30 1986-09-30 Hardware simulator Pending JPS6386040A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP61233608A JPS6386040A (en) 1986-09-30 1986-09-30 Hardware simulator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP61233608A JPS6386040A (en) 1986-09-30 1986-09-30 Hardware simulator

Publications (1)

Publication Number Publication Date
JPS6386040A true JPS6386040A (en) 1988-04-16

Family

ID=16957715

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61233608A Pending JPS6386040A (en) 1986-09-30 1986-09-30 Hardware simulator

Country Status (1)

Country Link
JP (1) JPS6386040A (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58206138A (en) * 1982-05-26 1983-12-01 Toshiba Corp Simulation device for logic circuit

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58206138A (en) * 1982-05-26 1983-12-01 Toshiba Corp Simulation device for logic circuit

Similar Documents

Publication Publication Date Title
US5428750A (en) Bi-directional buffers for mounting a plurality of integrated circuit devices
JPS59175749A (en) Method of producing gate array integrated circuit device
JPH02245831A (en) Emulation apparatus of electronic hardware system
JPH05249184A (en) Hardware simulator
JPS613400A (en) Method and apparatus for testing high-density on chip
US4960724A (en) Method for deleting unused gates and method for manufacturing master-slice semiconductor integrated circuit device using the deleting method
CN107807890A (en) FPGA, layout method, equipment and the circuit board of embedded SDRAM memory
US6675364B1 (en) Insertion of scan hardware
JPH0432348B2 (en)
JPH0191525A (en) Programmable logic element
JPS6386040A (en) Hardware simulator
JPH08221164A (en) Trial manufacture supporting device, substrate for ic mounting, and bus device
Lipovski Hardware description languages: voices from the Tower of Babel
EP1114513A1 (en) Emulation system scaling
JPS6349831A (en) Electronic equipment
JPS63153672A (en) Hardware simulator
JPH03122895A (en) Synchronous semiconductor memory device
US5485599A (en) Method and apparatus for simulation of a physical process
JPH0391195A (en) Memory circuit
US20030200070A1 (en) Simulation of uncharacterized hardware
JP2871921B2 (en) Simulation method for semiconductor integrated circuit
JPS61129587A (en) Logic simulation system using actual circuit in combination
JPS618786A (en) Memory control system
WO2007074658A1 (en) Logic circuit verification system and method for controlling same
JPH01300536A (en) Integrated circuit device