Cary R
644465ccc1
Remove one input is const. Z mux optimization.
...
The optimization that allowed a mux that had one input always
connected to high-Z produces code that is actually slower than
the original mux, so for now we are removing that optimization.
2008-10-21 19:51:07 -07:00
Cary R
de2b10b445
An optimized mux should use MOS devices not bufif devices.
...
The bufif devices do not correctly propagate the Z value as
required by the standard. The MOS devices do propagate a Z
value, but they do not correctly handle the case where both
inputs are Z and the select is undefined/Z. The standard
specifies that this should be X, but we produce Z. The full
MUX and %blend operator also function this way, so Icarus
may not match the standard, but it is consistent. I would
also argue that the standard is incorrect. If both inputs
are Z then the output should be Z no matter what select is.
2008-10-20 21:34:00 -07:00
Stephen Williams
b292a5fc05
Create a branch object to be the argument to the access function.
...
The NetBranch object is connected, but not like an object, so the
NetPins object base class is factored out from NetObj to handle the
connectivity, and the NetBranch class uses the NetPins to connect a
branch.
Also, account for the fact that nets with a discipline are by default
real-valued.
2008-08-04 20:54:05 -07:00
Stephen Williams
d2106a3d3a
Fix botched processing of MUX with constant select.
...
If the select input was constant, the code then tried to look at the
constant data input. Just plain wrong.
2008-05-23 10:29:44 -07:00
Stephen Williams
4c5f24c7a7
Simplify MUXZ if the select is constant.
...
If the select of a MUXZ is constant 0 or 1, then we can elide the MUX
in place of a simple BUFZ. This should allow the dead code on the
unused side to be removed as well.
2008-05-21 10:25:44 -07:00
Larry Doolittle
8ea3b6b0b8
header includes for gcc-4.3 compatibility
...
minimal changes required to build without error
tested with gcc-4.3 (Debian 4.3-20071130-1) 4.3.0 20071130 (experimental)
2008-01-04 16:14:44 -08:00
Stephen Williams
08028177fe
Correct elaboration of network constants.
...
Constant propagation incorrectly elided an entire constant net node
if only the LSB of the driven vector was HiZ. This caused the entire
vector to look like HiZ. Also, the code generator for writing the
constant values missed bits.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-10-05 20:31:51 -07:00
steve
ae88f5cc68
Lint fixes.
2007-03-07 00:38:15 +00:00
steve
857b3e15b6
Fix handling of ternary-to-bufif0 constant propagation.
2006-05-24 04:32:57 +00:00
steve
4cbffc6b77
bufif enable is LOGIC.
2005-07-15 19:22:52 +00:00
steve
fcb02ee9c2
Disable obsolete logic constant fixup code.
2005-05-15 04:44:30 +00:00
steve
365cfedd55
Update DFF support to new data flow.
2005-04-24 23:44:01 +00:00
steve
9ec00e1288
Fix copyright notice.
2005-02-12 22:52:45 +00:00
steve
d74177634c
Restructure NetMux devices to pass vectors.
...
Generate NetMux devices from ternary expressions,
Reduce NetMux devices to bufif when appropriate.
2005-02-12 06:25:40 +00:00
steve
bf6a5d0f50
Implement LPM_COMPARE nodes as two-input vector functors.
2005-01-16 04:20:32 +00:00
steve
65e9b6be12
Rework of internals to carry vectors through nexus instead
...
of single bits. Make the ivl, tgt-vvp and vvp initial changes
down this path.
2004-12-11 02:31:25 +00:00
steve
177b6ffb6a
Addtrbute keys are perm_strings.
2004-02-20 18:53:33 +00:00
steve
074dcc934a
Do not remove constants accessible to VPI.
2003-11-08 17:53:34 +00:00
steve
fad43d78b0
Donot elide FF that has set or clr connections.
2003-10-31 02:40:06 +00:00
steve
65c8722d72
Handle X values in constant == nets.
2003-04-25 05:06:32 +00:00
steve
badad63ab4
All NetObj objects have lex_string base names.
2003-03-06 00:28:41 +00:00
steve
a275133ff9
LPM objects store only their base names.
2003-02-26 01:29:24 +00:00
steve
e941e7e805
Spelling fixes.
2003-01-30 16:23:07 +00:00
steve
8f0c02c0fa
Spelling fixes.
2003-01-27 05:09:17 +00:00
steve
d2ac85e2c7
Copy gate delays when doing gate delay substitutions.
2002-08-20 04:12:22 +00:00
steve
52bf4e613f
conditional ident string using autoconfig.
2002-08-12 01:34:58 +00:00
steve
9fc4e1eddd
Cache calculated driven value.
2002-06-25 01:33:22 +00:00
steve
58c2e12507
Make link_drive_constant cache its results in
...
the Nexus, to improve cprop performance.
2002-06-24 01:49:38 +00:00
steve
bfad382fd1
Carry Verilog 2001 attributes with processes,
...
all the way through to the ivl_target API.
Divide signal reference counts between rval
and lval references.
2002-05-26 01:39:02 +00:00
steve
e6c0629626
Add language support for Verilog-2001 attribute
...
syntax. Hook this support into existing $attribute
handling, and add number and void value types.
Add to the ivl_target API new functions for access
of complex attributes attached to gates.
2002-05-23 03:08:50 +00:00
steve
b14a0b885a
Fix bug removing pairs of ones in XOR.
2002-04-14 02:51:37 +00:00
steve
78bb3d6f09
Comments about xor evaluation.
2002-02-03 00:06:28 +00:00
steve
400580179f
Get sense of 1-bit == operator right.
2001-12-31 01:56:08 +00:00
steve
874bab10e4
NetObj constructor finally requires a scope.
2001-10-28 01:14:53 +00:00
steve
b825f8d2b2
Create a config.h.in file to hold all the config
...
junk, and support gcc 3.0. (Stephan Boettcher)
2001-07-25 03:10:48 +00:00
steve
b3a5a0e5ab
Generate vvp code for GT and GE comparisons.
2001-06-15 04:14:18 +00:00
steve
f480943649
Support structural addition.
2001-06-07 02:12:43 +00:00
steve
debe707097
check signals in the cprop functor.
2001-02-18 01:07:32 +00:00
steve
59b69c6dd1
Constant propagation for compare ==.
2001-02-16 03:27:31 +00:00
steve
f45ba008d8
Catch constants driving root module ports. (PR#130)
2001-02-10 04:50:54 +00:00
steve
365b149ec1
Propagate initial value of constants into wires.
2000-12-30 03:11:15 +00:00
steve
e33fb3ce51
Propagate constants through xnor gates. (PR#51)
2000-11-23 01:55:52 +00:00
steve
e05b9a4769
Replace AND constand propagation.
2000-11-19 05:26:58 +00:00
steve
2750977e4a
Thorough constant propagation for or and nor gates.
2000-11-18 05:13:27 +00:00
steve
fc6978e4de
Handle constant propagation through XOR gates,
...
including reducing the gate to a constant,
a buffer or an inverter if possible.
2000-11-18 04:10:37 +00:00
steve
a8da692540
Add support for the t-dll backend grabing flip-flops.
2000-11-11 00:03:36 +00:00
steve
76e2c509d7
Put logic devices into scopes.
2000-10-07 19:45:42 +00:00
steve
20d07a7366
Eliminate zero inputs to xor.
2000-10-06 21:26:34 +00:00
steve
b5a36fef70
use bufif0 if z is in true case of mux.
2000-08-02 14:48:01 +00:00
steve
cb7b1b6c94
Unlink z constants from nets.
2000-07-25 02:55:13 +00:00