Stephen Williams
6051150c14
Continuous assign no longer uses elaborate_net.
...
convert the continuous assign elaboration to use elaborate_expr
and synthesize methods instead of the elaborate_net methods of
PExpr. This exposes problems with the synthesize methods, but it
is a better way to do it.
2008-08-11 21:21:33 -07:00
Stephen Williams
1d884cb0e9
Shuffle the argument list for the synthesize method.
...
In preparation for using the synthesize method to replace the
elaborate_net method of PExpr, rework the interface to the
synthesize() method. This changes no fnctionality, but does set
up the infrastructure for the next step.
2008-08-10 18:22:34 -07:00
Stephen Williams
893aae2ca4
Add BUFZ to input ports when necessary.
...
When driving an input port to a module, watch out for the case where
the net is also driven within the instance. If this is the case, take
pains to make sure what goes on in the instance doesn't leak out
through the input port. Add a BUFZ (continuous assignment) to isolate
the context from internal driving.
2008-08-06 21:04:52 -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
9f04641fc7
Detect and elaborate AMS access functions.
...
Detect function call expressions that turn out to be calls to the
access function of a nature. Elaborate the access function and stub
the emit code. This gets the access function just short of the code
generator.
2008-07-30 18:01:41 -07:00
Stephen Williams
e02d186946
Handle multiple passes of scope and defparam elaboration.
...
When generate schems and instance arrays are nested, it takes
multiple iterations of elaborate scope, defparams and evaluate
parameters before everything is worked out. Rework the work item
processing so that the loop elaborates scopes and runs defparams
in phases. The phases are needed so that we can tell when the
remaining defparams are orphaned.
2008-06-30 03:46:46 +02:00
Stephen Williams
da2c4b0fa1
Multiple passes for run_defparams.
...
It is possible for defparams to not find their target the first time
around, because the elaboration of the target scope is not yet done.
So retry the defparams once for each scope by putting it on a work
item in the elaborator_work_items list.
2008-06-25 22:02:22 -07:00
Stephen Williams
c810406195
run scope elaboration as queued work items.
...
Putting scope elaboration into work queue items allows for handling
more complex processing order. The elaboration_work_list queue drives
the processing of elaborate_scope and parameter evaluation.
2008-06-24 20:28:08 -07:00
Cary R
27cdd27889
Add .cast/int and update .cast/real.
...
This patch adds .cast/int and updates .cast/real to act as a local
(temporary) net and to support either a signed or unsigned input.
The vvp_vector4_t class not can convert an arbitrarily sized double
to a vector value. This removes the restriction of lround().
Also document the new statements.
2008-06-20 19:45:18 -07:00
Stephen Williams
37723698dc
Handle non-real operands to real division.
...
This handles the general case of a non-real operand to a real-valued
division. This can turn up if only 1 operand of a divide is real. In
this case the division as a whole is real and the other operand must
be cast to real.
This method creates an extra node, but it should be a very compact
node and this node does no evaluation tricks so in the run time should
be no more expensive then folding the cast into the .arith/div.r itself.
2008-06-17 17:07:19 -07:00
Larry Doolittle
eed4ff7e2d
Spelling fixes
...
Mostly comments, but includes quite a few
user-visible error, debug, and help messages.
2008-06-13 08:51:28 -07:00
Larry Doolittle
d90ce68f5d
Spelling fixes
...
No code changes.
2008-06-10 15:02:18 -07:00
Stephen Williams
db09f2fa7e
More cost effective and reliable island joining algorithm.
...
Rather then join islands while branches are initially created, save the
island creating for the end. This way, the process is actually recursive
and greedy, reliably collecting branches into islands without conflict.
2008-06-03 20:21:39 -07:00
Stephen Williams
73e2b297df
Replace the NetPartSelect:BI with NetTran(VP).
...
Fold the bi-directional part select into the pass switch (tran) support
so that it can be really bi-directional. This involves adding a new
tranvp device that does part select in tran islands, and reworking the
tran island resolution to handle non-identical nodes. This will be needed
for resistive tran devices anyhow.
2008-06-03 11:16:25 -07:00
Stephen Williams
df15a0368c
Collect NetTran devices into islands.
...
NetTran devices must be collected into islands because they are all
a bi-directional mass. This is how vvp will process them and the code
generator will need a head start organizing them.
2008-06-01 19:45:12 -07:00
Stephen Williams
ca756f3ec3
Bring switch information out to the ivl_target API.
...
This involves defining the API for switches and cleaning up the
elaborated form to match the defined ivl_target API. Also add t-dll
code to support the ivl_switch_t functions, and add stub code that
checks the results.
2008-05-23 20:53:10 -07:00
Stephen Williams
ec773fe8cf
Elaborate tran devices
...
The tran devices include tran, rtran, tranif0/1 and rtranif0/1. These
are all elaborated as options on a NetTran device. It is still not
clear the best way to present tran devices via the ivl_target.h API.
2008-05-19 21:42:52 -07:00
Stephen Williams
c76e88cad5
Add support for explicit parameter types, including real.
...
Before this, the types of parameters were always logic, only the
width and signed-ness could be controlled. A parameter may take
on implicit real values if the expression were real.
With this patch, the type for the parameter can be explicitly set
to logic or real. This also means that the parameter real valued
expressions need to be more crefully treated, possibly with casting
integral expressions to real values, or real expressions to integral
values.
2008-05-17 16:25:58 -07:00
Stephen Williams
48f934abf7
Get parameter ranges as far as the netlist form.
...
The pform is now translated/elaborated into NetScope objects. All that
remains is to check the parameter values against the ranges. This is
to be done in the evaluate_parameters() method.
2008-05-13 21:22:52 -07:00
Stephen Williams
dfb7bf5211
Handle part selects of nets that fall of the ends of the identifier.
...
The Verilog LRM specifies that it is legal to give constant part
selects that are beyond the bounds of the identifier being selected.
But elaboration was flagging that as an error. This patch changes it
to a warning, and handles the cases by generating 'bx bits as needed.
2008-05-09 17:42:37 -07:00
Stephen Williams
10ab5cf698
Merge branch 'verilog-ams'
2008-05-06 21:00:12 -07:00
Cary R
4f8b91e65c
Add file and line information for parameters, etc.
...
This patch adds file and line information for parameters and
local parameters. It also adds file/line stubs for signals in
the tgt-* files. It adds the pform code needed to eventually
do genvar checks and passing of genvar file/line information.
It verifies that a genvar does not have the same name as a
parameter/local parameter.
2008-05-06 07:14:27 -07:00
Stephen Williams
e91243e1c6
Elaborate abs() is continuous assign expressions.
...
In continuous assign expressions, the abs() operator can't easily be
burried in generic unary handling, so add the IVL_LPM_ABS type and
generate it as needed.
2008-05-05 22:00:39 -07:00
Stephen Williams
d60df2d75b
Implement abs/min/max operators for real values.
...
Implement in behavioral the abs/min/max operators for real values.
The parser treats these builtin functions as operators, unary or
binary, and elaborates them appropriately.
Also add enough code generator support to handle real valued expressions
in thread context.
2008-05-03 21:54:42 -07:00
Cary R
86a4025b58
Push file and line information for scopes to the runtime.
...
This patch adds code to push the file and line information
for scope objects (modules, functions, tasks, etc.) to the
runtime. For modules, this includes the definition fields.
2008-04-29 21:51:34 -07:00
Cary R
436e2fca13
Add ifnone functionality.
...
This patch adds ifnone functionality. It does not produce an
error when both an ifnone and an unconditional simple module
path are given. For this case the ifnone delays are ignored.
2008-04-29 11:55:32 -07:00
Cary R
c38e8182c2
Add checks that verify an always statement has delay.
...
This patch adds check to determine if an always block has delay
in it or not. If there is no delay a runtime infinite loop will
occur. For the indeterminate case it will print a warning message
if the new -Winfloop flag is given. This flag is not part of the
-Wall check!
2008-04-22 19:53:23 -07:00
Cary R
fe72d02cf6
Major rework of the ternary operator elaboration code.
...
This patch reworks much of the ternary code to short circuit when
possible and supports real values better. It adds a blend operator
for real values that returns 0.0 when the values differ and the value
when they match. This deviates slightly from the standard which
specifies that the value for reals is always 0.0 when the conditional
is 'bx. There are also a couple bug fixes.
These fixes have not been ported to continuous assignments yet.
Ternary operators used at compile time and in procedural assignments
should be complete (short circuit and support real values).
2008-03-08 19:45:13 -08:00
Stephen Williams
32a2e7aa39
Fix lexical scopes within case-generate alternatives.
...
Case-generate alternatives create sub-scopes that need to be scanned
by the scope scanner in order to get function definitions etc. that
are defined lexically within generated scopes.
2008-03-02 21:04:04 -08:00
Cary R
fac1cc5a1c
Add user function synth and clean up expression code.
...
This patch adds synthesize() for user functions. It also cleans up a
number of inconsistencies and missing checks in the expression code.
2008-02-24 20:00:18 -08:00
Stephen Williams
11a33a0907
Merge branch 'pscope'
2008-02-24 19:45:21 -08:00
Stephen Williams
8e704cbf93
Rework handling of lexical scope
...
Move the storage of wires (signals) out of the Module class into
the PScope base class, and instead of putting the PWires all into
the Module object, distribute them into the various lexical scopes
(derived from PScope) so that the wire names do not need to carry
scope information.
This required some rewiring of elaboration of signals, and rewriting
of lexical scope handling.
2008-02-24 19:40:54 -08:00
Cary R
3716e972ec
Add support for unary +/- in real parameter evaluation.
...
This patch adds support for unary + and - of real value constants
to the eval_tree() functionality.
2008-02-20 17:24:44 -08:00
Stephen Williams
f1f2806e3c
Get delays of signed extended continuous assignments right.
...
Padding and continuous assignment caused problems if the continuous
assignment includes a delay. The problem is that the padding was
not necessarily included in the delay. Rework the elaboration to
make sure the padding is indeed included in the delay.
2008-02-01 20:13:23 -08:00
Cary R
5e8a1bd8cc
Add power operator (**) for real values in a continuous assignment.
...
This patch adds the power operator for real values in a continuous
assignment.
2008-01-31 16:48:52 -08:00
Larry Doolittle
d9ac146b8f
Spelling fixes
...
only comments and documentation
some punctuation and capitalization for good measure
Changelogs are purposefully untouched
2008-01-29 20:24:24 -08:00
Stephen Williams
abfccb65e9
User defined functions take real arguments
...
Allow user defined functions to take real value arguments and return
real value results in net contexts. Use the data type of the nets
attached to the ports to define the data types of the arguments and
return value.
2008-01-28 18:57:55 -08:00
Larry Doolittle
47d65034db
Spelling fixes
...
mostly comments, but includes some identifiers and message text
2008-01-27 18:18:13 -08:00
Stephen Williams
76164d7711
Rework compile-time evaluation of LT and GT
...
There was much redundant code in the compile-tile handling of the
less-then and greater-then of constant expressions, and much of it
was buggy. Unify much of the code and squeeze out the bugs so that
compile-time evaluations come out correctly.
2008-01-23 20:43:13 -08:00
Stephen Williams
1f7957c612
Fix type handling of real-value system functions in nets
...
In nets, if system functions return a real value the function lookup
was getting the correct width, but was also setting the width to 0,
which confused down-stream net handling. Real-value system fuctions
have a width of 1. (1 real-valued scalar.)
2008-01-08 18:54:55 -08:00
Stephen Williams
4c8a7b221c
Proper padding of constant bitwise operands
...
When evaluating bitwise binary expressions at compile time, get the
signed/unsigned padding correct. Pay special attention to the case
of $signed/$unsigned changing the signedness of the operand.
2007-12-17 21:00:18 -08:00
Cary R
088b4e2fb8
Fix function/task scope searching.
...
When looking for a function or task (scope) do not compare the final path
component with the current module name since it cannot be an up reference.
2007-12-07 17:57:26 -08:00
Martin Whitaker
dd56dd1635
Correct naming of unnamed generate blocks.
...
This patch causes unnamed generate blocks to be automatically named
using the naming scheme defined in the Verilog-2005 standard. This
is a fix for the problem discussed in pr1821610.
2007-11-18 21:01:35 -08:00
Cary R
dbce0cb05a
Fix @* to correctly handle non-input nets.
...
@* was only expanding to input nets. nex_input() for blocks was removing
any output net that was also an input. There was also a bug in how output
nets were removed. Only outputs currently defined were removed from the
input list.
always @(*) begin
y = a;
z = y;
end
would report "a" as an input. While
always @(*) begin
z = y;
y = a;
end
would report both "a" and "y" as inputs.
To fix this all nex_inputs now take a flag that when true (the default)
correctly removes any output from the input list. Both the above cases
will now return "a". If the flag is false outputs which are also inputs
will be included in the input list. This is what the @* elaboration code
uses to get the correct sensitivity list.
2007-11-07 20:00:05 -08:00
Cary R
7c852aa075
Add cmos/rcmos primitives.
...
This patch adds the cmos and rcmos primitives.
2007-09-06 18:46:22 -07:00
Cary R
4f6b47b345
Check that functions do not call invalid statements.
...
This patch adds checks to verify that functions do not invoke
statements that are invalid for them (#, @, wait, enable/call
tasks and non blocking assignment). For reference see section
10.3.4 of 1364-2001.
2007-08-30 20:41:45 -07:00
Stephen Williams
5e385e901d
Fix missing endif
2007-08-10 10:14:00 -07:00
Stephen Williams
3b94c122b7
Constant concat operands are self determined
...
distinguish between self-determined and value-preserving when
evaluating constants that are arguments to concatenations.
Signed-off-by: Stephen Williams <steve@icarus.com>
2007-08-09 22:08:54 -07:00
Stephen Williams
845e74c30e
Evaluate parameter expressions losslessly
...
Make sure parameter expressions are evaluated losslessly, as if
the l-value is unsigned and thus virtually infinite.
2007-06-27 22:05:36 -07:00
steve
c7d97f4146
Properly evaluate scope path expressions.
2007-06-02 03:42:12 +00:00
steve
ddd36ecb6c
Rework the heirarchical identifier parse syntax and pform
...
to handle more general combinations of heirarch and bit selects.
2007-05-24 04:07:11 +00:00
steve
b981c81d37
Rework hname_t to use perm_strings.
2007-04-26 03:06:21 +00:00
steve
583abb7f49
Fix handling calls to tasks in combinational always block
2007-04-17 04:34:23 +00:00
steve
33e5f22cf1
Handle evaluate of addition of real valued constants.
2007-04-07 04:46:18 +00:00
steve
d883979fd8
Seperate arrayness from word count
2007-04-02 01:12:34 +00:00
steve
fe8da0bf14
Remove pretense of general use for t_cookie.
2007-03-26 18:17:50 +00:00
steve
611d2c81b3
Spelling fixes from Larry
2007-03-22 16:08:14 +00:00
steve
d9efe3312e
Limit the calculated widths of constants.
2007-03-08 05:30:02 +00:00
steve
fc9a90c9e0
Add support for edge sensitive spec paths.
2007-03-02 06:13:22 +00:00
steve
243cf94165
Add support for conditional specify delay paths.
2007-03-01 06:19:38 +00:00
steve
1f54f128c1
Handle unary minus of real valued expressions.
2007-02-20 05:58:36 +00:00
steve
45307f6144
Handle type of ternary expressions properly.
2007-02-14 05:59:46 +00:00
steve
6d91be5b19
Use inttypes.h instead of stdint.h for portability.
2007-02-02 04:33:00 +00:00
steve
91d84e7dc7
Major rework of array handling. Memories are replaced with the
...
more general concept of arrays. The NetMemory and NetEMemory
classes are removed from the ivl core program, and the IVL_LPM_RAM
lpm type is removed from the ivl_target API.
2007-01-16 05:44:14 +00:00
steve
c339dc4bbc
Remove last bits of relax_width methods, and use test_width
...
to calculate the width of an r-value expression that may
contain unsized numbers.
2006-11-04 06:19:24 +00:00
steve
2302693201
Expression widths with unsized literals are pseudo-infinite width.
2006-10-30 05:44:49 +00:00
steve
69cd007a71
Support real valued specify delays, properly scaled.
2006-10-03 05:06:00 +00:00
steve
b658a3b41f
Missing PSpec.cc file.
2006-09-26 19:48:40 +00:00
steve
0edb5a7547
Basic support for specify timing.
2006-09-23 04:57:19 +00:00
steve
fc0695beb6
Handle 64bit delay constants.
2006-08-08 05:11:37 +00:00
steve
49b65e86fe
Add support for power in constant expressions.
2006-07-31 03:50:17 +00:00
steve
80f30be9d0
Add support for system functions in continuous assignments.
2006-06-18 04:15:50 +00:00
steve
f001d0001a
Add support for generate loops w/ wires and gates.
2006-04-10 00:37:42 +00:00
steve
5b3ba8c306
Properly handle signedness in compare.
2006-03-18 22:52:27 +00:00
steve
d434dd7296
Allow part selects of memory words in l-values.
2006-02-02 02:43:57 +00:00
steve
58f182a159
Node delays can be more general expressions in structural contexts.
2006-01-02 05:33:19 +00:00
steve
908955c72c
Handle bit select of parameter with ranges.
2005-11-27 05:56:20 +00:00
steve
0e044d6684
More precise about r-value width of constants.
2005-11-26 00:35:42 +00:00
steve
be73be8c98
Spelling patches from Larry.
2005-09-19 21:45:35 +00:00
steve
9fd16575d9
Support bool expressions and compares handle them optimally.
2005-09-14 02:53:13 +00:00
steve
c39976fbf1
Generate code to handle real valued muxes.
2005-09-01 04:11:37 +00:00
steve
b69f59f2ec
Handle memory references is continuous assignments.
2005-08-31 05:07:31 +00:00
steve
a8d49921ee
gcc4 compile errors.
2005-07-14 23:34:18 +00:00
steve
b9799cf6ec
Remove NetVariable and ivl_variable_t structures.
2005-07-11 16:56:50 +00:00
steve
75ad90534b
Generalize signals to carry types.
2005-07-07 16:22:49 +00:00
steve
739a1839ed
Do sign extension of structuran nets.
2005-05-24 01:44:27 +00:00
steve
7796c8bcfb
Parameters cannot have their width changed.
2005-05-17 20:56:55 +00:00
steve
7dd0d255a6
Add support for variable part select.
2005-05-08 23:40:14 +00:00
steve
365cfedd55
Update DFF support to new data flow.
2005-04-24 23:44:01 +00:00
steve
800e2c6a17
All memory addresses are signed.
2005-04-08 04:51:16 +00:00
steve
65c7ec00e7
Rework NetRamDq and IVL_LPM_RAM nodes.
2005-04-06 05:29:08 +00:00
steve
53da6e9a33
Add support for LPM_UFUNC user defined functions.
2005-03-18 02:56:03 +00:00
steve
ab1ca54df2
Update support for LPM_MOD.
2005-03-12 06:43:35 +00:00
steve
1c5b4881d7
Handle case inequality in netlists.
2005-03-09 05:52:03 +00:00
steve
257e1f9516
Support shifts and divide.
2005-02-19 02:43:38 +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
ee5bb5fcaf
Add the NetRepeat node, and code generator support.
2005-02-08 00:12:36 +00:00
steve
97f83ffbe3
laborate reduction gates into LPM_RED_ nodes.
2005-02-03 04:56:20 +00:00
steve
e6cdd32c19
Clarify width argument to NetNet constructor.
2005-01-30 01:43:48 +00:00
steve
99ace10774
Simplified NetMult and IVL_LPM_MULT.
2005-01-28 05:39:33 +00:00
steve
dfb7c7ba6f
Remove the NetEBitSel and combine all bit/part select
...
behavior into the NetESelect node and IVL_EX_SELECT
ivl_target expression type.
2005-01-24 05:28:30 +00:00
steve
25de448d34
Remove obsolete NetSubnet class.
2005-01-22 18:16:00 +00:00
steve
e28636776a
Change case compare from logic to an LPM node.
2005-01-22 01:06:55 +00:00
steve
bf6a5d0f50
Implement LPM_COMPARE nodes as two-input vector functors.
2005-01-16 04:20:32 +00:00
steve
4d139b58aa
Properly pad vector widths in pgassign.
2005-01-12 03:17:36 +00:00
steve
9e94afe399
Use PartSelect/PV and VP to handle part selects through ports.
2005-01-09 20:16:00 +00:00
steve
8f2d679c8a
Unify elaboration of l-values for all proceedural assignments,
...
including assing, cassign and force.
Generate NetConcat devices for gate outputs that feed into a
vector results. Use this to hande gate arrays. Also let gate
arrays handle vectors of gates when the outputs allow for it.
2004-12-29 23:55:43 +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
e4ae832153
Clean up spurious trailing white space.
2004-10-04 01:10:51 +00:00
steve
526b87cae3
Remove inaccurate comment.
2004-10-04 00:25:18 +00:00
steve
9de786fc44
Add support for module instance arrays.
2004-09-05 17:44:41 +00:00
steve
62cffe16f4
PR1026: assignment statements can have sensitivities in the l-values.
2004-09-04 04:24:15 +00:00
steve
f02f5be3cc
Fix use of system tasks in AT_STAR statements.
2004-08-28 16:23:05 +00:00
steve
d76ad25778
Do not change reg to wire in NetAssign_ unless synthesizing.
2004-08-28 15:08:31 +00:00
steve
efe05a77cb
nex_output for NetPDelay statements.
2004-06-30 15:32:18 +00:00
steve
3dbc07f34d
Implement signed divide and signed right shift in nets.
2004-06-30 02:16:26 +00:00
steve
9949040285
Add support for the default_nettype directive.
2004-06-13 04:56:53 +00:00
steve
5472b27e1f
Rewire/generalize parsing an elaboration of
...
function return values to allow for better
speed and more type support.
2004-05-31 23:34:36 +00:00
steve
1295058e5d
parameter keys are per_strings.
2004-02-20 06:22:56 +00:00
steve
89acc41437
LPM, logic and Variables have perm_string names.
2004-02-19 07:06:57 +00:00
steve
536068bdfb
Memory and Event names use perm_string.
2004-02-19 06:57:10 +00:00
steve
27af95d402
Use perm_strings for named langiage items.
2004-02-18 17:11:54 +00:00
steve
57c3e86084
Debug dumps for synth2.
2003-12-17 16:52:39 +00:00
steve
43f28b53a3
Design::get_flag returns const char* instead of string.
2003-11-10 20:59:03 +00:00
steve
bc0ead2842
Spelling fixes in comments.
2003-11-08 20:06:21 +00:00
steve
7fd669fcc0
NetEUReduce has its own dup_expr method.
2003-10-31 02:47:11 +00:00
steve
edaa7df6d2
Output of While is output of while substatement.
2003-10-26 04:51:38 +00:00
steve
1f0c274e82
Obsolete find_symbol and find_event from the Design class.
2003-09-20 01:05:35 +00:00
steve
693794552c
Remove find_memory method from Design class.
2003-09-19 03:50:12 +00:00
steve
da7956a797
Fix name search in elab_lval.
2003-09-19 03:30:04 +00:00
steve
178847fc53
Spelling fixes.
2003-09-13 01:01:51 +00:00
steve
7c1401a2ba
Spelling patch.
2003-08-28 04:11:17 +00:00
steve
e561819179
Add synthesis support for synchronous reset.
2003-08-15 02:23:52 +00:00
steve
a95463ff81
Add support for IVL_LPM_MULT device.
2003-08-09 03:23:03 +00:00
steve
bfe31e22bf
Start handling pad of expressions in code generators.
2003-07-26 03:34:42 +00:00
steve
cadf4cfdef
Spelling fixes.
2003-07-15 03:49:22 +00:00
steve
004ecd08dd
Elide empty begin-end in conditionals.
2003-07-02 04:19:16 +00:00
steve
61195c5daa
Harmless fixup of warnings.
2003-06-21 01:21:42 +00:00
steve
ccf4d4d7da
Module attributes from the parser
...
through to elaborated form.
2003-06-20 00:53:19 +00:00
steve
71a404a546
Add arithmetic shift operators.
2003-06-18 03:55:18 +00:00
steve
8352c91b0a
Evaluate <= with real operands.
2003-06-05 04:28:24 +00:00
steve
5903f0744c
Support parameters in real expressions and
...
as real expressions, and fix multiply and
divide with real results.
2003-05-30 02:55:32 +00:00
steve
76295ac873
More complete bit range internal error message,
...
Better test of part select ranges on non-zero
signal ranges.
2003-05-01 01:13:57 +00:00
steve
f1cc9d865b
Support event names as expressions elements.
2003-04-22 04:48:29 +00:00
steve
5d1d99a89f
Handle signed magnitude compare all the
...
way through to the vvp code generator.
2003-04-11 05:18:08 +00:00
steve
2c129dfbfa
Synthesize shift expressions.
2003-04-08 04:33:55 +00:00
steve
d18934d444
Sign extend NetMult inputs if result is signed.
2003-03-29 05:51:25 +00:00
steve
c602d94cef
Comparison operators do have defined width.
2003-03-15 18:08:43 +00:00
steve
6d94f2ea55
Better organize the NetESFunc return type guesses.
2003-03-15 04:46:28 +00:00
steve
1222153cdf
Keep parameter constants for the ivl_target API.
2003-03-10 23:40:53 +00:00
steve
badad63ab4
All NetObj objects have lex_string base names.
2003-03-06 00:28:41 +00:00
steve
486274cfa1
Scope names stored only as basename.
2003-03-03 02:22:41 +00:00
steve
4c67de5ca7
Add the lex_strings string handler, and put
...
scope names and system task/function names
into this table. Also, permallocate event
names from the beginning.
2003-03-01 06:25:30 +00:00
steve
f8d1e15a27
NetEBDiv handles real value constant expressions.
2003-02-07 02:47:57 +00:00
steve
589422b505
Real constants have no defined vector width
2003-02-06 17:50:23 +00:00
steve
e941e7e805
Spelling fixes.
2003-01-30 16:23:07 +00:00
steve
04ada23119
Support in various contexts the $realtime
...
system task.
2003-01-27 00:14:37 +00:00
steve
46253ed873
Rework expression parsing and elaboration to
...
accommodate real/realtime values and expressions.
2003-01-26 21:15:58 +00:00
steve
e62e1d89b6
Named event triggers can take hierarchical names.
2002-12-07 02:49:24 +00:00
steve
9f80ed32b6
Support bit select in constant expressions.
2002-12-05 02:14:33 +00:00
steve
aa8869a3c7
Postpone parameter width check to evaluation.
2002-11-09 01:40:19 +00:00
steve
86032c0aa5
Allow named events to be referenced by
...
hierarchical names.
2002-11-02 03:27:51 +00:00
steve
9ce2806710
Fix synth2 handling of aset/aclr signals where
...
flip-flops are split by begin-end blocks.
2002-10-23 01:45:24 +00:00
steve
3d4593d4d5
Synthesizer support for synchronous begin-end blocks.
2002-10-21 01:42:08 +00:00
steve
43501809b1
Redo the parameter vector support to allow
...
parameter names in range expressions.
2002-10-19 22:59:49 +00:00
steve
166621bcb3
Generate vvp code for asynch set/reset of NetFF.
2002-09-26 03:18:04 +00:00
steve
879a5a4cbe
Synthesize async set/reset is certain cases.
2002-09-26 01:13:14 +00:00
steve
eb81062d85
Add to synth2 support for synthesis of
...
synchronous logic. This includes DFF enables
modeled by if/then/else.
2002-09-16 00:30:33 +00:00
steve
dac99b9374
Add support for binary nand operator.
2002-09-12 15:49:43 +00:00
steve
8ab2ec6f86
Allow release to handle removal of target net.
2002-08-19 00:06:11 +00:00
steve
2fad8d4cff
Detect temporaries in sequential block synthesis.
2002-08-18 22:07:16 +00:00
steve
c794aa02b8
Fix intermix of node functors and node delete.
2002-08-16 05:18:27 +00:00
steve
52bf4e613f
conditional ident string using autoconfig.
2002-08-12 01:34:58 +00:00
steve
693e9e5ad0
Store only the base name of memories.
2002-08-05 04:18:45 +00:00
steve
89314d4772
Do not use hierarchical names of memories to
...
generate vvp labels. -tdll target does not
used hierarchical name string to look up the
memory objects in the design.
2002-08-04 18:28:14 +00:00
steve
bb87c368b8
Asynchronous synthesis of sequential blocks.
2002-07-29 00:00:28 +00:00
steve
58ec62c895
Rewrite find_similar_event to support doing
...
all event matching and replacement in one
shot, saving time in the scans.
2002-07-24 16:24:45 +00:00
steve
8114523be2
Asynchronous synthesis of case statements.
2002-07-07 22:32:15 +00:00
steve
3f1cd14f6c
Fix scope search for events.
2002-07-03 05:34:59 +00:00
steve
93bb4283b8
Change the signal to a net when assignments go away.
2002-07-02 03:02:57 +00:00
steve
d5e9e13555
synth_asych of if/else requires redirecting the target
...
if sub-statements. Use NetNet objects to manage the
situation.
2002-07-01 00:54:21 +00:00
steve
9b6b081e38
Add structure for asynchronous logic synthesis.
2002-06-30 02:21:31 +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
f9768cd579
spelling error.
2002-06-23 18:22:43 +00:00
steve
5eca5d9948
Carry integerness throughout the compilation.
2002-06-21 04:59:35 +00:00
steve
cd94019733
Remove NetTmp and add NetSubnet class.
2002-06-19 04:20:03 +00:00
steve
9cef973d9b
Add NetRamDq synthsesis from memory l-values.
2002-06-08 23:42:46 +00:00
steve
53d8cdd9f8
Add support for memory words in l-value of
...
non-blocking assignments, and remove the special
NetAssignMem_ and NetAssignMemNB classes.
2002-06-05 03:44:25 +00:00
steve
91a755d0e8
Add support for memory words in l-value of
...
blocking assignments, and remove the special
NetAssignMem class.
2002-06-04 05:38:43 +00:00
steve
422754f36f
Support carrying the scope of named begin-end
...
blocks down to the code generator, and have
the vvp code generator use that to support disable.
2002-05-27 00:08:45 +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
8667b9a35d
Put off evaluation of concatenation repeat expresions
...
until after parameters are defined. This allows parms
to be used in repeat expresions.
Add the builtin $signed system function.
2002-05-05 21:11:49 +00:00
steve
5882c6a481
Redo handling of assignment internal delays.
...
Leave it possible for them to be calculated
at run time.
2002-04-21 22:31:02 +00:00
steve
9dda15a186
implement nex_input for behavioral statements.
2002-04-21 17:43:12 +00:00
steve
b094bbdcf4
Add support for conbinational events by finding
...
the inputs to expressions and some statements.
Get case and assignment statements working.
2002-04-21 04:59:07 +00:00
steve
b7c2bd4f72
Add the NetUserFunc netlist node.
2002-03-09 02:10:22 +00:00
steve
364ffc9024
Add support for bit select of parameters.
...
This leads to a NetESelect node and the
vvp code generator to support that.
2002-01-28 00:52:41 +00:00
steve
349be0f169
Precalculate constant results of memory index expressions.
2002-01-22 01:40:04 +00:00
steve
608555ce7e
Pass back target errors processing conditionals.
2002-01-19 19:02:08 +00:00
steve
51db00fb44
Support $signed cast of expressions.
2001-12-31 00:08:14 +00:00
steve
ab6c8cb4b8
Parser and pform use hierarchical names as hname_t
...
objects instead of encoded strings.
2001-12-03 04:47:14 +00:00
steve
e85347bf8b
Handle part selects in l-values of DFF devices.
2001-11-29 01:58:18 +00:00
steve
f28f5e01e5
Unary reduction operators are all 1-bit results.
2001-11-19 04:26:46 +00:00
steve
08f0f5a1f7
DLL target support for force and release.
2001-11-14 03:28:49 +00:00
steve
0c7335a77d
Spelling errors.
2001-11-09 03:43:26 +00:00
steve
7793a49854
Remove string paths from PExpr elaboration.
2001-11-08 05:15:50 +00:00
steve
1ff36dc892
shift expressions can have definite widths.
2001-11-06 04:32:37 +00:00
steve
75e78e86d3
ivl_target support for assign/deassign.
2001-10-31 05:24:52 +00:00
steve
874bab10e4
NetObj constructor finally requires a scope.
2001-10-28 01:14:53 +00:00
steve
7a149a6943
Scope/module names are char* instead of string.
2001-10-20 05:21:51 +00:00
steve
d350620315
Support multiple root modules (Philip Blundell)
2001-10-19 21:53:24 +00:00
steve
177fa4062b
Support IVL_LPM_DIVIDE for structural divide.
2001-10-16 02:19:26 +00:00
steve
494b5ff1ee
parameter names do not have defined size.
2001-10-07 03:38:08 +00:00
steve
e35ed6e91c
Change the NetAssign_ class to refer to the signal
...
instead of link into the netlist. This is faster
and uses less space. Make the NetAssignNB carry
the delays instead of the NetAssign_ lval objects.
Change the vvp code generator to support multiple
l-values, i.e. concatenations of part selects.
2001-08-25 23:50:02 +00:00
steve
becc7cb56a
Handle part select expressions as variants of
...
NetESignal/IVL_EX_SIGNAL objects, instead of
creating new and useless temporary signals.
2001-07-27 04:51:44 +00:00
steve
ce589da58a
Support the NetESubSignal expressions in vvp.tgt.
2001-07-22 00:17:49 +00:00
steve
bcaa122fb9
handle left shifter in dll output.
2001-07-04 22:59:25 +00:00
steve
79b740284a
Make NetFF constructor take const char* for the name.
2001-07-01 00:27:34 +00:00
steve
4b82d26f5e
Add support for structural multiply in t-dll.
...
Add code generators and vvp support for both
structural and behavioral multiply.
2001-06-16 23:45:05 +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
914ad85e63
Add ivl and vvp.tgt support for memories in
...
expressions and l-values. (Stephan Boettcher)
2001-05-08 23:59:33 +00:00
steve
a52b34cb64
Add pullup and pulldown devices.
2001-04-29 20:19:10 +00:00
steve
8dfa322b8b
Support for UDP devices in VVP (Stephen Boettcher)
2001-04-24 02:23:58 +00:00
steve
66cf3ec8fa
More UDP consolidation from Stephan Boettcher.
2001-04-22 23:09:45 +00:00
steve
0550287658
Generate vvp code for functions with ports.
2001-04-06 02:28:02 +00:00
steve
f40d006c26
Generate code for task calls.
2001-04-02 02:28:12 +00:00
steve
ad8565f8a6
Add const probe method to NetEvent.
2001-03-29 02:52:01 +00:00
steve
2b0aaec8ab
FreeBSD port has a maintainer now.
2001-02-15 06:59:35 +00:00
steve
7d7beeecc1
Binary operators with operands of indefinite width
...
has itself an indefinite width.
2001-02-10 21:20:38 +00:00
steve
f5d0211864
In the context of range declarations, use elab_and_eval instead
...
of the less robust eval_const methods.
2001-02-10 20:29:39 +00:00
steve
7ef3b44ab1
support evaluation of constant < in expressions.
2001-02-09 05:44:23 +00:00
steve
145ac49233
NetMux needs a scope. (PR#115)
2001-01-18 03:16:35 +00:00
steve
65020bc6de
Use the iosfwd header if available.
2001-01-16 02:44:17 +00:00
steve
cc18d065aa
declaration initialization for time variables.
2001-01-06 06:31:58 +00:00
steve
68e672e61a
Support arrays of integers.
2001-01-06 02:29:35 +00:00
steve
8bfae1e641
Evaluate constant === and !== expressions.
2001-01-04 16:49:50 +00:00
steve
120a211e68
Support a bunch of unary operators in parameter expressions.
2001-01-02 04:21:13 +00:00
steve
b6a18098c7
Evaluate constant &, | and unary ~.
2001-01-02 03:23:40 +00:00
steve
f4671a3082
Evaluate <= and ?: in parameter expressions (PR#81)
2000-12-16 19:03:30 +00:00
steve
8ae4e25720
Detect recursive instantiations (PR#2)
2000-12-16 01:45:47 +00:00
steve
5dbea64759
Add support for signed reg variables,
...
simulate in t-vvm signed comparisons.
2000-12-11 00:31:43 +00:00
steve
3b9a60414e
Make signal attributes available to ivl_target API.
2000-12-05 06:29:33 +00:00
steve
4f638882c9
Add Attrib class for holding NetObj attributes.
2000-12-04 17:37:03 +00:00
steve
a2a40869b0
Spelling error in comment.
2000-12-02 05:08:04 +00:00
steve
ea921efced
synthesis for unary reduction ! and N operators.
2000-11-29 05:24:00 +00:00
steve
291ab97422
Add support for || synthesis (PR#53)
2000-11-29 02:09:52 +00:00
steve
f4443a7dfa
Add support for supply nets (PR#17)
2000-11-20 00:58:40 +00:00
steve
28bc621f11
change set for support of nmos, pmos, rnmos, rpmos, notif0, and notif1
...
change set to correct behavior of bufif0 and bufif1
(Tim Leight)
Also includes fix for PR#27
2000-11-11 01:52:09 +00:00
steve
a8da692540
Add support for the t-dll backend grabing flip-flops.
2000-11-11 00:03:36 +00:00
steve
61ad0b23c8
Apply sequential UDP rework from Stephan Boettcher (PR#39)
2000-11-04 06:36:24 +00:00
steve
3591e06c4e
Support time variables.
2000-10-31 17:49:02 +00:00
steve
ad4931e813
Add scope to threads in vvm, pass that scope
...
to vpi sysTaskFunc objects, and add vpi calls
to access that information.
$display displays scope in %m (PR#1)
2000-10-28 00:51:41 +00:00
steve
e10679633d
Add ivl_lval_t and support for assignment l-values.
2000-10-18 20:04:39 +00:00
steve
76e2c509d7
Put logic devices into scopes.
2000-10-07 19:45:42 +00:00
steve
6f69773c57
ivl_target updates, including more complete
...
handling of ivl_nexus_t objects. Much reduced
dependencies on pointers to netlist objects.
2000-10-06 23:46:50 +00:00
steve
41f3ba65a1
xor and constant devices.
2000-10-05 05:03:01 +00:00
steve
aac5fc246a
Use char8 instead of string to store name.
2000-10-04 16:30:39 +00:00
steve
21e0e8a8a1
Cnstant evaluation of NE.
2000-09-29 04:42:56 +00:00
steve
79b1c51e68
Detect indefinite widths where definite widths are required.
2000-09-26 05:05:58 +00:00
steve
8b581cef46
Remove the obsolete NetEIdent class.
2000-09-26 01:35:42 +00:00
steve
cbe20e8bcf
fix null pointer when elaborating undefined task.
2000-09-24 17:41:13 +00:00
steve
2be1c115ff
Move some NetNet method out of the header file.
2000-09-24 15:44:44 +00:00
steve
48ff3590bc
Access to the name of a system task call.
2000-09-22 03:58:30 +00:00
steve
89d7176734
Add support for modulus (Eric Aardoom)
2000-09-17 21:26:15 +00:00
steve
8a69c54886
elaborate complex l-values
2000-09-10 02:18:16 +00:00
steve
49570b8cd9
encapsulate access to the l-value expected width.
2000-09-07 00:06:53 +00:00
steve
115d24a292
Pull NetAssign_ creation out of constructors.
2000-09-02 23:40:12 +00:00
steve
ac81f6a201
Rearrange NetAssign to make NetAssign_ separate.
2000-09-02 20:54:20 +00:00
steve
ff32325d07
t-dll iterates signals, and passes them to the
...
target module.
Some of NetObj should return char*, not string.
2000-08-27 15:51:50 +00:00
steve
8876cda37f
Get at gate information for ivl_target interface.
2000-08-26 00:54:03 +00:00
steve
9abd84952b
add th t-dll functions for net_const, net_bufz and processes.
2000-08-14 04:39:56 +00:00
steve
248baa26e1
Move all file manipulation out of target class.
2000-08-09 03:43:45 +00:00
steve
d58533fd7b
target methods need not take a file stream.
2000-08-08 01:50:42 +00:00
steve
e01137ced3
cleanup.
2000-08-02 14:48:15 +00:00
steve
d677f226f3
Support <= in synthesis of DFF and ram devices.
2000-08-01 02:48:41 +00:00
steve
0243fca8dc
Rearrange task and function elaboration so that the
...
NetTaskDef and NetFuncDef functions are created during
signal enaboration, and carry these objects in the
NetScope class instead of the extra, useless map in
the Design class.
2000-07-30 18:25:43 +00:00
steve
3aa250b16b
Report code generation errors through proc_delay.
2000-07-29 16:21:08 +00:00
steve
4494a7a4f3
Support elaboration of disable statements.
2000-07-27 05:13:44 +00:00
steve
286cef19fb
Parse and elaborate timescale to scopes.
2000-07-22 22:09:03 +00:00
steve
741b17245d
Handle some edge cases during node scans.
2000-07-16 04:56:07 +00:00
steve
2a08824ae9
Detect muxing Vz as a bufufN.
2000-07-15 05:13:43 +00:00
steve
42e4ff47c8
Move inital value handling from NetNet to Nexus
...
objects. This allows better propogation of inital
values.
Clean up constant propagation a bit to account
for regs that are not really values.
2000-07-14 06:12:56 +00:00
steve
18eb34921f
Add support for non-constant delays in delay statements,
...
Support evaluating ! in constant expressions, and
move some code from netlist.cc to net_proc.cc.
2000-07-07 04:53:53 +00:00
steve
583868e74e
Redesign Links to include the Nexus class that
...
carries properties of the connected set of links.
2000-06-25 19:59:41 +00:00
steve
e52ada617e
Get rid of useless next_link method.
2000-06-24 22:55:19 +00:00
steve
66ae567b25
Index in memory assign should be a NetExpr.
2000-06-13 03:24:48 +00:00
steve
c1c0168893
Globally merge redundant event objects.
2000-05-31 02:26:49 +00:00
steve
fd09bc3e3e
Merge similar probes within a module.
2000-05-27 19:33:23 +00:00
steve
367db72c99
Add support for procedural continuous assignment.
2000-05-11 23:37:26 +00:00
steve
b28f258463
Import MCD support from Stephen Tell, and add
...
system function parameter support to the IVL core.
2000-05-07 18:20:07 +00:00
steve
b90cda1f3f
Carry strength values from Verilog source to the
...
pform and netlist for gates.
Change vvm constants to use the driver_t to drive
a constant value. This works better if there are
multiple drivers on a signal.
2000-05-07 04:37:55 +00:00
steve
fbe475ef7d
Add infrastructure for system functions, move
...
$time to that structure and add $random.
2000-05-04 03:37:58 +00:00
steve
69612ceb73
Move memories to the NetScope object.
2000-05-02 03:13:30 +00:00
steve
8d8f1e2401
Move signal tables to the NetScope class.
2000-05-02 00:58:11 +00:00
steve
2b40c7ce11
integer division in expressions properly get width.
2000-04-28 18:43:23 +00:00
steve
08e9a114a2
Catch memory word parameters to tasks.
2000-04-28 16:50:53 +00:00
steve
6e8fe39cc7
Better comments about bufif devices.
2000-04-23 21:17:31 +00:00
steve
6446add9cd
Emit code for the bufif devices.
2000-04-23 21:15:07 +00:00
steve
a8114ae122
Add support for the procedural release statement.
2000-04-23 03:45:24 +00:00
steve
44838f8973
Add support for force assignment.
2000-04-22 04:20:19 +00:00
steve
2094a2f466
Catch some simple identity compareoptimizations.
2000-04-20 00:28:03 +00:00
steve
74c43032b3
Clean up unneeded NetEvent objects.
2000-04-18 04:50:19 +00:00
steve
4f07c43976
Minor cleanup of NetTaskDef.
2000-04-18 01:02:53 +00:00
steve
726f7b8b11
Synthesis of comparator in expressions.
...
Connect the NetEvent and related classes
together better.
2000-04-16 23:32:18 +00:00
steve
7484feceb5
fork-join support in vvm.
2000-04-15 19:51:30 +00:00
steve
4493e968da
Finally remove the NetNEvent and NetPEvent classes,
...
Get synthesis working with the NetEvWait class,
and get started supporting multiple events in a
wait in vvm.
2000-04-12 20:02:52 +00:00
steve
b1fd927acb
Named events really should be expressed with PEIdent
...
objects in the pform,
Handle named events within the mix of net events
and edges. As a unified lot they get caught together.
wait statements are broken into more complex statements
that include a conditional.
Do not generate NetPEvent or NetNEvent objects in
elaboration. NetEvent, NetEvWait and NetEvProbe
take over those functions in the netlist.
2000-04-12 04:23:57 +00:00
steve
8dbd64121f
All events now use the NetEvent class.
2000-04-10 05:26:05 +00:00
steve
30e8289239
Simulate named event trigger and waits.
2000-04-04 03:20:15 +00:00
steve
b62a7ace5c
Remove the useless sref template.
2000-04-02 04:26:06 +00:00
steve
694ff934af
Add support for integer division.
2000-04-01 21:40:22 +00:00
steve
d97ab9be23
New and improved combinational primitives.
2000-03-29 04:37:10 +00:00
steve
6eef54595f
Support localparam.
2000-03-12 17:09:40 +00:00
steve
78ab1a7bba
Locate scopes in statements.
2000-03-11 03:25:51 +00:00
steve
61822d48aa
Handle defparam to partial hierarchical names.
2000-03-10 06:20:48 +00:00
steve
e7efc2709a
Redesign the implementation of scopes and parameters.
...
I now generate the scopes and notice the parameters
in a separate pass over the pform. Once the scopes
are generated, I can process overrides and evalutate
paremeters before elaboration begins.
2000-03-08 04:36:53 +00:00
steve
b734ecf02f
Macintosh compilers do not support ident.
2000-02-23 02:56:53 +00:00
steve
e77bcf6910
Include some block matching from Larry.
2000-02-13 04:35:43 +00:00
steve
aa8908c52f
Multiplication all the way to simulation.
2000-01-13 03:35:35 +00:00
steve
fac3bde2c8
Elaborate parameters afer binding of overrides.
2000-01-10 01:35:23 +00:00
steve
e6820ed169
Handle synthesis of concatenation.
2000-01-01 06:18:00 +00:00
steve
b6d1bb1fa7
Propogate constant 0 in low bits of adders.
1999-12-30 04:19:12 +00:00
steve
4de8ba489d
Rewrite the cprop functor to use the functor_t interface.
1999-12-17 06:18:15 +00:00
steve
65ae92859c
NetConst can now hold wide constants.
1999-12-17 03:38:46 +00:00
steve
d54cc14ca2
Simulate carry output on adders.
1999-12-16 02:42:14 +00:00
steve
76655ce2bb
Allow memories without indices in expressions.
1999-12-12 06:03:14 +00:00
steve
4a6d3a5104
Fix const/non-const errors.
1999-12-09 06:00:00 +00:00
steve
09de918198
Generate XNF RAMS from synthesized memories.
1999-12-05 19:30:42 +00:00
steve
3e2bb85f58
Synthesize LPM_RAM_DQ for writes into memories.
1999-12-05 02:24:08 +00:00
steve
b30b695ff0
Redo synth to use match_proc_t scanner.
1999-12-01 06:06:16 +00:00
steve
e96e8c62be
NetESignal object no longer need to be NetNode
...
objects. Let them keep a pointer to NetNet objects.
1999-11-28 23:42:02 +00:00
steve
4cfa3e4047
Support the creation of scopes.
1999-11-27 19:07:57 +00:00
steve
26288eeeb4
Detect and list scope names.
1999-11-24 04:01:58 +00:00
steve
4cfa715092
Memory name lookup handles scopes.
1999-11-21 17:35:37 +00:00
steve
a81dcd7955
Support memories in continuous assignments.
1999-11-21 00:13:08 +00:00
steve
fae40cf380
handle duplicate connect to a nexus.
1999-11-19 05:02:37 +00:00
steve
8b81d6e416
Detect flip-flops connected to opads and turn
...
them into OUTFF devices. Inprove support for
the XNF-LCA attribute in the process.
1999-11-19 03:02:25 +00:00
steve
9d6392fda9
Turn NetTmp objects into normal local NetNet objects,
...
and add the nodangle functor to clean up the local
symbols generated by elaboration and other steps.
1999-11-18 03:52:19 +00:00
steve
513ade9b95
Support combinatorial comparators.
1999-11-14 23:43:45 +00:00
steve
1624afe1ba
Add support for the LPM_CLSHIFT device.
1999-11-14 20:24:28 +00:00
steve
2cce0ce238
Patch to synthesize LPM_ADD_SUB from expressions,
...
Thanks to Larry Doolittle. Also handle constants
in expressions.
Synthesize adders in XNF, based on a patch from
Larry. Accept synthesis of constants from Larry
as is.
1999-11-05 04:40:40 +00:00
steve
cb5fc54b5e
Patch to synthesize unary ~ and the ternary operator.
...
Thanks to Larry Doolittle <LRDoolittle@lbl.gov>.
Add the LPM_MUX device, and integrate it with the
ternary synthesis from Larry. Replace the lpm_mux
generator in t-xnf.cc to use XNF EQU devices to
put muxs into function units.
Rewrite elaborate_net for the PETernary class to
also use the LPM_MUX device.
1999-11-04 03:53:26 +00:00
steve
50e47c4173
Elaborate combinational UDP devices.
1999-11-04 01:12:41 +00:00
steve
b66e7b1713
Add the synthesize method to NetExpr to handle
...
synthesis of expressions, and use that method
to improve r-value handling of LPM_FF synthesis.
Modify the XNF target to handle LPM_FF objects.
1999-11-02 04:55:34 +00:00
steve
89881adece
Add the synth functor to do generic synthesis
...
and add the LPM_FF device to handle rows of
flip-flops.
1999-11-01 02:07:40 +00:00
steve
71ecf8c143
Add to netlist links pin name and instance number,
...
and arrange in vvm for pin connections by name
and instance number.
1999-10-31 04:11:27 +00:00
steve
19b8615363
Support evaluating + operator at compile time.
1999-10-10 23:29:37 +00:00