Merge branch 'master' into verilog-ams
[sverilog.git] / lpm.txt
blobf475d2402a1d5f34c280b1ffad1f41ef047120f2
2 WHAT IS LPM
4 LPM (Library of Parameterized Modules) is EIS-IS standard 103-A. It is
5 a standard library of abstract devices that are designed to be close
6 enough to the target hardware to be easily translated, yet abstract
7 enough to support a variety of target technologies without excessive
8 constraints. Icarus Verilog uses LPM internally to represent idealized
9 hardware, especially when doing target neutral synthesis.
11 In general, the user does not even see the LPM that Icarus Verilog
12 generates, because the LPM devices are translated into technology
13 specific devices by the final code generator or target specific
14 optimizers.
16 INTERNAL USES OF LPM
18 Internally, Icarus Verilog uses LPM devices to represent the design in
19 abstract, especially when synthesizing such functions as addition,
20 flip-flops, etc. The ``synth'' functor generates LPM modules when
21 interpreting procedural constructs. The functor generates the LPM
22 objects needed to replace a behavioral description, and uses
23 attributes to tag the devices with LPM properties.
25 Code generators need to understand the supported LPM devices so that
26 they can translate the devices into technology specific devices.