在对硬件描述语言描述编译之后,首先产生一个中间数据格式的文件,可放在数据库中,然后由模拟程序读取。这样的中间数据用最基本的信息描述电路。逻辑电路的中间数据模型一般用称为网表(Netlist)的一个元件集合表示电路结构。如果指定了每个元件各端口所连接的信号,就可以唯一确定电路连接关系。此外,每个元件还应指明其元件模型。这样,一个元件E的描述至少应有元件名N、模型M、输入端信号PI、输出端信号PO四部分组成,即
    E = (N, M, PI, PO)
  图3.3所示的加法器电路由5个元件组成,共有8个信号。其中X, Y, Cin为外部输入信号,Sum 和Cout为外部输出信号。S1, S2和S3为内部信号。
图3.3 加法器电路


  该加法器对应的网表如下:
    e1, XOR, (X, Y), S1;
    e2, XOR, (Cin, S1), Sum;
    e3, AND, (X, Y), S2;
    e4, AND, (S1, Cin), S3;
    e5, OR, (S2, S3), Cout;
  由网表可以看出,外部输入信号(X, Y, Cin)不与任何元件的输出端相连;外部输出信号( Sum, Cout)不与任何元件的输入端相连;内部信号(S1, S2, S3)则既与某些元件的输入端相连,又与某些元件的输出端相连。
  一般逻辑模拟器中,除了基本门外,还包括三态门、传输门、触发器、寄存器以及自定义功能模块等。每个元件需要纪录其逻辑连接关系,如输入信号,输出信号,还需要纪录其性能特性:所用的模型、延迟时间、最大负载系数等。对于指定功能的逻辑功能模块,还要指定其内部记忆变量、建立时间和保持时间、以及信号值配合的禁止情况等。一般门元件的模型由模拟程序提供,功能模块需要预先编译生成功能计算子程序。预定义的功能模块的功能计算子程序由模拟程序提供,而自定义的功能模块需要由用户描述之后编译生成计算子程序,该子程序必须与逻辑模拟程序连接在一起才能执行。
  网表的连接关系隐含在各元件的信号名中,模拟程序中使用很不便。为此,模拟程序在读入网表之后要对网表进行重新组织。模拟程序中,电路主要由元件表和信号表两个表组成。每个元件的输入信号和输出信号都指向相应的信号节点。在模拟时需要频繁查找每个信号后面所接的元件,称为负载元件或扇出元件。为此,需要找出各信号负载元件表,指向相应的元件节点。信号节点还需要有其性能特性的纪录,以及信号强度、信号值波形等,纪录模拟结果。
  除了表示电路的静态表之外,还需要有用于算法的动态数据结构,它随着算法的不同而不同。下面介绍的事件驱动模拟算法用的就是事项处理表。
  模拟程序在读取电路网表的同时,生成模拟用的内部数据。注意模拟程序中的信号表实际是一个冗余表,它完全从网表中提取出来。中间数据格式的电路网表适合于数据库中保存,也适用于其他工具,如综合程序,形式验证程序等。但模拟程序内部模型的优点是数据查找方便,运行速度快。