以
集成电路为重点的仿真程序(
英语:Simulation Program with Integrated Circuit Emphasis, SPICE),是一种用于电路描述与仿真的语言与仿真器软件,用于检测电路的连接和功能的完整性,以及用于预测电路的行为。SPICE主要用于
模拟电路和混合信号电路的仿真。由此我们便可以清楚地了解:SPICE这套程序原先发展的目的是为了模拟电子系统中日益重要的集成电路。
由于
集成电路不如传统电路一般可以在面包板(breadboard)或印刷电路板(Printed circuit board)上做实验来验证设计结果,所以为了提高集成电路正式生产时的良率(yield)及降低成本,势必要在进入实际工艺阶段前对其电路特性做“检查”,确保性能在规格范围之内。
介绍
SPICE (Simple Protocol for Independent Computing Environment) 是Red Hat收购Qumranet后获得虚拟技术。SPICE能用于在服务器和远程
计算机如桌面和瘦客户端设备上部署虚拟桌面。它类似于其它用于远程桌面管理的渲染协议,如
微软的Remote Desktop Protocol或Citrix的Independent Computing
建筑。它支持Windows XP、Windows 7和Red Hat Enterprise Linux等
虚拟机实例。大部分SPICE代码是采用GNU GPLv2许可证发布,部分代码是采用LGPL许可证。
发展历史
SPICE是在1975年由
加利福尼亚大学伯克莱分校的Donald Pederson在电子研究实验室首先建立的。第一版和第二版都是用
Fortran编写的,但是从第三版开始用
c语言编写。以一"Computer Analysis of Nonlinear Circuits, Excluding Radiation"名为“CANCER”的电路仿真程序为蓝本,发展出几乎被全世界公认为电路仿真标准的SPICE原始雏型程序。
SPICE有好几种版本,成功的商业版本主要有SPECTRE(由最初的SPICE作者之一Ken Kundert和Jacob White开始最初的框架)和HSPICE(最初由Meta-Software开发,现属于Synopsys)、Eldo(最初由Anacad公司开发,现属于Mentor Graphics)等。其后由于电路设计规模的
级数级增长,旧版本的SPICE的仿真速度远远不能满足需要,并且对电路规模大小也有限制,业界发展了快速SPICE。
SILVACO公司的提供的Smartspice, SmartSpice提供最高的性能和精度,用于设计复杂的高精度
模拟电路、模拟混合信号电路、分析关键网路,特性表征单元库等等。SmartSpice兼容于流行的模拟设计流程和foundry提供的器件模型。
在市面上所能看到的许多SPICE同类软件:如OrCADPSpice(OrCAD)、HSPICE(Meta-Software;现属于Synopsys)、IS-SPICE(intusoft)、IG-SPICE(A. B.Associates)、I-SPICE(NCSS timesharing)…等,均是以SPICE2系列为基础再加改进而成的商业化产品。
成功的快速SPICE商业版本主要有HSIM(最初由NASSADA公司开发,NASSDA公司被
新思科技公司购入), NANOSIM(SYNOPSYS,但有电路规模大小的限制,对敏感的
模拟电路也有精度的缺陷,在
数字电路仿真方面很成功)和ADiT(Evercad,2006年1月被Mentor Graphics并购)、ULTRASIM(
凯登思公司的快速SPICE工具,属于最新的第三代电路仿真工具)等。这些快速SPICE的主要特点是以牺牲准确性换取速度的大幅提高,因此他们的共同问题是如何在快速的同时保持准确性。
其中最广为各级学校电子电机相关科系所使用的,就非
OrCAD PSpice莫属了。
安全
与远程桌面服务器的SPICE客户端连接由多个数据通道组成,每个通道都通过单独的TCP或UNIX套接字连接运行。可以指定数据通道以明文或TLS模式运行,允许管理员权衡安全级别与性能。 TLS模式为数据信道上传输的所有流量提供强加密。
除加密外,SPICE协议还允许选择
身份验证方案。原始SPICE协议使用共享
密钥定义了基于票证的身份验证方案。服务器将生成RSA公钥/私钥对并将其公钥发送给客户端。客户端将使用公钥加密票证(密码)并将结果发送回服务器,服务器将解密并验证票证。当前的SPICE协议还允许使用SASL身份验证协议,从而支持各种管理员可配置的身份验证机制,特别是Kerberos。
实现
虽然只存在一个服务器实现,但自SPICE开源以来,已有多个程序员开发了SPICE客户端的新实现。
spice协议
spice-protocol模块定义了SPICE有线协议格式。这是在BSD许可下提供的,可以在
Linux和Windows平台上移植。
spice模块
spice模块为SPICE协议的服务器端提供参考实现。服务器作为动态库提供,可以链接到任何希望公开SPICE服务器的应用程序。截至2013年,
QEMU使用它为
虚拟机提供SPICE接口。 spice代码库在LGPL v2 +许可下可用。
2014年12月删除了名为spicec的spice代码库的客户端部分。
spiceGTK
spice-gtk模块使用GObject类型系统和GTK小部件工具包实现SPICE客户端。这包括一个低级库,spice-client-glib,它实现了客户端协议代码,以及一组高级小部件,它们使用GTK提供图形客户端功能。这是在LGPLv2 +许可下提供的,可以在
Linux,OS X和Windows平台上移植。
spiceHTML5
spice-html5模块实现了一个使用
ECMAScript的SPICE客户端,旨在在支持
html5的Web浏览器中运行。虽然它实现了SPICE协议,但它无法直接与常规SPICE服务器通信。它必须通过WebSocket代理间接连接到服务器。这是在GPLv3 +和LGPLv3 +许可证的组合下提供的。
应用
SPICE协议的起源是在KVM代码库的分支中提供改进的远程桌面功能。
QEMU维护人员在2010年3月合并了对所有QEMU
虚拟机提供SPICE远程桌面功能的支持.QEMU二进制文件链接到spice-server库以提供此功能并实现QXL半虚拟化帧缓冲设备以使客户操作系统能够利用SPICE协议提供的性能优势。客户操作系统也可以使用普通的VGA卡,虽然与QXL相比性能会下降。
XSPICE
QXL帧缓冲设备的X.Org Server驱动程序包含一个包装脚本,可以启动Xorg服务器,其显示通过SPICE协议导出。这样可以在远程桌面环境中使用SPICE,而无需
QEMU/KVM虚拟化。
VIRT-viewe
virt-viewer程序使用spice-gtk客户端库使用SPICE连接到
虚拟机,作为其先前对
VNC的支持的替代方案。
oVirt
SPICE集成到oVirt私有云管理软件中,允许用户通过SPICE连接到虚拟机。