Content deleted Content added
Citation bot (talk | contribs) Alter: template type. Add: series. Removed parameters. Some additions/deletions were parameter name changes. | Use this bot. Report bugs. | Suggested by Headbomb | #UCB_toolbar |
|||
(25 intermediate revisions by 13 users not shown) | |||
Line 1:
{{Redirect|Functional simulation|the simulation of program functionality|High-level emulation}}
'''Logic simulation''' is the use of [[Computer simulation|simulation software]] to predict the behavior of [[digital circuit]]s and [[hardware description language]]s.<ref name="WangChang2009">{{cite book|author1=Laung-Terng Wang|author2=Yao-Wen Chang|author3=Kwang-Ting (Tim) Cheng|title=Electronic Design Automation: Synthesis, Verification, and Test|url=https://books.google.com/books?id=3XBe7dLb5NEC&q=%22logic+simulation%22|date=11 March 2009|publisher=Morgan Kaufmann|isbn=978-0-08-092200-3}}</ref><ref name="LitovskiZwolinski1996">{{cite book|author1=V. Litovski|author2=Mark Zwolinski|title=VLSI Circuit Simulation and Optimization|url=https://books.google.com/books?id=Ca9DJs9-SPYC&q=%22logic+simulation%22|date=31 December 1996|publisher=Springer Science & Business Media|isbn=978-0-412-63860-2}}</ref> Simulation can be performed at varying degrees of [[Abstraction (computer science)|physical abstraction]], such as at the [[SPICE|transistor level]], [[digital circuit|gate level]], [[register-transfer level]] (RTL), [[electronic system-level design and verification|electronic system-level]] (ESL), or behavioral level.
==Use in verification==
Logic simulation may be used as part of the [[Verification and validation|verification]] process in designing hardware.<ref name="ResearchGate">{{cite book |last1=Bombieri |first1=Nicola |last2=Fummi |first2=Franco |last3=Pravadelli |first3=Graziano |title=Hardware Design and Simulation for Verification |series=Lecture Notes in Computer Science |date=May 2006 |pages=1–29 |url=https://www.researchgate.net/publication/221224340}}</ref>
Simulations have the advantage of providing a familiar look and feel to the user in that it is constructed from the same language and symbols used in design. By allowing the user to interact directly with the design, simulation is a natural way for the designer to get feedback on their design.
==Length of simulation==
The level of effort required to debug and then verify the design is proportional to the maturity of the design. That is, early in the
A straightforward approach to this issue may be to emulate the circuit on a [[field-programmable gate array]] instead. [[Formal verification]] can also be explored as an alternative to simulation, although a formal proof is not always possible or convenient.
A prospective way to accelerate logic simulation is using [[distributed computing|distributed]] and [[parallel computing|parallel]] computations.<ref>Software system for distributed [[Event-driven programming|event-driven]] logic simulation. Ladyzhensky Y.V., Popoff Y.V. Proceedings of IEEE East-West Design & Test Workshop(EWDTW'05). IEEE EWDTW, 2005, p.119-122 {{ISBN
To help gauge the thoroughness of a simulation, tools exist for assessing [[code coverage]],<ref>{{cite
|author=Wang, Tsu-Hua and Tan, Chong Guan
|conference=1995 IEEE International Verilog HDL Conference
|pages=99–104
|year=1995
|publisher=IEEE
|url=https://ieeexplore.ieee.org/document/512503 }}</ref>
functional coverage, finite state machine (FSM) coverage, and many other metrics.<ref>{{cite conference
|title=Coverage analysis techniques for HDL design validation
|author=Jou, Jing-Yang and Liu, Chien-Nan Jimmy
|conference=Asia Pacific CHip Design Languages
|pages=48–55
|year=1999
|url=https://www.researchgate.net/publication/266883269}}</ref>
== Event simulation versus cycle simulation ==
[[Discrete event simulation|Event simulation]] allows the design to contain simple timing information – the delay needed for a signal to travel from one place to another. During simulation, signal changes are tracked in the form of events. A change at a certain time triggers an event after a certain delay. Events are sorted by the time when they will occur, and when all events for a particular time have been handled, the simulated time is advanced to the time of the next scheduled event. How fast an event simulation runs depends on the number of events to be processed (the amount of activity in the model).<ref>{{cite web |title=Network Modeling and Simulation Environment |url=https://apps.dtic.mil/sti/pdfs/ADA566432.pdf |website=Defense Technical Information Center |access-date=January 1, 2023}}</ref>
While event simulation can provide some feedback regarding signal timing, it is not a replacement for [[static timing analysis]].
Line 24 ⟶ 38:
In cycle simulation, it is not possible to specify delays. A cycle-accurate model is used, and every gate is evaluated in every cycle. Cycle simulation therefore runs at a constant speed, regardless of activity in the model. Optimized implementations may take advantage of low model activity to speed up simulation by skipping evaluation of gates whose inputs didn't change. In comparison to event simulation, cycle simulation tends to be faster, to scale better, and to be better suited for hardware acceleration / emulation.
However, chip design trends point to event simulation gaining relative performance due to activity factor reduction in the circuit (due to techniques such as [[clock gating]] and [[power gating]], which are becoming much more commonly used in an effort to reduce power dissipation). In these cases, since event simulation only simulates necessary events, performance may no longer be a disadvantage over cycle simulation. Event simulation also has the advantage of greater flexibility, handling design features difficult to handle with cycle simulation, such as [[asynchronous logic]] and incommensurate clocks. Due to these considerations, almost all commercial logic simulators have an event based capability, even if they primarily rely on cycle based techniques.<ref>Electronic Design Automation For Integrated Circuits Handbook, by Lavagno, Martin, and Scheffer, {{ISBN
== See also==
* [[Logic synthesis]]
* [[
* [[Functional verification]]
|